Éléments de génération

Les éléments de build contrôlent la façon dont un projet de bibliothèque ou d’application Xamarin.Android est généré.

AndroidAsset

Prend en charge les ressources Android, les fichiers qui seraient inclus dans le assets dossier d’un projet Android Java.

AndroidAarLibrary

L’action Générer de AndroidAarLibrary doit être utilisée pour référencer .aar directement des fichiers. Elle est le plus souvent utilisée par les composants Xamarin, À savoir inclure des références à .aar des fichiers qui sont nécessaires pour que Google Play et d’autres services fonctionnent.

Les fichiers avec cette action Générer seront traités de la même manière que les ressources incorporées trouvées dans les projets de bibliothèque. Le .aar sera extrait dans le répertoire intermédiaire. Ensuite, les ressources, les ressources et .jar les fichiers seront inclus dans les groupes d’éléments appropriés.

AndroidAotProfile

Utilisé pour fournir un profil AOT, à utiliser avec AOT guidé par profil.

Vous pouvez également l’utiliser à partir de Visual Studio en définissant l’action AndroidAotProfile de génération sur un fichier contenant un profil AOT.

AndroidAppBundleMetaDataFile

Spécifie un fichier qui sera inclus en tant que métadonnées dans le bundle d’applications Android. Le format de la valeur de l’indicateur est <bundle-path>:<physical-file> l’emplacement bundle-path du fichier dans le répertoire de métadonnées de l’ensemble d’applications et physical-file un fichier existant contenant les données brutes à stocker.

<ItemGroup>
  <AndroidAppBundleMetaDataFile
    Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
  />
</ItemGroup>

Pour plus d’informations, consultez la documentation bundletool .

Ajouté dans Xamarin.Android 12.3.

AndroidBoundLayout

Indique que du code-behind doit être généré pour le fichier de disposition si la propriété AndroidGenerateLayoutBindings est définie sur false. Concernant tous les autres aspects, cette action est identique à l’action AndroidResource décrite ci-dessus. Cette action peut être utilisée uniquement avec les fichiers de disposition :

<AndroidBoundLayout Include="Resources\layout\Main.axml" />

AndroidEnvironment

Les fichiers avec une action de génération AndroidEnvironment sont utilisés pour initialiser des variables d’environnement et des propriétés système lors du démarrage du processus. L’action de génération AndroidEnvironment peut être appliquée à plusieurs fichiers : dans ce cas, ils sont évalués sans suivre un ordre particulier (ne spécifiez donc pas la même variable d’environnement ou la même propriété système dans plusieurs fichiers).

AndroidJavaLibrary

Les fichiers avec l’action Générer de AndroidJavaLibrary sont des archives Java ( .jar fichiers) qui seront inclus dans le package Android final.

AndroidJavaSource

Les fichiers avec l’action Générer de sont du AndroidJavaSource code source Java qui sera inclus dans le package Android final.

À compter de .NET 7, tous les **\*.java fichiers du répertoire du projet ont automatiquement une action Générer de AndroidJavaSource, et sont liés avant la build Assembly. Permet au code C# d’utiliser facilement les types et les membres présents dans les **\*.java fichiers.

Définissez sur %(AndroidJavaSource.Bind) False pour désactiver ce comportement.

AndroidLibrary

AndroidLibrary est une nouvelle action de build qui simplifie l’inclusion .jar des fichiers et .aar dans les projets.

N’importe quel projet peut spécifier :

<ItemGroup>
  <AndroidLibrary Include="foo.jar" />
  <AndroidLibrary Include="bar.aar" />
</ItemGroup>

Le résultat de l’extrait de code ci-dessus a un effet différent pour chaque type de projet Xamarin.Android :

Cette simplification signifie que vous pouvez utiliser AndroidLibrary partout.

Cette action de génération a été ajoutée dans Xamarin.Android 11.2.

AndroidLintConfig

L’action de génération « AndroidLintConfig » doit être utilisée conjointement avec lePropriété $(AndroidLintEnabled). Les fichiers avec cette action de génération sont fusionnés et passés à l’outil lint android. Il doit s’agir de fichiers XML contenant des informations sur les tests à activer et désactiver.

Consultez la documentation lint pour plus d’informations.

AndroidManifestOverlay

L’action AndroidManifestOverlay de génération peut être utilisée pour fournir des AndroidManifest.xml fichiers à l’outil Manifest Merger . Les fichiers avec cette action de génération sont passés à la fusion de manifeste, ainsi que les fichiers main AndroidManifest.xml et manifeste à partir de références. Celles-ci seront ensuite fusionnées dans le manifeste final.

Vous pouvez utiliser cette action de génération pour fournir des modifications et des paramètres à votre application en fonction de votre configuration de build. Par exemple, si vous devez disposer d’une autorisation spécifique uniquement pendant le débogage, vous pouvez utiliser la superposition pour injecter cette autorisation lors du débogage. Par exemple, étant donné le contenu du fichier de superposition suivant :

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-permission android:name="android.permission.CAMERA" />
</manifest>

Vous pouvez utiliser ce qui suit pour ajouter une superposition de manifeste pour une build de débogage :

<ItemGroup>
  <AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>

Cette action de génération a été introduite dans Xamarin.Android 11.2.

AndroidInstallModules

Spécifie les modules qui sont installés par la commande bundletool lors de l’installation d’ensembles d’applications.

Cette action de génération a été introduite dans Xamarin.Android 11.3.

AndroidNativeLibrary

Les bibliothèques natives sont ajoutées à la build en définissant leur action de génération sur AndroidNativeLibrary.

Notez que, étant donné qu’Android prend en charge plusieurs interfaces binaires d’application (ABIs), le système de génération doit connaître l’ABI pour lequel la bibliothèque native est créée. Il existe deux façons de spécifier l’ABI :

  1. « Détection » du chemin.
  2. Utilisation des métadonnées de l’élément %(Abi) .

Avec la détection de chemin, le nom du répertoire parent de la bibliothèque native est utilisé pour spécifier l’ABI ciblée par la bibliothèque. Ainsi, si vous ajoutez lib/armeabi-v7a/libfoo.so à la build, l’ABI sera « détectée » en tant que armeabi-v7a.

Nom d’attribut d’élément

Abi : spécifie l’ABI de la bibliothèque native.

<ItemGroup>
  <AndroidNativeLibrary Include="path/to/libfoo.so">
    <Abi>armeabi-v7a</Abi>
  </AndroidNativeLibrary>
</ItemGroup>

AndroidResource

Tous les fichiers avec une action de génération AndroidResource sont compilés en ressources Android pendant le processus de génération et rendus accessible via $(AndroidResgenFile).

<ItemGroup>
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>

Les utilisateurs plus expérimentés souhaitent éventuellement avoir des ressources différentes utilisées dans des configurations différentes, mais avec le même chemin effectif. Il faut pour cela avoir plusieurs répertoires de ressources et des fichiers avec les mêmes chemins relatifs au sein de ces différents répertoires, et utiliser des conditions MSBuild pour inclure de façon conditionnelle des fichiers différents dans les différentes configurations. Par exemple :

<ItemGroup Condition="'$(Configuration)'!='Debug'">
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
<ItemGroup  Condition="'$(Configuration)'=='Debug'">
  <AndroidResource Include="Resources-Debug\values\strings.xml"/>
</ItemGroup>
<PropertyGroup>
  <MonoAndroidResourcePrefix>Resources;Resources-Debug</MonoAndroidResourcePrefix>
</PropertyGroup>

LogicalName : spécifie explicitement le chemin de la ressource. Autorise les fichiers d’alias afin qu’ils soient disponibles sous la forme de plusieurs noms de ressources distincts.

<ItemGroup Condition="'$(Configuration)'!='Debug'">
  <AndroidResource Include="Resources/values/strings.xml"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
  <AndroidResource Include="Resources-Debug/values/strings.xml">
    <LogicalName>values/strings.xml</LogicalName>
  </AndroidResource>
</ItemGroup>

AndroidResourceAnalysisConfig

L’action AndroidResourceAnalysisConfig Générer marque un fichier en tant que fichier de configuration de niveau de gravité pour l’outil de disposition diagnostics android Designer Xamarin. Il est actuellement utilisé uniquement dans l’éditeur de disposition et non pour les messages de build.

Pour plus d’informations, consultez la documentation Analyse des ressources Android .

Ajouté dans Xamarin.Android 10.2.

Contenu

L’action de génération Content normale n’est pas prise en charge (comme nous n’avons pas trouvé comment la prendre en charge sans une étape de première exécution éventuellement coûteuse en ressources).

À compter de Xamarin.Android 5.1, une tentative d’utilisation de l’action de génération @(Content) produit un avertissement XA0101.

EmbeddedJar

Dans un projet de liaison Xamarin.Android, l’action de build EmbeddedJar lie la bibliothèque Java/Kotlin et incorpore le .jar fichier dans la bibliothèque. Lorsqu’un projet d’application Xamarin.Android utilise la bibliothèque, il a accès aux API Java/Kotlin à partir de C# et inclut le code Java/Kotlin dans l’application Android finale.

Depuis Xamarin.Android 11.2, vous pouvez utiliser l’action de génération AndroidLibrary comme alternative, par exemple :

<Project>
  <ItemGroup>
    <AndroidLibrary Include="Library.jar" />
  </ItemGroup>
</Project>

EmbeddedNativeLibrary

Dans une bibliothèque de classes Xamarin.Android ou un projet de liaison Java, l’action de build EmbeddedNativeLibrary regroupe une bibliothèque native, lib/armeabi-v7a/libfoo.so par exemple, dans la bibliothèque. Lorsqu’une application Xamarin.Android utilise la bibliothèque, le libfoo.so fichier est inclus dans l’application Android finale.

Depuis Xamarin.Android 11.2, vous pouvez utiliser l’action de génération AndroidNativeLibrary comme alternative.

EmbeddedReferenceJar

Dans un projet de liaison Xamarin.Android, l’action de build EmbeddedReferenceJar incorpore le .jar fichier dans la bibliothèque, mais ne crée pas de liaison C# comme EmbeddedJar . Lorsqu’un projet d’application Xamarin.Android consomme la bibliothèque, il inclut le code Java/Kotlin dans l’application Android finale.

Depuis Xamarin.Android 11.2, vous pouvez utiliser l’action de génération AndroidLibrary comme alternative, par <AndroidLibrary Include="..." Bind="false" />exemple :

<Project>
  <ItemGroup>
    <!-- A .jar file to bind & embed -->
    <AndroidLibrary Include="Library.jar" />
    <!-- A .jar file to only embed -->
    <AndroidLibrary Include="Dependency.jar" Bind="false" />
  </ItemGroup>
</Project>

JavaDocJar

Dans un projet de liaison Xamarin.Android, l’action de génération JavaDocJar est utilisée sur les .jar fichiers qui contiennent du code HTML Javadoc. Le code HTML Javadoc est analysé afin d’extraire les noms de paramètres.

Seuls certains « dialectes HTML Javadoc » sont pris en charge, notamment :

  • Sortie JDK 1.7 javadoc .
  • Sortie JDK 1.8 javadoc .
  • Sortie Droiddoc.

Cette action de génération est déconseillée dans Xamarin.Android 11.3 et ne sera pas prise en charge dans .NET 6. L’action @(JavaSourceJar) de génération est recommandée.

JavaSourceJar

Dans un projet de liaison Xamarin.Android, l’action de génération JavaSourceJar est utilisée sur les .jar fichiers qui contiennent du code source Java, qui contiennent des commentaires de documentation Javadoc.

Avant Xamarin.Android 11.3, javadoc était converti en HTML via l’utilitaire au moment de la javadoc génération, puis transformé en documentation XML.

À partir de Xamarin.Android 11.3, Javadoc sera converti en commentaires de documentation XML C# dans le code source de liaison généré.

$(AndroidJavadocVerbosity) contrôle la façon dont le Javadoc importé est « détaillé » ou « complet ».

À compter de Xamarin.Android 11.3, les métadonnées MSBuild suivantes sont prises en charge :

  • %(CopyrightFile): chemin d’accès à un fichier qui contient des informations de copyright pour le contenu Javadoc, qui sera ajouté à toute la documentation importée.

  • %(UrlPrefix): préfixe d’URL pour prendre en charge la liaison à la documentation en ligne dans la documentation importée.

  • %(UrlStyle): « style » des URL à générer lors de la liaison à la documentation en ligne. Un seul style est actuellement pris en charge : developer.android.com/reference@2020-Nov.

À partir de Xamarin.Android 12.3, les métadonnées MSBuild suivantes sont prises en charge :

  • %(DocRootUrl): préfixe d’URL à utiliser à la place de toutes les instances {@docroot} dans la documentation importée.

LibraryProjectZip

Dans un projet de liaison Xamarin.Android, l’action de build LibraryProjectZip lie la bibliothèque Java/Kotlin et incorpore le .zip fichier ou .aar dans la bibliothèque. Lorsqu’un projet d’application Xamarin.Android consomme la bibliothèque, il a accès aux API Java/Kotlin à partir de C# et inclut le code Java/Kotlin dans l’application Android finale.

Notes

Un seul libraryProjectZip peut être inclus dans un projet de liaison Xamarin.Android. Cette limitation sera supprimée dans .NET 6.

LinkDescription

Des fichiers avec une action de génération LinkDescription sont utilisés pour contrôler le comportement de l’éditeur de liens.

ProguardConfiguration

Les fichiers avec une action de génération ProguardConfiguration contiennent des options qui permettent de contrôler le comportement de proguard. Pour plus d’informations sur cette action de génération, consultez ProGuard.

Ces fichiers sont ignorés, sauf si$(EnableProguard) La propriété MSBuild est True.