Configuration de la signature de code Android dans App Center
Important
Visual Studio App Center est prévu pour la mise hors service le 31 mars 2025. Bien que vous puissiez continuer à utiliser Visual Studio App Center jusqu’à ce qu’il soit entièrement mis hors service, il existe plusieurs alternatives recommandées que vous pouvez envisager de migrer vers.
En savoir plus sur les chronologies de support et les alternatives.
Conseil
Pour les utilisateurs Xamarin.Android, le processus est légèrement différent. Pour plus d’informations, consultez notre guide de signature de code Xamarin.Android.
La signature d’une application est nécessaire pour exécuter une application sur des appareils réels pendant le processus de développement ou pour la distribuer via un programme bêta ou dans le Play Store. Sans signature de code, l’application ne peut s’exécuter que sur un émulateur.
Quand App Center génère une application Android avec un type de build de débogage, un magasin de clés pour un développeur n’est pas nécessaire, mais peut être chargé. Ces builds seront automatiquement signées avec une clé de débogage. Pour une build de mise en production qui sera déployée, chargez un magasin de clés dans App Center.
Génération d’un magasin de clés
Si vous n’avez pas de magasin de clés, vous pouvez en générer un dans Android Studio. Vous trouverez des instructions sur la génération d’un magasin de clés pour signer des API dans le Guide d’utilisateur officiel d’Android Studio.
Configuration de la signature de code
App Center prend en charge trois façons différentes de configurer la signature de code pour les applications Android. Pour les trois méthodes, vous devez d’abord accéder à la configuration de build et activer la signature de code :
- Accédez à votre application dans App Center.
- Accédez à Build.
- Accédez à la branche que vous souhaitez configurer en la choisissant dans la liste.
- Utilisez le menu « Paramètres » dans le coin supérieur droit ou choisissez Configurer si votre branche n’est pas encore configurée pour la génération.
- Activer les builds de sign.
- Choisissez Enregistrer.
Ensuite, selon votre scénario, utilisez les trois options les plus appropriées dans les sections ci-dessous. La première option implique la vérification des informations d’identification dans votre référentiel, tandis que les deux autres utilisent App Center pour gérer vos informations d’identification à la place.
À partir d’Android 11, il est obligatoire d’utiliser le signataire APK (si vous utilisez le niveau d’API 30), car il définit des schémas supplémentaires « APK Signature Scheme v2 now required ». App Center maintenant (depuis le 17c 2020) signe des applications Android à l’aide du signataire APK en interne, au lieu du signataire JAR utilisé précédemment. Dans le cadre de la fonctionnalité permettant d’activer le signataire APK dans App Center, la tâche de signature Android V3 a été implémentée et les exigences relatives à la nouvelle tâche de signature devaient changer la façon dont le fichier de magasin de clés est enregistré pour stocker le fichier de magasin de clés dans un fichier sécurisé AzDO (tâche de génération et de mise en production Android - Azure Pipelines | Microsoft Docs).
Avertissement
Toutes les configurations de build dont les fichiers de magasin de clés ont été chargés avant le 17c 2020 utilisent toujours la méthode de signature APK Signature Scheme v2 (jarsigner). Pour utiliser le flux de signature APK Signature Scheme v3, les utilisateurs doivent simplement recharger leurs fichiers de magasin de clés et enregistrer leur configuration de branche.
Remarque
L’utilisation du plug-in Android Gradle version 4.1.x n’est pas entièrement prise en charge. Pour utiliser cette version, vous devez ajouter le paramètre d’option suivant dans le gradle.properties
fichier :
android.useNewApkCreator = false
A. Stockage de tout dans la configuration Gradle
Vous pouvez spécifier les détails de signature dans le fichier (niveau de l’application build.gradle
). Les détails de signature, ainsi que toutes les informations d’identification et les informations de magasin de clés, sont visibles dans le référentiel. Tout d’abord, ajoutez tous les éléments dont vous avez besoin à votre code et vérifiez-les dans votre référentiel. Ensuite, dans la configuration de build dans App Center, activez les paramètres My Gradle entièrement définis pour gérer la signature automatiquement.
B. Chargement de tout dans App Center
Vous pouvez charger le magasin de clés et configurer les informations d’identification de signature via App Center. Dans ce cas, App Center génère d’abord votre application Android, puis exécute une étape de signature après la génération réussie.
Remarque
Une build ne peut être signée qu’une seule fois. Vérifiez que vous n’avez aucun conflit avec les configurations de connexion dans votre configuration Gradle pour la variante de build choisie. S’il existe des paramètres de signature dans App Center et dans le fichier Gradle, la build peut se terminer deux fois signée, ce qui entraîne des conflits.
Configurez votre configuration de build dans App Center comme suit :
- Les paramètres My Gradle sont entièrement définis pour gérer la signature automatiquement.
- Chargez votre fichier de magasin de clés dans la liste déroulante de chargement du fichier keystore. Vous pouvez faire glisser le fichier sur la zone ou cliquer dessus et rechercher le fichier. Les fichiers de magasin de clés ont l’extension
.keystore
ou.jks
. - Entrez le mot de passe du magasin de clés, l’alias de clé et le mot de passe de clé dans les champs correspondants. Ces valeurs sont les mêmes que celles que vous entrez dans Android Studio lorsque vous signez une build.
C. Stockage des détails de signature dans le référentiel avec des variables d’environnement
Utilisez cette méthode si votre référentiel contient déjà le magasin de clés, mais que vous ne souhaitez pas stocker les informations d’identification là-bas. Au moment de la génération, les informations d’identification sont fournies en tant que propriétés système à la build Gradle. Consultez l’exemple de code suivant pour savoir comment les utiliser :
android {
signingConfigs {
releaseSigningConfig {
storeFile rootProject.file("app/testapp.jks")
storePassword System.getProperty("APPCENTER_KEYSTORE_PASSWORD")
keyAlias System.getProperty("APPCENTER_KEY_ALIAS")
keyPassword System.getProperty("APPCENTER_KEY_PASSWORD")
}
}
buildTypes {
release {
signingConfig signingConfigs.releaseSigningConfig
}
}
}
Dans le code ci-dessus, la sécurisation des valeurs derrière les propriétés système injectées dans votre build conserve vos informations d’identification de signature sécurisées : les valeurs sont chiffrées et uniquement disponibles pour les agents de build au moment de la génération. Vous pouvez fournir les valeurs via App Center. Vous pouvez également coder en dur les valeurs et les archiver dans votre référentiel. Pour utiliser App Center pour protéger les valeurs :
- Accédez à votre configuration de build.
- Vérifiez que la case à cocher intitulée Mes paramètres Gradle est entièrement définie pour gérer la signature automatiquement qu’elle n’est pas cochée.
- Entrez le mot de passe du magasin de clés, l’alias de clé et le mot de passe de clé dans les champs correspondants. Ces valeurs sont les mêmes que celles que vous entrez dans Android Studio lorsque vous signez une build.
Si vous utilisez des versions de produit, vous devrez peut-être ajuster le code ci-dessus afin que toutes vos configurations de mise en production utilisent la configuration de signature correcte.
Remarque
Si vous utilisez l’option signingConfig
dans la buildTypes
section de votre fichier (niveau de l’application build.gradle
), vous pouvez rencontrer des erreurs de signature de code pendant la génération d’App Center. Cela est particulièrement pertinent pour les applications qui utilisent React Native pour Android version 0.60.x et ultérieure :
Execution failed for task ':app:validateSigningRelease'.
Keystore file '.../android/app/debug.keystore' not found for signing config 'debug'
Pour résoudre ce problème, vous devez envoyer (push) un magasin de clés approprié utilisé pour la signature vers votre référentiel et activer les paramètres My Gradle sont entièrement définis pour gérer la connexion automatiquement dans votre configuration de build dans le portail App Center.
Si vous avez chargé un magasin de clés dans la configuration de build dans le portail App Center, prenez en compte que cette approche devra supprimer l’option signingConfig
de la buildTypes
section de votre fichier (niveau de l’application build.gradle
) si vous ne l’avez pas mis à jour à partir de l’état par défaut du modèle de projet React Native.