Propriétés de build
Les propriétés MSBuild contrôlent le comportement des cibles. Ils sont spécifiés dans le fichier projet, par exemple MyApp.csproj, dans un groupe de propriétés MSBuild.
AdbTarget
La $(AdbTarget)
propriété spécifie l’appareil cible Android sur lequel le package Android peut être installé ou supprimé.
La valeur de cette propriété est identique à l’option adb
Appareil cible.
AfterGenerateAndroidManifest
Les cibles MSBuild répertoriées dans cette propriété s’exécutent directement après la cible interne _GenerateJavaStubs
, qui est l’emplacement où le AndroidManifest.xml
fichier est généré dans le $(IntermediateOutputPath)
. Si vous souhaitez apporter des modifications au fichier généré AndroidManifest.xml
, vous pouvez le faire à l’aide de ce point d’extension.
AndroidAapt2CompileExtraArgs
Spécifie les options de ligne de commande à passer à la commande de compilation aapt2 lors du traitement des ressources et ressources Android.
AndroidAapt2LinkExtraArgs
Spécifie les options de ligne de commande à passer à la commande de lien aapt2 lors du traitement des ressources et ressources Android.
AndroidAddKeepAlives
Propriété booléenne qui contrôle si l’éditeur de liens insère GC.KeepAlive()
des appels dans des projets de liaison pour empêcher la collecte d’objets prématuré.
La valeur par défaut est True
pour les builds de configuration Release.
AndroidAotAdditionalArguments
Propriété de chaîne qui permet de transmettre des options au compilateur Mono pendant la tâche pour les projets dont l’une Aot
ou $(AotAssemblies)
l’autre est $(AndroidEnableProfiledAot)
définie true
sur .
La valeur de chaîne de la propriété est ajoutée au fichier réponse lors de l’appel du compilateur croisé Mono.
En règle générale, cette propriété doit être laissée vide, mais dans certains scénarios spéciaux, elle peut fournir une flexibilité utile.
La $(AndroidAotAdditionalArguments)
propriété est différente de la propriété associée $(AndroidExtraAotOptions)
; $(AndroidAotAdditionalArguments)
transmet des options --verbose
autonomes séparées par des espaces comme ou --debug
vers le compilateur AOT, tandis que $(AndroidExtraAotOptions)
contient des arguments séparés par des virgules qui font partie de l’option --aot
du compilateur AOT.
AndroidAotCustomProfilePath
Fichier qui aprofutil
doit être créé pour contenir les données du profileur.
AndroidAotProfiles
Propriété de chaîne qui permet au développeur d’ajouter des profils AOT à partir de la ligne de commande. Il s’agit d’une liste de chemins absolus séparés par des virgules ou des points-virgules.
AndroidAotProfilerPort
Port auquel aprofutil
se connecter lors de l’obtention des données de profilage.
AndroidAotEnableLazyLoad
Activez le chargement différé (différé) d’assemblys AOT-d, au lieu de les précharger au démarrage. La valeur par défaut est True
pour les builds Release avec n’importe quelle forme d’AOT activée.
Introduit dans .NET 6.
AndroidApkDigestAlgorithm
Valeur de chaîne qui spécifie l’algorithme digest à utiliser avec jarsigner -digestalg
.
La valeur par défaut est SHA-256
.
AndroidApkSignerAdditionalArguments
Propriété de chaîne qui permet au développeur de fournir des arguments à l’outil apksigner
.
AndroidApkSigningAlgorithm
Valeur de chaîne qui spécifie l’algorithme de signature à utiliser avec jarsigner -sigalg
.
La valeur par défaut est SHA256withRSA
.
AndroidApplication
Valeur booléenne qui indique si le projet est destiné à une application Android (True
) ou pour un projet de bibliothèque Android (False
ou non présent).
Un seul projet avec <AndroidApplication>True</AndroidApplication>
peut être présent dans un package Android. (Malheureusement, cette exigence n’est pas vérifiée, ce qui peut entraîner des erreurs subtiles et bizarres concernant les ressources Android.)
AndroidApplicationJavaClass
Nom complet de la classe Java à utiliser à la place d’une android.app.Application
classe qui hérite d’Android.App.Application.
La $(AndroidApplicationJavaClass)
propriété est généralement définie par d’autres propriétés, telles que la $(AndroidEnableMultiDex)
propriété MSBuild.
AndroidAvoidEmitForPerformance
Propriété booléenne qui détermine si elle est « évitée » ou non System.Reflection.Emit
pour améliorer les performances de démarrage. Cette propriété est définie par défaut sur True
.
L’utilisation a System.Reflection.Emit
un impact notable sur les performances de démarrage sur Android. Ce comportement est désactivé par défaut pour les commutateurs de fonctionnalités suivants :
Switch.System.Reflection.ForceInterpretedInvoke
: après le deuxième appel versMethodInfo.Invoke()
ouConstructorInfo.Invoke()
, le code est émis pour améliorer les performances des appels répétés.Microsoft.Extensions.DependencyInjection.DisableDynamicEngine
: après le deuxième appel pour récupérer un service à partir d’un conteneur d’injection de dépendances, le code est émis pour améliorer les performances des appels répétés.
Il est souhaitable dans la plupart des applications Android de désactiver ce comportement.
Consultez la documentation sur les commutateurs de fonctionnalités bibliothèques de classes de base pour plus d’informations sur les commutateurs de fonctionnalités disponibles.
Ajouté dans .NET 8.
AndroidBinUtilsPath
Chemin d’accès à un répertoire contenant les binutils Android tels que ld
, l’éditeur de liens natif et as
, l’assembleur natif. Ces outils sont inclus dans la charge de travail .NET pour Android.
La valeur par défaut est $(MonoAndroidBinDirectory)\binutils\bin\
.
AndroidBoundExceptionType
Valeur de chaîne qui spécifie comment les exceptions doivent être propagées lorsqu’un type .NET pour Android implémente un type ou une interface .NET en termes de types Java, par exemple Android.Runtime.InputStreamInvoker
et System.IO.Stream
, ou .Android.Runtime.JavaDictionary
System.Collections.IDictionary
Java
: le type d’exception Java d’origine est propagé tel qu’il est.Java
signifie que, par exemple,InputStreamInvoker
n’implémente pas correctement l’APISystem.IO.Stream
, carJava.IO.IOException
elle peut être levée à partir deStream.Read()
.System.IO.IOException
System
: le type d’exception Java d’origine est intercepté et encapsulé dans un type d’exception .NET approprié.System
signifie que, par exemple,InputStreamInvoker
implémenteSystem.IO.Stream
correctement etStream.Read()
ne lèveJava.IO.IOException
pas d’instances. (Il peut à la place lever uneSystem.IO.IOException
valeur contenant uneJava.IO.IOException
Exception.InnerException
valeur.)System
est la valeur par défaut.
AndroidBoundInterfacesContainConstants
Propriété booléenne qui détermine si les constantes de liaison sur les interfaces seront prises en charge, ou la solution de contournement de la création d’une IMyInterfaceConsts
classe sera utilisée.
La valeur par défaut est True
.
AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods
Propriété booléenne qui indique si les membres par défaut et statiques sur les interfaces sont pris en charge ou une ancienne solution de contournement de la création d’une classe frère contenant des membres statiques comme abstract class MyInterface
.
La valeur par défaut est True
dans .NET 6 et False
pour l’héritage.
AndroidBoundInterfacesContainTypes
Propriété booléenne qui indique si les types imbriqués dans les interfaces sont pris en charge ou la solution de contournement de la création d’un type non imbriqué comme IMyInterfaceMyNestedClass
.
La valeur par défaut est True
dans .NET 6 et False
pour l’héritage.
AndroidBuildApplicationPackage
Valeur booléenne qui indique s’il faut créer et signer le package (.apk). La définition de cette valeur True
équivaut à l’utilisation de la SignAndroidPackage
cible de build.
Cette propriété est définie par défaut sur False
.
AndroidBundleConfigurationFile
Spécifie un nom de fichier à utiliser comme fichier de configuration pour bundletool
la création d’un bundle d’applications Android. Ce fichier contrôle certains aspects de la façon dont les API sont générées à partir de l’offre groupée, telles que les dimensions que le bundle est fractionnée pour produire des API.
.NET pour Android configure automatiquement certains de ces paramètres, y compris la liste des extensions de fichier à laisser non compressées.
Cette propriété n’est pertinente que si $(AndroidPackageFormat)
elle est définie sur aab
.
AndroidBundleToolExtraArgs
Spécifie les options de ligne de commande à passer à la commande bundletool lors de la génération d’ensembles d’applications.
AndroidClassParser
Propriété de chaîne qui contrôle la façon dont .jar
les fichiers sont analysés. Valeurs possibles :
class-parse : utilise
class-parse.exe
pour analyser le bytecode Java directement, sans l’aide d’une machine virtuelle Java.jar2xml : cette valeur est obsolète et n’est plus prise en charge.
AndroidCodegenTarget
Propriété de chaîne qui contrôle l’ABI cible de génération de code. Valeurs possibles :
XamarinAndroid : cette valeur est obsolète et n’est plus prise en charge.
XAJavaInterop1 : utilise Java.Interop pour les appels JNI. La liaison des assemblys avec
XAJavaInterop1
peut être générée et s’exécuter seulement avec Xamarin.Android 6.1 ou ultérieur. Xamarin.Android 6.1 et ultérieur effectue la liaison deMono.Android.dll
avec cette valeur.
La valeur par défaut est XAJavaInterop1
.
AndroidCreatePackagePerAbi
Propriété booléenne qui détermine si un ensemble de fichiers- un par ABI spécifié dans $(AndroidSupportedAbis)
--doit être créé au lieu d’avoir la prise en charge de toutes les API dans un seul .apk
.
Consultez également le guide des API spécifiques à l’ABI.
AndroidCreateProguardMappingFile
Propriété booléenne qui contrôle si un fichier de mappage proguard est généré dans le cadre du processus de génération.
L’ajout des éléments suivants à votre csproj entraîne la génération du fichier et utilise la AndroidProguardMappingFile
propriété pour contrôler l’emplacement du fichier de mappage final.
<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>
Lors de la production .aab
de fichiers, le fichier de mappage est automatiquement inclus dans votre package. Il n’est pas nécessaire de le charger manuellement dans le Google Play Store. Lorsque vous utilisez .apk
des fichiers, vous AndroidProguardMappingFile
devez le charger manuellement.
La valeur par défaut est True
lors de l’utilisation $(AndroidLinkTool)
de =r8.
AndroidDebugKeyAlgorithm
Spécifie l’algorithme par défaut à utiliser pour le debug.keystore
. La valeur par défaut est RSA
.
AndroidDebugKeyValidity
Spécifie la validité par défaut à utiliser pour le debug.keystore
. La valeur par défaut est 10950
ou 30 years
30 * 365
.
AndroidDebugStoreType
Spécifie le format de fichier de magasin de clés à utiliser pour le debug.keystore
fichier . Sa valeur par défaut est pkcs12
.
AndroidDeviceUserId
Permet de déployer et de déboguer l’application sous des comptes invités ou professionnels. La valeur est la uid
valeur que vous obtenez à partir de la commande adb suivante :
adb shell pm list users
La commande ci-dessus retourne les données suivantes :
Users:
UserInfo{0:Owner:c13} running
UserInfo{10:Guest:404}
Il uid
s’agit de la première valeur entière. Dans la sortie ci-dessus, ils sont 0
et 10
.
AndroidDexTool
Propriété de style énumération avec des valeurs valides de dx
ou d8
. Indique le compilateur dex Android utilisé pendant le processus de génération .NET pour Android.
La valeur par défaut est dx
. Consultez notre documentation sur D8 et R8.
AndroidEnableDesugar
Propriété booléenne qui détermine si desugar
elle est activée. Android ne prend actuellement pas en charge toutes les fonctionnalités Java 8, et la chaîne d’outils par défaut implémente les nouvelles fonctionnalités de langage en effectuant des transformations bytecode appelées desugar
, sur la sortie du javac
compilateur. La valeur par défaut est si elle est utilisée et si elle est utilisée=$(AndroidDexTool)
d8
.True
$(AndroidDexTool)=dx
False
AndroidEnableGooglePlayStoreChecks
Propriété bool qui permet aux développeurs de désactiver les vérifications de Google Play Store suivantes : XA1004, XA1005 et XA1006. La désactivation de ces vérifications est utile pour les développeurs qui ne ciblent pas google Play Store et ne souhaitent pas exécuter ces vérifications.
AndroidEnableMarshalMethods
Propriété bool qui détermine si les méthodes de marshaling LLVM sont activées ou non.
Les méthodes de marshaling LLVM sont une optimisation de démarrage d’application qui utilise des points d’entrée natifs pour l’inscription de méthode Java native
.
Cette propriété a la valeur False par défaut.
Ajouté dans .NET 8.
AndroidEnableMultiDex
Propriété booléenne qui détermine si la prise en charge multi-dex sera utilisée dans la version finale .apk
.
Cette propriété est définie par défaut sur False
.
AndroidEnableObsoleteOverrideInheritance
Propriété booléenne qui détermine si les méthodes liées héritent [Obsolete]
automatiquement des attributs des méthodes qu’elles remplacent.
La prise en charge de cette propriété a été ajoutée dans .NET 8.
Cette propriété est définie par défaut sur True
.
AndroidEnablePreloadAssemblies
Propriété booléenne qui contrôle si tous les assemblys managés regroupés dans le package d’application sont chargés pendant le démarrage du processus ou non.
Avec la valeur True
, tous les assemblys fournis dans le package d’application seront chargés lors du démarrage du processus, avant l’appel de tout code d’application.
Avec la valeur False
, les assemblys seront uniquement chargés selon les besoins.
Le chargement d’assemblys en fonction des besoins permet aux applications de lancer plus rapidement et est également plus cohérent avec la sémantique .NET de bureau.
Pour visualiser le gain de temps obtenu, définissez la propriété système debug.mono.log
pour inclure timing
, puis recherchez le message Finished loading assemblies: preloaded
dans adb logcat
.
Les applications ou bibliothèques, qui utilisent l’injection de dépendances peuvent nécessiter que cette propriété soit True
si elle exige à son tour que AppDomain.CurrentDomain.GetAssemblies()
tous les assemblys au sein de l’ensemble d’applications, même si l’assembly n’aurait pas été nécessaire.
Par défaut, cette valeur est False.
AndroidEnableProfiledAot
Propriété booléenne qui détermine si les profils AOT sont utilisés ou non pendant la compilation à l’avance.
Les profils sont répertoriés dans @(AndroidAotProfile)
groupe d’éléments. Ce groupe d’éléments contient le ou les profils par défaut. Il peut être substitué en supprimant le ou les fichiers existants et en ajoutant vos propres profils AOT.
Cette propriété est définie par défaut sur False
.
AndroidEnableRestrictToAttributes
Propriété de style énumération avec des valeurs valides de obsolete
et disable
.
Lorsqu’il est défini obsolete
sur , les types et les membres marqués avec l’annotation androidx.annotation.RestrictTo
Java ou qui se trouvent dans des packages Java non exportés sont marqués avec un [Obsolete]
attribut dans la liaison C#.
Cet [Obsolete]
attribut a un message descriptif expliquant que le propriétaire du package Java considère que l’API est « interne » et avertit de son utilisation.
Cet attribut a également un code XAOBS001
d’avertissement personnalisé afin qu’il puisse être supprimé indépendamment de l’API obsolète « normale ».
Lorsque la valeur est définie disable
, l’API est générée normalement sans attributs supplémentaires. (Il s’agit du même comportement que avant .NET 8.)
L’ajout d’attributs [Obsolete]
au lieu de supprimer automatiquement l’API a été effectué pour préserver la compatibilité des API avec les packages existants. Si vous préférez plutôt supprimer des membres qui ont l’annotation @RestrictTo
ou qui se trouvent dans des packages Java non exportés, vous pouvez utiliser les fichiers Transform en plus de cette propriété pour empêcher ces types d’être liés :
<remove-node path="//*[@annotated-visibility]" />
La prise en charge de cette propriété a été ajoutée dans .NET 8.
Cette propriété est définie obsolete
par défaut.
AndroidEnableSGenConcurrent
Propriété booléenne qui détermine si le collecteur GC simultané de Mono sera utilisé ou non.
Cette propriété est définie par défaut sur False
.
AndroidErrorOnCustomJavaObject
Propriété booléenne qui détermine si les types peuvent être implémentés sans hériter ou Java.Lang.Throwable
Java.Lang.Object
: Android.Runtime.IJavaObject
class BadType : IJavaObject {
public IntPtr Handle {
get {return IntPtr.Zero;}
}
public void Dispose()
{
}
}
Lorsque la valeur est True, ces types génèrent une erreur XA4212, sinon un avertissement XA4212 est généré.
Cette propriété est définie par défaut sur True
.
AndroidExplicitCrunch
Cette propriété n’est plus prise en charge.
AndroidExtraAotOptions
Propriété de chaîne qui permet de transmettre des options au compilateur Mono pendant la tâche pour les projets dont l’une Aot
ou $(AotAssemblies)
l’autre est $(AndroidEnableProfiledAot)
définie true
sur .
La valeur de chaîne de la propriété est ajoutée au fichier réponse lors de l’appel du compilateur croisé Mono.
En règle générale, cette propriété doit être laissée vide, mais dans certains scénarios spéciaux, elle peut fournir une flexibilité utile.
La $(AndroidExtraAotOptions)
propriété est différente de la propriété associée $(AndroidAotAdditionalArguments)
; $(AndroidAotAdditionalArguments)
place les arguments séparés par des virgules dans l’option --aot
du compilateur Mono. $(AndroidExtraAotOptions)
Au lieu de cela, passe des options --verbose
autonomes séparées par des espaces comme ou --debug
au compilateur.
AndroidFastDeploymentType
Liste :
(deux-points) séparée par des valeurs pour contrôler les types pouvant être déployés dans le répertoire Déploiement rapide sur l’appareil cible lorsque la $(EmbedAssembliesIntoApk)
propriété MSBuild est False
. Si une ressource est déployée via le déploiement rapide, elle n’est pas incorporée dans le fichier .apk
généré, ce qui peut accélérer les temps de déploiement. (Plus le déploiement rapide est rapide, puis le moins fréquemment le .apk
besoin d’être reconstruit, et le processus d’installation peut être plus rapide.) Les valeurs valides sont les suivantes :
Assemblies
: déployer les assemblys de l’application.Dexes
: Déployer des.dex
fichiers, des bibliothèques natives et des typesmaps. LaDexes
valeur ne peut être utilisée que sur les appareils exécutant Android 4.4 ou version ultérieure (API-19).
La valeur par défaut est Assemblies
.
Prise en charge des ressources et ressources de déploiement rapide via ce système a été supprimée dans la validation f0d565fe. Cela était dû au fait qu’il fallait utiliser les API dépréciées pour fonctionner.
Experimental.
AndroidFragmentType
Spécifie le type complet par défaut à utiliser pour tous les éléments de disposition <fragment>
pendant la génération du code des liaisons de disposition. La valeur par défaut est le type Android Android.App.Fragment
standard.
AndroidGenerateJniMarshalMethods
Propriété bool qui permet de générer des méthodes de marshalage JNI dans le cadre du processus de génération. Cela réduit considérablement l’utilisation System.Reflection
dans le code d’assistance de liaison.
La valeur par défaut est False
. Si les développeurs souhaitent utiliser la nouvelle fonctionnalité de marshalage JNI, ils peuvent définir
<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>
dans leur .csproj
. Vous pouvez également fournir la propriété sur la ligne de commande via
-p:AndroidGenerateJniMarshalMethods=True
Experimental. La valeur par défaut est False
.
AndroidGenerateJniMarshalMethodsAdditionalArguments
Propriété de chaîne qui peut être utilisée pour ajouter des paramètres à l’appel et est utile pour le jnimarshalmethod-gen.exe
débogage, de sorte que les options telles que -v
, -d
ou --keeptemp
peuvent être utilisées.
La valeur par défaut est une chaîne vide. Il peut être défini dans le .csproj
fichier ou sur la ligne de commande. Par exemple :
<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>
ou :
-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"
AndroidGenerateLayoutBindings
Active la génération de code-behind de disposition si elle est définie true
ou désactive complètement si elle est définie false
sur .
La valeur par défaut est false
.
AndroidGenerateResourceDesigner
La valeur par défaut est true
. Lorsqu’il false
est défini sur , désactive la génération de Resource.designer.cs
.
AndroidHttpClientHandlerType
Contrôle l’implémentation par défaut System.Net.Http.HttpMessageHandler
qui sera utilisée par le System.Net.Http.HttpClient
constructeur par défaut. Sa valeur est un nom de type qualifié d’assembly d’une sous-classe HttpMessageHandler
, utilisable avec System.Type.GetType(string)
.
Dans .NET 6 et versions ultérieures, cette propriété a effet uniquement lorsqu’elle est utilisée avec $(UseNativeHttpHandler)=true
.
Les valeurs les plus couramment utilisées pour cette propriété sont :
Xamarin.Android.Net.AndroidMessageHandler
: utilisez les API Java Android pour effectuer des requêtes HTTP. Il est similaire à l’héritageXamarin.Android.Net.AndroidClientHandler
avec plusieurs améliorations. Il prend en charge HTTP 1.1 et TLS 1.2. Il s’agit du gestionnaire de messages HTTP par défaut.System.Net.Http.SocketsHttpHandler, System.Net.Http
: gestionnaire de messages par défaut dans .NET. Il prend en charge HTTP/2, TLS 1.2 et il s’agit du gestionnaire de messages HTTP recommandé à utiliser avec Grpc.Net.Client. Cette valeur est équivalente à$(UseNativeHttpHandler)=false
.Annuler l’ensemble/la chaîne vide, qui est équivalente à
System.Net.Http.HttpClientHandler, System.Net.Http
Correspond à l’option Par défaut dans les pages de propriétés Visual Studio.
L’Assistant Nouveau projet sélectionne cette option pour les nouveaux projets lorsque la Version minimale d’Android est configurée sur Android 4.4.87 ou antérieur dans Visual Studio, ou lorsque Plateformes cibles est défini sur Développement moderne ou Compatibilité maximale dans Visual Studio pour Mac.
System.Net.Http.HttpClientHandler, System.Net.Http
: Utiliser le managéHttpMessageHandler
.Correspond à l’option Managée dans les pages de propriétés Visual Studio.
Remarque
Dans .NET 6, le type que vous spécifiez ne doit pas être Xamarin.Android.Net.AndroidClientHandler
ou System.Net.Http.HttpClientHandler
hériter de l’une de ces classes. Si vous migrez à partir de « classic » Xamarin.Android, utilisez AndroidMessageHandler
ou dérivez votre gestionnaire personnalisé à partir de celui-ci à la place.
Remarque
La prise en charge de la $(AndroidHttpClientHandlerType)
propriété fonctionne en définissant la variable d’environnementXA_HTTP_CLIENT_HANDLER_TYPE
.
Valeur $XA_HTTP_CLIENT_HANDLER_TYPE
trouvée dans un fichier avec une action build de @(AndroidEnvironment)
est prioritaire.
AndroidIncludeWrapSh
Valeur booléenne qui indique si le script wrapper Android (wrap.sh
) doit être empaqueté dans l’APK. La valeur par défaut est false
que le script wrapper peut influencer considérablement la façon dont l’application démarre et fonctionne et que le script doit être inclus uniquement si nécessaire, par exemple lors du débogage ou de la modification du comportement de démarrage/exécution de l’application.
Le script est ajouté au projet à l’aide du @(AndroidNativeLibrary)
action de génération, car elle est placée dans le même répertoire que les bibliothèques natives spécifiques à l’architecture et doit être nommée wrap.sh
.
Le moyen le plus simple de spécifier le chemin d’accès au wrap.sh
script consiste à le placer dans un répertoire nommé après l’architecture cible. Cette approche fonctionne si vous n’avez qu’une wrap.sh
seule architecture :
<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />
Toutefois, si votre projet a besoin de plus d’un wrap.sh
par architecture, à des fins différentes, cette approche ne fonctionnera pas.
Au lieu de cela, dans ce cas, le nom peut être spécifié à l’aide des Link
métadonnées du AndroidNativeLibrary
:
<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
<Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>
Si les Link
métadonnées sont utilisées, le chemin spécifié dans sa valeur doit être un chemin de bibliothèque spécifique à l’architecture native valide, par rapport au répertoire racine APK. Le format du chemin d’accès peut lib\ARCH\wrap.sh
ARCH
être l’un des suivants :
arm64-v8a
armeabi-v7a
x86_64
x86
AndroidIncludeAssetPacksInPackage
Cette propriété contrôle si une build Asset Packs est automatiquement incluse dans le fichier final .aab
. La valeur par défaut true
est .
Dans certains cas, l’utilisateur peut vouloir libérer une version intermédiaire. Dans ces cas, l’utilisateur n’a pas besoin de mettre à jour le pack d’éléments multimédias. En particulier si le contenu du pack d’éléments multimédias n’a pas changé. Cette propriété permet à l’utilisateur d’ignorer les packs d’éléments multimédias s’ils ne sont pas requis.
Ajouté dans .NET 9
AndroidInstallJavaDependencies
La valeur par défaut est true
pour les builds de ligne de commande. Quand la valeur est définie true
, active l’installation du Kit de développement logiciel (SDK) Java lors de l’exécution de la <InstallAndroidDependencies/>
cible.
La prise en charge de cette propriété a été ajoutée dans .NET 9.
AndroidJavadocVerbosity
Spécifie comment les commentaires de documentation XML C# « détaillé » doivent être lors de l’importation de la documentation Javadoc dans des projets de liaison.
Nécessite l’utilisation du @(JavaSourceJar)
action de génération.
La $(AndroidJavadocVerbosity)
propriété est enum-like, avec des valeurs possibles de full
ou intellisense
:
intellisense
: émettre uniquement les commentaires XML :<exception/>
,<param/>
,<returns/>
,<summary/>
.full
: Émettreintellisense
des éléments, ainsi que<remarks/>
,<seealso/>
et tout autre élément qui peut être pris en charge.
La valeur par défaut est intellisense
.
AndroidKeyStore
Valeur booléenne qui indique si les informations de signature personnalisées doivent être utilisées. La valeur par défaut est False
, qui signifie que la clé de signature de débogage par défaut est utilisée pour signer les packages.
AndroidLaunchActivity
Activité Android à lancer.
AndroidLinkMode
Spécifie le type de liaison à effectuer sur les assemblys contenus dans le package Android. Utilisé seulement dans les projets d’application Android. La valeur par défaut est SdkOnly. Les valeurs autorisées sont :
None : aucune liaison n’est tentée.
SdkOnly : la liaison est effectuée seulement sur les bibliothèques de classes de base, pas sur les assemblys de l’utilisateur.
Full : la liaison est effectuée seulement sur les bibliothèques de classes de base et sur les assemblys de l’utilisateur.
Remarque
L’utilisation de la valeur Full pour
AndroidLinkMode
aboutit généralement à des applications endommagées, en particulier quand la réflexion est utilisée. À éviter, sauf si vous savez vraiment ce que vous faites.
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
AndroidLinkResources
Quand true
, le système de génération lie les types imbriqués de la classe Resource.Designer.cs Resource
dans tous les assemblys. Le code IL qui utilise ces types sera mis à jour pour utiliser les valeurs directement plutôt que d’accéder aux champs.
La liaison des types imbriqués peut avoir un faible impact sur la réduction de la taille de l’apk et peut également vous aider à améliorer les performances de démarrage. Seules les builds « Release » sont liées.
Experimental. Conçu uniquement pour fonctionner avec du code tel que
var view = FindViewById(Resources.Ids.foo);
Tous les autres scénarios (tels que la réflexion) ne seront pas pris en charge.
AndroidLinkSkip
Spécifie une liste délimitée par des points-virgules (;
) de noms d’assemblys, sans extensions de fichier, d’assemblys qui ne doivent pas être liés. Utilisé seulement dans les projets d’application Android.
<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>
AndroidLinkTool
Propriété de style énumération avec des valeurs valides de proguard
ou r8
. Indique le réducteur de code utilisé pour le code Java. La valeur par défaut est une chaîne vide, ou proguard
si c’est le cas $(AndroidEnableProguard)
True
. Consultez notre documentation sur D8 et R8.
AndroidLintEnabled
Propriété bool qui permet au développeur d’exécuter l’outil Android lint
dans le cadre du processus d’empaquetage.
Quand $(AndroidLintEnabled)
=True, les propriétés suivantes sont utilisées :
Les actions de génération suivantes peuvent également être utilisées :
Consultez l’aide de Lint pour plus d’informations sur l’outil lint
android.
AndroidLintEnabledIssues
Propriété de chaîne qui est une liste séparée par des virgules de problèmes de lint à activer.
Utilisé uniquement lorsque $(AndroidLintEnabled)
=True.
AndroidLintDisabledIssues
Propriété de chaîne qui est une liste séparée par des virgules de problèmes de lint à désactiver.
Utilisé uniquement lorsque $(AndroidLintEnabled)
=True.
AndroidLintCheckIssues
Propriété de chaîne qui est une liste séparée par des virgules de problèmes de lint à vérifier.
Utilisé uniquement lorsque $(AndroidLintEnabled)
=True.
Remarque : Seuls ces problèmes sont vérifiés.
AndroidManagedSymbols
Propriété booléenne qui contrôle si les points de séquence sont générés afin que les informations de nom de fichier et de numéro de ligne puissent être extraites des traces de Release
pile.
AndroidManifest
Spécifie un nom de fichier à utiliser comme modèle pour l’application AndroidManifest.xml
.
Lors de la génération, toutes les autres valeurs nécessaires y sont fusionnées pour produire le fichier AndroidManifest.xml
effectif.
$(AndroidManifest)
doit contenir le nom du package dans l’attribut /manifest/@package
.
AndroidManifestMerger
Spécifie l’implémentation de la fusion de fichiers AndroidManifest.xml . Il s’agit d’une propriété enum-style où legacy
sélectionne l’implémentation C# d’origine et manifestmerger.jar
sélectionne l’implémentation Java de Google.
La valeur par défaut est actuellement manifestmerger.jar
. Si vous souhaitez utiliser l’ancienne version, ajoutez ce qui suit à votre csproj
<AndroidManifestMerger>legacy</AndroidManifestMerger>
La fusion de Google permet la prise en charge comme xmlns:tools="http://schemas.android.com/tools"
décrit dans la documentation Android.
AndroidManifestMergerExtraArgs
Propriété de chaîne pour fournir des arguments à l’outil de documentation Android.
Si vous souhaitez obtenir une sortie détaillée de l’outil, vous pouvez ajouter ce qui suit au .csproj
fichier .
<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>
AndroidManifestType
Propriété de style énumération avec des valeurs valides de Xamarin
ou GoogleV2
.
Ce contrôle le référentiel utilisé par le InstallAndroidDependencies
cible pour déterminer quels packages Et versions de package Android sont disponibles et peuvent être installés.
Xamarin
est le référentiel de liste approuvée (recommandé) dans le Gestionnaire du kit de développement logiciel (SDK) Visual Studio.
GoogleV2
est le référentiel Liste complète (non pris en charge) dans le Gestionnaire du Kit de développement logiciel (SDK) Visual Studio.
Si $(AndroidManifestType)
ce n’est pas défini, Xamarin
il est utilisé.
AndroidManifestPlaceholders
Liste séparée par des points-virgules de paires de remplacement clé-valeur pour AndroidManifest.xml, où chaque paire a le format key=value
.
Par exemple, une valeur de propriété de assemblyName=$(AssemblyName)
définit un ${assemblyName}
espace réservé qui peut ensuite apparaître dans AndroidManifest.xml :
<application android:label="${assemblyName}"
Cela permet d’insérer des variables à partir du processus de génération dans le fichier AndroidManifest.xml .
AndroidMultiDexClassListExtraArgs
Propriété de chaîne qui permet aux développeurs de passer des arguments au moment de générer com.android.multidex.MainDexListBuilder
le multidex.keep
fichier.
Un cas spécifique est si vous obtenez l’erreur suivante durant la compilation dx
.
com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded
Si vous obtenez cette erreur, vous pouvez ajouter les éléments suivants au .csproj
fichier .
<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>
qui permettra à l’étape dx
de réussir.
AndroidPackageFormat
Propriété de style énumération avec des valeurs valides de apk
ou aab
. Indique si vous souhaitez empaqueter l’application Android en tant que fichier APK ou Android App Bundle. Les bundles d’applications sont un nouveau format pour les builds Release
destinées à être envoyées à Google Play. La valeur par défaut est apk
.
Lorsque $(AndroidPackageFormat)
est défini sur aab
, d’autres propriétés MSBuild sont définies. Celles-ci sont nécessaires pour les bundles d’applications Android :
$(AndroidUseAapt2)
estTrue
.$(AndroidUseApkSigner)
estFalse
.$(AndroidCreatePackagePerAbi)
estFalse
.
Cette propriété sera déconseillée pour .net 6. Les utilisateurs doivent passer au plus récent AndroidPackageFormats
.
AndroidPackageFormats
Propriété délimitée par des points-virgules avec des valeurs valides de apk
et aab
.
Indique si vous souhaitez empaqueter l’application Android en tant que fichier APK ou Android App Bundle. Les bundles d’applications sont un nouveau format pour les builds Release
destinées à être envoyées à Google Play.
Lors de la génération d’une version Release, vous pouvez générer à la fois et aab
une apk
distribution vers différents magasins.
La définition AndroidPackageFormats
à aab;apk
laquelle générera les deux. Le paramètre AndroidPackageFormats
sur l’une aab
ou apk
l’autre génère un seul fichier.
La valeur par défaut concerne aab;apk
Release
uniquement les builds.
Il est recommandé de continuer à utiliser uniquement apk
pour le débogage.
AndroidPackageNamingPolicy
Propriété enum-style permettant de spécifier les noms de package Java du code source Java généré.
La seule valeur possible est LowercaseCrc64
.
AndroidProguardMappingFile
Spécifie la -printmapping
règle proguard pour r8
. Cela signifie que le mapping.txt
fichier sera généré dans le $(OutputPath)
dossier. Ce fichier peut ensuite être utilisé lors du chargement de packages dans le Google Play Store.
Par défaut, ce fichier est généré automatiquement lors de l’utilisation AndroidLinkTool=r8
et génère le fichier $(OutputPath)mapping.txt
suivant.
Si vous ne souhaitez pas générer ce fichier de mappage, vous pouvez utiliser la propriété pour arrêter de AndroidCreateProguardMappingFile
la créer.
Ajoutez ce qui suit dans votre projet
<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>
ou utiliser -p:AndroidCreateProguardMappingFile=False
sur la ligne de commande.
AndroidD8IgnoreWarnings
Spécifie --map-diagnostics warning info
à passer à d8
. La valeur par défaut est True
, mais peut être définie pour False
appliquer un comportement plus strict. Pour plus d’informations, consultez le code source D8 et R8.
Ajouté dans .NET 8.
AndroidR8IgnoreWarnings
Spécifie la -ignorewarnings
règle proguard pour r8
. Cela permet r8
de poursuivre la compilation de dex même si certains avertissements sont rencontrés. La valeur par défaut est True
, mais peut être définie pour False
appliquer un comportement plus strict. Pour plus d’informations, consultez le manuel ProGuard.
À compter de .NET 8, spécifie --map-diagnostics warning info
. Pour plus d’informations, consultez le code source D8 et R8.
AndroidR8JarPath
Chemin d’accès à r8.jar
utiliser avec le compilateur et le réducteur r8. La valeur par défaut est un chemin d’accès à l’installation de la charge de travail .NET pour Android. Pour plus d’informations, consultez notre documentation sur D8 et R8.
AndroidResgenExtraArgs
Spécifie les options de ligne de commande à passer à la commande aapt lors du traitement des ressources et ressources Android.
AndroidResgenFile
Spécifie le nom du fichier de ressources à générer. Le modèle par défaut définit cette valeur sur Resource.designer.cs
.
AndroidSdkBuildToolsVersion
Le package d’outils de build android SDK fournit les outils aapt et zipalign , entre autres. Plusieurs versions différentes du package d’outils de génération peuvent être installées en parallèle. Le package d’outils de génération choisi pour l’empaquetage est réalisé en recherchant et en utilisant, le cas échéant, une version « favorite » des outils de génération ; s’il n’en existe pas, le package d’outils de génération associé à la version la plus récente sera utilisé.
La propriété MSBuild $(AndroidSdkBuildToolsVersion)
contient la version préférée des outils de génération. Le système de génération .NET pour Android fournit une valeur Xamarin.Android.Common.targets
par défaut, et la valeur par défaut peut être remplacée dans votre fichier projet pour choisir une autre version des outils de build, si (par exemple) le dernier aapt se bloque pendant qu’une version aapt précédente est connue pour fonctionner.
AndroidSigningKeyAlias
Spécifie l’alias de la clé dans le magasin de clés. Il s’agit de la valeur keytool -alias utilisée lors de la création du magasin de clés.
AndroidSigningKeyPass
Spécifie le mot de passe de la clé dans le fichier de magasin de clés. C’est la valeur entrée quand keytool
demande Entrez le mot clé pour $(AndroidSigningKeyAlias).
Cette propriété prend également en charge les préfixes env:
et file:
qui peuvent être utilisés pour spécifier une variable d’environnement ou un fichier qui contient le mot de passe.
Ces options permettent d’empêcher l’affichage du mot de passe dans les journaux de génération.
Par exemple, pour utiliser une variable d’environnement nommée AndroidSigningPassword :
<PropertyGroup>
<AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>
Pour utiliser un fichier situé à l’adresse C:\Users\user1\AndroidSigningPassword.txt
suivante :
<PropertyGroup>
<AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>
Remarque
Le env:
préfixe n’est pas pris en charge lorsqu’il $(AndroidPackageFormat)
est défini sur aab
.
AndroidSigningKeyStore
Spécifie le nom de fichier du magasin de clés créé par keytool
. Ceci correspond à la valeur fournie pour l’option keytool -keystore.
AndroidSigningStorePass
Spécifie le mot de passe à $(AndroidSigningKeyStore)
.
C’est la valeur fournie à keytool
lors de la création du fichier de magasin de clés et demandée avec Entrez le mot de passe du magasin de clés :.
Cette propriété prend également en charge les préfixes env:
et file:
qui peuvent être utilisés pour spécifier une variable d’environnement ou un fichier qui contient le mot de passe. Ces options permettent d’empêcher l’affichage du mot de passe dans les journaux de génération.
Par exemple, pour utiliser une variable d’environnement nommée AndroidSigningPassword :
<PropertyGroup>
<AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>
Pour utiliser un fichier situé à l’adresse C:\Users\user1\AndroidSigningPassword.txt
suivante :
<PropertyGroup>
<AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>
Remarque
Le env:
préfixe n’est pas pris en charge lorsqu’il $(AndroidPackageFormat)
est défini sur aab
.
AndroidSigningPlatformKey
Spécifie le fichier de clé à utiliser pour signer l’apk.
Cela est utilisé uniquement lors de la création system
d’applications.
AndroidSigningPlatformCert
Spécifie le fichier de certificat à utiliser pour signer l’apk.
Cela est utilisé uniquement lors de la création system
d’applications.
AndroidStripILAfterAOT
Propriété bool qui spécifie si les corps de méthode des méthodes compilées AOT seront supprimés.
La valeur par défaut est false
, et les corps de méthode des méthodes compilées AOT ne seront pas supprimés.
Lorsqu’il est défini true
sur , $(AndroidEnableProfiledAot)
est défini false
par défaut.
Cela signifie que dans les builds de configuration Release , dans lesquelles $(RunAOTCompilation)
est true
par défaut , AOT est activé pour tout.
Cela peut entraîner une augmentation des tailles d’application. Ce comportement peut être substitué en définissant $(AndroidEnableProfiledAot)
true
explicitement la valeur dans votre fichier projet.
La prise en charge de cette propriété a été ajoutée dans .NET 8.
AndroidSupportedAbis
Propriété de chaîne qui contient une liste délimitée par des points-virgules (;
)-délimitées par des ABIs qui doivent être incluses dans le .apk
.
Les valeurs prises en charge sont :
armeabi-v7a
x86
arm64-v8a
x86_64
AndroidTlsProvider
Cette propriété est obsolète et ne doit pas être utilisée.
AndroidUseAapt2
Propriété booléenne qui permet au développeur de contrôler l’utilisation de l’outil pour l’empaquetage aapt2
.
Par défaut, cette valeur est True.
Cette propriété ne peut pas être définie sur false.
AndroidUseApkSigner
Propriété bool qui permet au développeur d’utiliser l’outil apksigner
plutôt que jarsigner
.
AndroidUseDefaultAotProfile
Propriété bool qui permet au développeur de supprimer l’utilisation des profils AOT par défaut.
Pour supprimer les profils AOT par défaut, définissez la propriété sur false
.
AndroidUseDesignerAssembly
Propriété bool qui contrôle si le système de génération génère un _Microsoft.Android.Resource.Designer.dll
objet apposed dans un Resource.Designer.cs
fichier. Les avantages de cette opération sont des applications plus petites et une durée de démarrage plus rapide.
La valeur par défaut est true
dans .NET 8.
En tant qu’auteur Nuget, il est recommandé d’expédier trois versions de l’assembly si vous souhaitez maintenir la compatibilité descendante.
Un pour MonoAndroid, un pour net6.0-android et un pour net8.0-android. Pour ce faire, utilisez Xamarin.Legacy.Sdk. Cela n’est nécessaire que si votre projet de bibliothèque Nuget utilise des AndroidResource
éléments dans le projet ou via une dépendance.
<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>
Vous pouvez également désactiver ce paramètre jusqu’à ce que l’heure de l’application Classic et net7.0-android ait été déconseillée.
Les projets .NET 8 qui choisissent de désactiver ce paramètre ne pourront pas consommer de références qui l’utilisent. Si vous essayez d’utiliser un assembly sur lequel cette fonctionnalité est activée dans un projet qui ne le fait pas, vous obtiendrez une XA1034
erreur de génération.
Ajouté dans .NET 8.
AndroidUseInterpreter
Propriété booléenne qui provoque le .apk
conteneur de l’interpréteur mono, et non le JIT normal.
Experimental.
AndroidUseLegacyVersionCode
Propriété booléenne qui permet au développeur de rétablir le calcul versionCode à son ancien comportement pré Xamarin.Android 8.2. Elle est RÉSERVÉE aux développeurs possédant des applications dans Google Play Store. Il est fortement recommandé d’utiliser la nouvelle propriété $(AndroidVersionCodePattern)
.
AndroidUseManagedDesignTimeResourceGenerator
Propriété booléenne qui basculera au fil du temps de conception pour utiliser l’analyseur de ressources managée plutôt que aapt
.
AndroidUseNegotiateAuthentication
Propriété booléenne qui permet la prise en charge de l’authentification NTLMv2/Negotiate dans AndroidMessageHandler
. La valeur par défaut est Faux.
Ajouté dans .NET 7.
AndroidUseSharedRuntime
Cette propriété est obsolète et ne doit pas être utilisée.
AndroidVersionCode
Propriété MSBuild qui peut être utilisée comme alternative au /manifest/@android:versionCode
AndroidManifest.xml
fichier. Pour choisir cette fonctionnalité, vous devez également activer <GenerateApplicationManifest>true</GenerateApplicationManifest>
.
Il s’agit de la valeur par défaut de .NET 6.
Cette propriété est ignorée si $(AndroidCreatePackagePerAbi)
et $(AndroidVersionCodePattern)
sont utilisées.
@android:versionCode
est une valeur entière qui doit être incrémentée pour chaque version de Google Play. Consultez la documentation Android pour plus d’informations sur la configuration requise pour /manifest/@android:versionCode
.
AndroidVersionCodePattern
Propriété de chaîne qui permet au développeur de personnaliser le versionCode
manifeste.
Consultez Création de code de version pour APK pour plus d’informations sur le choix d’un versionCode
.
Voici des exemples : si abi
est armeabi
et si versionCode
dans le manifeste est 123
, {abi}{versionCode}
produit un code de version 1123
quand $(AndroidCreatePackagePerAbi)
a la valeur True ; sinon il produit la valeur 123.
Si abi
est x86_64
et versionCode
dans le manifeste est 44
. Ceci produit 544
quand $(AndroidCreatePackagePerAbi)
est True ; sinon, il produit la valeur 44
.
Si nous incluons une chaîne avec remplissage à gauche {abi}{versionCode:0000}
, ceci produit 50044
, car nous remplissons le versionCode
à gauche avec 0
. Vous pouvez également utiliser le remplissage décimal tel que {abi}{versionCode:D4}
qui fait la même chose que l’exemple précédent.
Seules les chaînes avec le format de remplissage « 0 » et « Dx » sont prises en charge, car la valeur DOIT être un entier.
Éléments clés prédéfinis
abi : insère l’abi ciblé pour l’application
- 2 –
armeabi-v7a
- 3 –
x86
- 4 –
arm64-v8a
- 5 –
x86_64
- 2 –
minSDK : insère la valeur minimale prise en charge du Kit de développement logiciel (SDK) prise en charge à partir du
AndroidManifest.xml
ou11
si aucune valeur n’est définie.versionCode : utilise le code de version directement à partir de
Properties\AndroidManifest.xml
.
Vous pouvez définir des éléments personnalisés en utilisant la propriété $(AndroidVersionCodeProperties)
(définie ensuite).
La valeur par défaut est {abi}{versionCode:D6}
. Si un développeur souhaite conserver l’ancien comportement, vous pouvez la remplacer en définissant la propriété $(AndroidUseLegacyVersionCode)
sur true
.
AndroidVersionCodeProperties
Propriété de chaîne qui permet au développeur de définir des éléments personnalisés à utiliser avec le $(AndroidVersionCodePattern)
.
Ils sont sous la forme d’une paire key=value
. Tous les éléments dans value
doivent être des valeurs entières. Par exemple : screen=23;target=$(_AndroidApiLevel)
. Vous constatez que vous pouvez utiliser des propriétés MSBuild existantes ou personnalisées dans la chaîne.
ApplicationId
Propriété MSBuild qui peut être utilisée comme alternative au /manifest/@package
AndroidManifest.xml
fichier. Pour choisir cette fonctionnalité, vous devez également activer <GenerateApplicationManifest>true</GenerateApplicationManifest>
.
Il s’agit de la valeur par défaut de .NET 6.
Consultez la documentation Android pour plus d’informations sur la configuration requise pour /manifest/@package
.
ApplicationTitle
Propriété MSBuild qui peut être utilisée comme alternative au /manifest/application/@android:label
AndroidManifest.xml
fichier. Pour choisir cette fonctionnalité, vous devez également activer <GenerateApplicationManifest>true</GenerateApplicationManifest>
.
Il s’agit de la valeur par défaut de .NET 6.
Consultez la documentation Android pour plus d’informations sur la configuration requise pour /manifest/application/@android:label
.
ApplicationVersion
Propriété MSBuild qui peut être utilisée comme alternative au /manifest/@android:versionName
AndroidManifest.xml
fichier. Pour choisir cette fonctionnalité, vous devez également activer <GenerateApplicationManifest>true</GenerateApplicationManifest>
.
Il s’agit de la valeur par défaut de .NET 6.
Consultez la documentation Android pour plus d’informations sur la configuration requise pour /manifest/@android:versionName
.
AotAssemblies
Propriété booléenne qui détermine si les assemblys seront compilés à l’avance dans le code natif et inclus dans les applications.
Cette propriété est définie par défaut sur False
.
Déconseillé dans .NET 7. Migrez vers la nouvelle $(RunAOTCompilation)
propriété MSBuild à la place, car la prise en charge $(AotAssemblies)
sera supprimée dans une prochaine version.
AProfUtilExtraOptions
Options supplémentaires à passer à aprofutil
.
BeforeBuildAndroidAssetPacks
Les cibles MSBuild répertoriées dans cette propriété s’exécutent directement avant la génération des AssetPack
éléments.
Ajouté dans .NET 9
BeforeGenerateAndroidManifest
Les cibles MSBuild répertoriées dans cette propriété s’exécutent directement avant _GenerateJavaStubs
.
Configuration
Spécifie la configuration de build à utiliser, telle que « Déboguer » ou « Release ». La propriété Configuration est utilisée pour déterminer les valeurs par défaut pour d’autres propriétés qui déterminent le comportement de la cible. Vous pouvez créer des configurations supplémentaires dans votre IDE.
Par défaut, la Debug
configuration entraîne la Install
etSignAndroidPackage
cible la création d’un package Android plus petit qui nécessite la présence d’autres fichiers et packages pour fonctionner.
La configuration par défaut Release
entraîne la Install
etSignAndroidPackage
cible la création d’un package Android autonome et peut être utilisée sans installer d’autres packages ou fichiers.
DebugSymbols
Valeur booléenne qui détermine si le package Android est débogueur, en combinaison avec la $(DebugType)
propriété.
Un package débogueur contient des symboles de débogage, définit l’attribut //application/@android:debuggable
true
sur et ajoute automatiquement leINTERNET
autorisation pour qu’un débogueur puisse s’attacher au processus. Une application est débogueur si DebugSymbols
elle est True
et DebugType
est la chaîne vide ou Full
.
DebugType
Spécifie le type de symboles de débogage à générer dans le cadre de la build, ce qui affecte également si l’application est débogueable. Valeurs possibles :
Full : des symboles complets sont générés. Si le
DebugSymbols
La propriété MSBuild est égalementTrue
, puis le package d’application est débogueur.PdbOnly: les symboles « PDB » sont générés. Le package d’application n’est pas débogueur.
Si DebugType
n’est pas défini ou est une chaîne vide, la propriété DebugSymbols
contrôle si l’application est ou non débogable.
EmbedAssembliesIntoApk
Propriété booléenne qui détermine si les assemblys de l’application doivent être incorporés ou non dans le package d’application.
Cette propriété doit être définie sur True
pour les versions Release, et sur False
pour les projets Debug. Sa valeur doit être True
dans les versions Debug si le déploiement rapide ne prend pas en charge l’appareil cible.
Lorsque cette propriété est False
, alors le $(AndroidFastDeploymentType)
La propriété MSBuild contrôle également ce qui sera incorporé dans le , ce qui peut avoir un impact sur les .apk
temps de déploiement et de reconstruction.
EnableLLVM
Propriété booléenne qui détermine si LLVM sera utilisée ou non lors de la compilation anticipée des assemblys dans du code natif.
Le kit de développement logiciel (NDK) Android doit être installé pour générer un projet sur lequel cette propriété est activée.
Cette propriété est définie par défaut sur False
.
Cette propriété est ignorée sauf si la propriété MSBuild $(AotAssemblies)
est définie sur True
.
EnableProguard
Propriété booléenne qui détermine si proguard est exécuté dans le cadre du processus d’empaquetage pour lier du code Java.
Cette propriété est définie par défaut sur False
.
Lorsque True
, les fichiers @(ProguardConfiguration) sont utilisés pour contrôler proguard
l’exécution.
GenerateApplicationManifest
Active ou désactive les propriétés MSBuild suivantes qui émettent des valeurs dans le fichier final AndroidManifest.xml
:
La valeur $(GenerateApplicationManifest)
par défaut est true
.
JavaMaximumHeapSize
Spécifie la valeur du paramètre Java-Xmx
à utiliser lors de la génération du .dex
fichier dans le cadre du processus d’empaquetage. Si non spécifié, l’option -Xmx
fournit java avec la valeur 1G
. Ceci est couramment requis sur Windows par rapport à d’autres plateformes.
La spécification de cette propriété est nécessaire si la cible _CompileDex
lève une erreur java.lang.OutOfMemoryError
.
Personnalisez la valeur en changeant :
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
JavaOptions
Spécifie les options de ligne de commande à passer à java lors de la génération du .dex
fichier.
JarsignerTimestampAuthorityCertificateAlias
Cette propriété vous permet de spécifier un alias dans le magasin de clés pour une autorité d’horodatage. Pour plus d’informations, consultez la documentation de prise en charge de l’horodatage de signature Java.
<PropertyGroup>
<JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>
JarsignerTimestampAuthorityUrl
Cette propriété vous permet de spécifier une URL vers un service d’autorité d’horodatage. Cela peut être utilisé pour vous assurer que votre .apk
signature inclut un horodatage.
Pour plus d’informations, consultez la documentation de prise en charge de l’horodatage de signature Java.
<PropertyGroup>
<JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>
LinkerDumpDependencies
Propriété bool qui permet de générer un fichier de dépendances de l’éditeur de liens. Ce fichier peut être utilisé en tant qu’entrée pour l’outil illinkanalyzer.
Le fichier de dépendances nommé linker-dependencies.xml.gz
est écrit dans le répertoire du projet. Sur. NET5/6 est écrit en regard des assemblys liés dans obj/<Configuration>/android<ABI>/linked
le répertoire.
La valeur par défaut est Faux.
MandroidI18n
Spécifie la prise en charge de l’internationalisation incluse dans l’application, comme le classement et le tri des tables. La valeur est une liste (délimitée par des virgules ou des points-virgules) d’une ou plusieurs des valeurs suivantes, qui ne respectent pas la casse :
None : n’inclure aucun encodage supplémentaire.
All : inclure tous les encodages disponibles.
CJK : Inclure des encodages chinois, japonais et coréens tels que japonais (EUC) [enc-jp, CP51932], japonais (Shift-JIS) [iso-2022-jp, shift_jis, CP932], japonais (JIS) [CP50220], chinois simplifié (GB2312) [gb2312, CP936], Coréen (UHC) [ks_c_5601-1987, CP949], Coréen (EUC) [euc-kr, CP51949], Chinois traditionnel (Big5) [big5, CP950] et Chinois simplifié (GB18030) [GB18030, CP54936].
MidEast : Inclure des encodages moyen-orientaux tels que turc (Windows) [iso-8859-9, CP1254], hébreu (Windows) [windows-1255, CP1255], arabe (Windows) [windows-1256, CP1256], arabe (ISO) [iso-8859-6, CP28596], hébreu (ISO) [iso-8859-8, CP28598], latin 5 (ISO) [iso-8859-9, CP28599] et hébreu (alternative Iso) [iso-8859-8, CP38598].
Autre : Inclure d’autres encodages tels que Cyrillique (Windows) [CP1251], Baltique (Windows) [iso-8859-4, CP1257], Vietnamien (Windows) [CP1258], Cyrillique (KOI8-R) [koi8-r, CP1251], Ukrainien (KOI8-U) [koi8-u, CP1251], Baltique (ISO) [iso-8859-4, CP1257], Cyrillique (ISO) [iso-8859-5, CP1251], ISCII Davenagari [x-iscii-de, CP57002], ISCII Bengali [x-iscii-be, CP57003], ISCII Tamil [x-iscii-ta, CP57004], ISCII Telugu [x-iscii-te, CP57005], ISCII Assamese [x-iscii-as, CP57006], ISCII Oriya [x-iscii-or, ou, CP57007], ISCII Kannada [x-iscii-ka, CP57008], ISCII Malayalam [x-iscii-ma, CP57009], ISCII Gujarati [x-iscii-gu, CP57010], ISCII Punjabi [x-iscii-pa, CP57011] et Thaï (Windows) [CP874].
Rare : Inclure des encodages rares tels qu’IBM EBCDIC (turc) [CP1026], IBM EBCDIC (Open Systems Latin 1) [CP1047], IBM EBCDIC (US-Canada avec Euro) [CP1140], IBM EBCDIC (Allemagne avec Euro) [CP1141], IBM EBCDIC (Danemark/Norvège avec Euro) [CP1142], IBM EBCDIC (Finlande/Suède avec Euro) [CP1143], IBM EBCDIC (Italie avec Euro) [CP1144], IBM EBCDIC (Amérique latine/Espagne avec Euro) [CP1145], IBM EBCDIC (Royaume-Uni avec Euro) [CP1146], IBM EBCDIC (France avec Euro) [CP1147], IBM EBCDIC (International with Euro) [CP1148], IBM EBCDIC (Islandais avec Euro) [CP1149], IBM EBCDIC (Allemagne) [CP20273], IBM EBCDIC (Danemark/Norvège) [CP20277], IBM EBCDIC (Finlande/Suède) [CP20278], IBM EBCDIC (Italie) [CP20280], IBM EBCDIC (Amérique latine/Espagne) [CP20284], IBM EBCDIC (Royaume-Uni) [CP20285], IBM EBCDIC (Japonais Katakana Extended) [CP20290], IBM EBCDIC (France) [CP20297], IBM EBCDIC (Arabe) [CP20420], IBM EBCDIC (hébreu) [CP20424], IBM EBCDIC (Islande) [CP20871], IBM EBCDIC (Cyrillique - Serbe, Bulgare) [CP21025], IBM EBCDIC (US-Canada) [CP37], IBM EBCDIC (International) [CP500], Arabe (ASMO 708) [CP708], Europe centrale (DOS) [CP852], Cyrillique (DOS) [CP855], Turc (DOS) [CP857], Europe occidentale (DOS avec Euro) [CP858], Hébreu (DOS) [CP862], Arabe (DOS) [CP88] [CP864], Russe (DOS) [CP866], Grec (DOS) [CP869], IBM EBCDIC (Latin 2) [CP870] et IBM EBCDIC (Grec) [CP875].
Ouest : inclure des encodages occidentaux tels que l’Europe occidentale (Mac) [macintosh, CP10000], Islandais (Mac) [x-mac-islandais, CP10079], Europe centrale (Windows) [iso-8859-2, CP1250], Europe occidentale (Windows) [iso-8859-1, CP1252], Grec (Windows) [iso-8859-7, CP1253], Europe centrale (ISO) [iso-8859-2, CP28592], Latin 3 (ISO) [iso-8859-3, CP28593], Grec (ISO) [iso-8859-7, CP28597], Latin 9 (ISO) [iso-8859-15, CP28605], OEM États-Unis [CP437], Western European (DOS) [CP850], Portugais (DOS) [CP860], Islandais (DOS) [CP861], Français Canadien (DOS) [CP863] et Nordique (DOS) [CP865].
<MandroidI18n>West</MandroidI18n>
MonoAndroidResourcePrefix
Spécifie un préfixe de chemin d’accès supprimé du début des noms de fichiers avec une action build de AndroidResource
. Ceci permet de changer l’emplacement où se trouvent les ressources.
La valeur par défaut est Resources
. Changez ceci en res
pour la structure de projet Java.
MonoSymbolArchive
Propriété booléenne qui contrôle si .mSYM
les artefacts sont créés pour une utilisation ultérieure avec mono-symbolicate
, afin d’extraire les informations de nom de fichier et de numéro de ligne « réels » des traces de la pile Release.
Cette valeur est True par défaut pour les applications « Release » qui ont activé les symboles de débogage : $(EmbedAssembliesIntoApk)
a la valeur True, $(DebugSymbols)
a la valeur True, et $(Optimize)
est Vrai.
RunAOTCompilation
Propriété booléenne qui détermine si les assemblys seront compilés à l’avance dans le code natif et inclus dans les applications.
Cette propriété est False
par défaut pour les Debug
builds et True
par défaut pour les Release
builds.
Cette propriété MSBuild remplace la $(AotAssemblies)
propriété MSBuild de Xamarin.Android. Il s’agit de la même propriété utilisée pour Blazor WASM.