É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 :
- Projets de bibliothèque d’applications et de classes :
foo.jar
mappe à AndroidJavaLibrary.bar.aar
mappe à AndroidAarLibrary.
- Projets de liaison Java :
foo.jar
mappe à EmbeddedJar.foo.jar
mappe à EmbeddedReferenceJar siBind="false"
des métadonnées sont ajoutées.bar.aar
mappe à LibraryProjectZip.
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 :
- « Détection » du chemin.
- 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
.