Générer, tester et déployer des applications Android
Azure DevOps Services
Cette mise en route rapide vous montre comment configurer un pipeline YAML dans Azure Pipelines pour automatiquement construire, tester et déployer une application Android.
Prérequis
Une organisation et un projet Azure DevOps où vous avez la permission de créer des pipelines et de déployer des applications. Pour créer un projet, veuillez consulter la section Créer un projet dans Azure DevOps.
Un compte GitHub.
Important
Lors des procédures GitHub, il se peut que vous soyez invité à créer une connexion de service GitHub ou redirigé vers GitHub pour vous connecter, installer Azure Pipelines, autoriser Azure Pipelines ou vous authentifier auprès des organisations GitHub. Suivez les instructions à l’écran pour compléter le processus. Pour plus d’informations, veuillez consulter la section Accès aux référentiels GitHub.
Créer et exécuter le pipeline
Effectuez les tâches suivantes pour configurer un pipeline pour une application Android simple.
- Pour obtenir le code de l’application exemple, créez un fork du référentiel de l’application Android exemple sur votre compte GitHub.
- Dans votre projet Azure DevOps, sélectionnez Pipelines>Nouveau pipeline ou Créer un pipeline si ce pipeline est le premier dans le projet.
- Sélectionnez GitHub comme emplacement de votre code source.
- Sur l’écran Sélectionner un référentiel, sélectionnez votre référentiel forké de l’application Android exemple.
- Sur l’écran Configurer votre pipeline, sélectionnez Android.
- Azure Pipelines fournit un pipeline de démarrage basé sur le modèle Android. Examinez le code du pipeline.
- Sélectionnez Enregistrer et exécuter.
- Modifiez éventuellement le Commit message et fournissez une description. Ensuite, sélectionnez à nouveau Enregistrer et exécuter pour valider le fichier azure-pipelines.yml dans votre référentiel et démarrer une compilation.
La page d’exécution de la compilation affiche les détails et la progression de la compilation. Si vous voulez voir votre pipeline en action, sélectionnez Tâche dans la partie inférieure de la page.
Vous avez maintenant un pipeline YAML Android fonctionnel, azure-pipelines.yml, dans votre référentiel, prêt à être personnalisé.
Personnaliser votre pipeline
Pour apporter des modifications à votre pipeline, sélectionnez Modifier sur la page du pipeline. Les sections suivantes décrivent certaines façons courantes de personnaliser votre pipeline Android.
Configurer Gradle
Le pipeline YAML de démarrage utilise Gradle, un outil de build open-source courant pour les projets Android. Pour plus d’informations, veuillez consulter la section Tâche Gradle.
Dans l’exemple de tâche, le paramètre tasks
construit le type de build assembleDebug
. Vous pouvez ajuster la valeur tasks
pour les variantes de build que vous souhaitez, telles que build
, test
, et assembleRelease
.
L’exemple de tâche suppose également que votre fichier gradlew
se trouve à la racine du référentiel. Sinon, ajustez les valeurs workingDirectory
et gradleWrapperFile
en conséquence.
Le workingDirectory
devrait être similaire à la racine du référentiel, tel que AndroidApps/MyApp
ou $(system.defaultWorkingDirectory)/AndroidApps/MyApp
. Le chemin gradleWrapperFile
devrait être similaire à la racine du référentiel, tel que AndroidApps/MyApp/gradlew
ou $(system.defaultWorkingDirectory)/AndroidApps/MyApp/gradlew
.
- task: Gradle@3
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: 'assembleDebug'
Pour plus d’informations sur l’utilisation des tâches Gradle, veuillez consulter la section Utilisation des tâches dans la documentation Gradle. Pour plus d’informations sur les tâches de build, veuillez consulter Construire un APK de débogage et Configurer les variantes de build dans la documentation de développement Android de Google.
Signer et aligner le package Android (APK)
Pour exécuter sur un appareil au lieu d’un émulateur, le Package d’Application Android (APK) doit être signé. Le Zipalign réduit la RAM que l’application consomme. Si votre build ne sign et zipalign pas encore l’APK, ajoutez la tâche Signature Android au pipeline. Pour plus d’informations, veuillez consulter la section Signer une application mobile.
Pour des raisons de sécurité, stockez le jarsignerKeystorePassword
et jarsignerKeyPassword
dans des variables secrètes et utilisez ces variables dans votre pipeline.
- task: AndroidSigning@2
inputs:
apkFiles: '**/*.apk'
jarsign: true
jarsignerKeystoreFile: 'pathToYourKeystoreFile'
jarsignerKeystorePassword: '$(jarsignerKeystorePassword)'
jarsignerKeystoreAlias: 'yourKeystoreAlias'
jarsignerKeyPassword: '$(jarsignerKeyPassword)'
zipalign: true
Tester sur l’émulateur Android
Pour installer et exécuter l’émulateur Android, ajoutez la tâche Bash à votre pipeline, et collez le code suivant. L’émulateur démarre en tant que processus en arrière-plan et est disponible dans les tâches ultérieures. Arrangez les paramètres de l’émulateur pour qu’ils correspondent à votre environnement de test.
#!/usr/bin/env bash
# Install AVD files
echo "y" | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install 'system-images;android-30;google_apis;x86'
# Create emulator
echo "no" | $ANDROID_HOME/tools/bin/avdmanager create avd -n xamarin_android_emulator -k 'system-images;android-30;google_apis;x86' --force
$ANDROID_HOME/emulator/emulator -list-avds
echo "Starting emulator"
# Start emulator in background
nohup $ANDROID_HOME/emulator/emulator -avd xamarin_android_emulator -no-snapshot -no-window -no-audio -no-boot-anim -accel off > /dev/null 2>&1 &
$ANDROID_HOME/platform-tools/adb wait-for-device shell 'while [[ -z $(getprop sys.boot_completed | tr -d '\r') ]]; do sleep 1; done; input keyevent 82'
$ANDROID_HOME/platform-tools/adb devices
echo "Emulator started"
Tester sur des appareils hébergés par Azure
Pour tester votre application dans un laboratoire hébergé de dispositifs Android dans le Visual Studio App Center, ajoutez la tâche Test App Center à votre pipeline.
Cette tâche nécessite un compte d’essai gratuit App Center, qui doit être converti en compte payant après 30 jours pour continuer à utiliser le laboratoire de test. Inscrivez-vous pour un compte App Center avant d’utiliser cette tâche.
L’exemple suivant exécute une suite de tests App Center. La tâche utilise une connexion de service que vous devez configurer.
Pour obtenir la syntaxe complète de la tâche et la référence, veuillez consulter la section Tâche Test App Center. Pour plus d’informations, veuillez consulter la section Utiliser Azure DevOps pour les tests UI.
- task: AppCenterTest@1
inputs:
appFile: path/myapp.ipa
artifactsDirectory: '$(Build.ArtifactStagingDirectory)/AppCenterTest'
frameworkOption: 'appium'
appiumBuildDirectory: test/upload
serverEndpoint: 'My App Center service connection'
appSlug: username/appIdentifier
devices: 'devicelist'
Conserver les artefacts avec l’enregistrement de build
Pour stocker votre fichier APK avec l’enregistrement de build ou le tester et le déployer dans des pipelines ultérieurs, ajoutez les tâches Copier les fichiers et Publier les artefacts de build à votre pipeline. Pour plus d’informations, veuillez consulter la section Publier et télécharger des artefacts de pipeline.
- task: CopyFiles@2
inputs:
contents: '**/*.apk'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: MyBuildOutputs
Déployer sur App Center
Pour distribuer une application à un groupe de testeurs ou d’utilisateurs bêta, ou promouvoir l’application vers Intune ou Google Play, ajoutez la tâche Distribution App Center. La tâche nécessite un compte App Center gratuit qui reste sans frais.
L’exemple suivant distribue une application aux utilisateurs. Pour obtenir la syntaxe complète de la tâche et la référence, veuillez consulter la section Distribution App Center. Pour plus d’informations, veuillez consulter la section Déployer les builds Azure DevOps avec App Center.
- task: AppCenterDistribute@3
inputs:
serverEndpoint: 'AppCenter'
appSlug: '$(APP_CENTER_SLUG)'
appFile: '$(APP_FILE)' # Relative path from the repo root to the APK file you want to publish
symbolsOption: 'Android'
releaseNotesOption: 'input'
releaseNotesInput: 'Here are the release notes for this version.'
destinationType: 'groups'
Installer l’extension Google Play et déployer sur Google Play
Pour automatiser l’interaction avec Google Play, installez l’extension Google Play puis utilisez les tâches suivantes. Par défaut, ces tâches s’authentifient auprès de Google Play en utilisant une connexion de service que vous devez configurer.
Version release
Pour publier une nouvelle version d’application Android sur le Google Play Store, ajoutez la tâche Publication Google Play à votre pipeline.
- task: GooglePlayRelease@4
inputs:
apkFile: '**/*.apk'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
track: 'internal'
Promouvoir
Pour promouvoir une mise à jour d’application Android précédemment publiée d’une piste à une autre, telle que alpha
→ beta
, ajoutez la tâche Promotion Google Play à votre pipeline.
- task: GooglePlayPromote@3
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
sourceTrack: 'internal'
destinationTrack: 'alpha'
Augmentation du lancement
Pour augmenter le pourcentage de déploiement d’une application qui a été précédemment publiée sur la piste rollout
, ajoutez la tâche Augmenter le déploiement Google Play à votre pipeline.
- task: GooglePlayIncreaseRollout@2
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
userFraction: '0.5' # 0.0 to 1.0 (0% to 100%)
État de la mise à jour
Pour mettre à jour le statut de déploiement d’une application qui a été précédemment publiée sur la piste rollout
, ajoutez la tâche Mise à jour du statut Google Play à votre pipeline.
- task: GooglePlayStatusUpdate@2
inputs:
authType: ServiceEndpoint
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
status: 'inProgress' # draft | inProgress | halted | completed
Créer un ensemble d’applications
Vous pouvez construire et signer un bundle d’application avec un script inline et un fichier sécurisé.
Téléchargez votre keystore et stockez-le comme un fichier sécurisé dans la bibliothèque Azure Pipelines.
Créez des variables pour
keystore.password
,key.alias
, etkey.password
dans un groupe de variables.
Dans votre pipeline YAML :
Ajoutez la tâche Télécharger un fichier sécurisé pour télécharger le fichier sécurisé app.keystore.
- task: DownloadSecureFile@1 name: keyStore displayName: "Download keystore from secure files" inputs: secureFile: app.keystore
Utilisez la tâche Bash avec un script Bash pour construire et signer le bundle d’application.
- task: Bash@3 displayName: "Build and sign App Bundle" inputs: targetType: "inline" script: | msbuild -restore $(Build.SourcesDirectory)/myAndroidApp/*.csproj -t:SignAndroidPackage -p:AndroidPackageFormat=aab -p:Configuration=$(buildConfiguration) -p:AndroidKeyStore=True -p:AndroidSigningKeyStore=$(keyStore.secureFilePath) -p:AndroidSigningStorePass=$(keystore.password) -p:AndroidSigningKeyAlias=$(key.alias) -p:AndroidSigningKeyPass=$(key.password)
Utilisez la tâche Copier les fichiers pour copier le bundle d’application.
- task: CopyFiles@2 displayName: 'Copy deliverables' inputs: SourceFolder: '$(Build.SourcesDirectory)/myAndroidApp/bin/$(buildConfiguration)' Contents: '*.aab' TargetFolder: 'drop'
À partir de là, vous pouvez soit créer et enregistrer un artefact avec la tâche Publier un artefact de build, soit utiliser l’extension Google Play pour publier le bundle d’application.
Extensions associées
- Sécurité codifiée de Codified Security
- Google Play de Microsoft
- Tâches d’application mobile pour iOS et Android de James Montemagno
- Laboratoire de test mobile de Perfecto Mobile
- React Native de Microsoft