Processus de génération

Le processus de génération de .NET pour Android est chargé de tout rassembler : génération de Resource.designer.cs, prise en charge de @(AndroidAsset), @(AndroidResource) et d’autres actions de génération, génération de wrappers appelables par Android et génération d’un fichier .apk pour l’exécution sur les appareils Android.

packages d’application

En termes généraux, il existe deux types de packages d’applications Android (.apk fichiers) que le système de génération .NET pour Android peut générer :

  • Des versions Release, qui sont entièrement autonomes et ne nécessitent pas de packages supplémentaires pour s’exécuter. Il s’agit des packages fournis à un App Store.

  • Des versions Debug, qui ne le sont pas.

Ces types de package correspondent à MSBuild Configuration qui produit le package.

Déploiement rapide

Le déploiement rapide fonctionne en réduisant davantage la taille du package d’application Android. Pour ce faire, excluez les assemblys de l’application du package et déployez plutôt les assemblys de l’application directement dans le répertoire interne files de l’application, généralement situé dans /data/data/com.some.package. Le répertoire interne files n’est pas un dossier accessible en écriture globale. L’outil run-as est donc utilisé pour exécuter toutes les commandes pour copier les fichiers dans ce répertoire.

Ce processus accélère le cycle de génération/déploiement/débogage, car le package n’est pas réinstallé lorsque seuls les assemblys sont modifiés. Seuls les assemblages mis à jour sont resynchronisés sur l’appareil cible.

Avertissement

Le déploiement rapide est connu pour échouer sur les appareils qui bloquent run-as, ce qui inclut souvent des appareils antérieurs à Android 5.0.

Le déploiement rapide est pris en charge pour les formats de package .apk et .aab. Elle est activée par défaut et peut être désactivée dans les builds de débogage en définissant la $(AndroidEnableFastDeployment) propriété sur False. Notez que l'utilisation de .aab avec un déploiement rapide sera plus lente que .apk car le fichier .aab doit être traité à travers bundletool pour l'empaquetage et l'installation.

Le mode Déploiement rapide amélioré peut être utilisé conjointement avec cette fonctionnalité pour accélérer encore davantage les déploiements. Cela déploie les deux assemblies, bibliothèques natives, typemaps et dexes dans le répertoire files. Toutefois, vous devez uniquement l’activer si vous modifiez des bibliothèques natives, des liaisons ou du code Java.

Projets MSBuild

Le processus de génération .NET pour Android est basé sur MSBuild, qui est également le format de fichier projet utilisé par Visual Studio pour Mac et Visual Studio. En règle générale, les utilisateurs n’auront pas besoin de modifier les fichiers MSBuild en main : l’IDE crée des projets entièrement fonctionnels et les met à jour avec les modifications apportées et appelle automatiquement des cibles de build en fonction des besoins.

Les utilisateurs avancés peuvent néanmoins souhaiter effectuer des opérations non prises en charge par l’interface graphique utilisateur de l’IDE : le processus de génération est donc personnalisable en modifiant le fichier projet directement. Cette page documente uniquement les fonctionnalités et personnalisations spécifiques à .NET pour Android. De nombreuses autres choses sont possibles avec les éléments, propriétés et cibles MSBuild normaux.

Liaison de projets

Les propriétés MSBuild suivantes sont utilisées avec les projets de liaison :

Resource.designer.cs Génération

Les propriétés MSBuild suivantes sont utilisées pour contrôler la génération du Resource.designer.cs fichier :

Propriétés de signature électronique

Les propriétés de signature contrôlent comment le package d’application est signé pour qu’il puisse être installé sur un appareil Android. Pour permettre une itération de build plus rapide, les tâches .NET pour Android ne signent pas les packages pendant le processus de génération, car la signature est assez lente. Au lieu de cela, les packages sont signés (si nécessaire) avant l’installation ou pendant l’exportation, par l’IDE ou par la cible de génération Install. Le fait d’appeler la cible SignAndroidPackage produit un package avec le suffixe -Signed.apk dans le répertoire de sortie.

Par défaut, la cible de signature génère si nécessaire une nouvelle clé de signature de débogage. Si vous souhaitez utiliser une clé spécifique, par exemple sur un serveur de build, les propriétés MSBuild suivantes sont utilisées :

keytool Mappage d’options

Considérez l’appel suivant keytool :

$ keytool -genkey -v -keystore filename.keystore -alias keystore.alias -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password: keystore.filename password
Re-enter new password: keystore.filename password
...
Is CN=... correct?
  [no]:  yes

Generating 2,048 bit RSA key pair and self-signed certificate (SHA1withRSA) with a validity of 10,000 days
        for: ...
Enter key password for keystore.alias
        (RETURN if same as keystore password): keystore.alias password
[Storing filename.keystore]

Pour utiliser le magasin de clés généré ci-dessus, utilisez le groupe de propriétés :

<PropertyGroup>
    <AndroidKeyStore>True</AndroidKeyStore>
    <AndroidSigningKeyStore>filename.keystore</AndroidSigningKeyStore>
    <AndroidSigningStorePass>keystore.filename password</AndroidSigningStorePass>
    <AndroidSigningKeyAlias>keystore.alias</AndroidSigningKeyAlias>
    <AndroidSigningKeyPass>keystore.alias password</AndroidSigningKeyPass>
</PropertyGroup>

Générer des points d’extension

Le système de build .NET pour Android expose quelques points d’extension publics pour les utilisateurs qui souhaitent se connecter à notre processus de génération. Pour utiliser l’un de ces points d’extension, vous devez ajouter votre cible personnalisée à la propriété MSBuild appropriée dans un PropertyGroup. Par exemple :

<PropertyGroup>
   <AfterGenerateAndroidManifest>
      $(AfterGenerateAndroidManifest);
      YourTarget;
   </AfterGenerateAndroidManifest>
</PropertyGroup>

Les points d’extension sont les suivants :

Un mot de prudence sur l’extension du processus de génération : s’il n’est pas écrit correctement, les extensions de build peuvent affecter vos performances de build, en particulier si elles s’exécutent sur chaque build. Il est vivement recommandé de lire la documentation MSBuild avant d’implémenter ces extensions.