Android-apps bouwen, testen en implementeren
Azure DevOps Services
In deze quickstart ziet u hoe u een YAML-pijplijn instelt in Azure Pipelines om automatisch een Android-app te bouwen, testen en implementeren.
Vereisten
Een Azure DevOps-organisatie en -project waar u gemachtigd bent om pijplijnen te maken en apps te implementeren. Zie Een project maken in Azure DevOps om een project te maken.
Een GitHub-account.
Belangrijk
Tijdens GitHub-procedures wordt u mogelijk gevraagd om een GitHub-serviceverbinding te maken of om te worden omgeleid naar GitHub om u aan te melden, Azure Pipelines te installeren, Azure Pipelines te autoriseren of te verifiëren bij GitHub-organisaties. Volg de instructies op het scherm om het proces te voltooien. Zie Toegang tot GitHub-opslagplaatsen voor meer informatie.
De pijplijn maken en uitvoeren
Ga als volgt te werk om een pijplijn in te stellen voor een eenvoudige Android-toepassing.
- Als u de code voor de voorbeeld-app wilt ophalen, forkt u de opslagplaats voor de Android-voorbeeld-app naar uw GitHub-account.
- Selecteer in uw Azure DevOps-project pijplijnen>een nieuwe pijplijn of maak een pijplijn als deze pijplijn de eerste is in het project.
- Selecteer GitHub als de locatie van uw broncode.
- Selecteer in het scherm Een opslagplaats selecteren uw geforkte Android-voorbeeldopslagplaats.
- Selecteer Android in het scherm Uw pijplijn configureren.
- Azure Pipelines biedt een starterspijplijn op basis van de Android-sjabloon . Controleer de pijplijncode.
- Selecteer Opslaan en uitvoeren.
- Bewerk desgewenst het doorvoerbericht en geef een beschrijving op. Selecteer Vervolgens Opslaan en opnieuw uitvoeren om het azure-pipelines.yml-bestand door te voeren in uw opslagplaats en een build te starten.
Op de pagina voor het uitvoeren van de build worden details en voortgang van de build weergegeven. Als u de pijplijn in actie wilt bekijken, selecteert u Taak in het onderste gedeelte van de pagina.
U hebt nu een werkende Android YAML-pijplijn, azure-pipelines.yml, in uw opslagplaats die klaar is om aan te passen.
Uw pijplijn aanpassen
Als u wijzigingen wilt aanbrengen in uw pijplijn, selecteert u Bewerken op de pagina Pijplijn. In de volgende secties worden enkele veelgebruikte manieren beschreven om uw Android-pijplijn aan te passen.
Gradle configureren
De starter YAML-pijplijn maakt gebruik van Gradle, een algemeen opensource-buildhulpprogramma voor Android-projecten. Zie de Gradle-taak voor meer informatie.
In de voorbeeldtaak wordt met de tasks
parameter het assembleDebug
buildtype gebouwd. U kunt de tasks
waarde aanpassen voor de gewenste buildvarianten, zoals build
, test
en assembleRelease
.
Bij de voorbeeldtaak wordt ook ervan uitgegaan dat uw gradlew
bestand zich in de hoofdmap van de opslagplaats bevindt. Zo niet, pas de workingDirectory
waarden gradleWrapperFile
dienovereenkomstig aan.
De workingDirectory
moet vergelijkbaar zijn met de hoofdmap van de opslagplaats, zoals AndroidApps/MyApp
of $(system.defaultWorkingDirectory)/AndroidApps/MyApp
. Het gradleWrapperFile
pad moet vergelijkbaar zijn met de hoofdmap van de opslagplaats, zoals AndroidApps/MyApp/gradlew
of $(system.defaultWorkingDirectory)/AndroidApps/MyApp/gradlew
.
- task: Gradle@3
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: 'assembleDebug'
Zie Taken gebruiken in de Gradle-documentatie voor meer informatie over het gebruik van Gradle-taken. Zie Build a debug APK and Configure build variants in the Google Android development documentation voor meer informatie over buildtaken.
Het Android-pakket ondertekenen en uitlijnen (APK)
Als u wilt uitvoeren op een apparaat in plaats van een emulator, moet het Android-toepassingspakket (APK) zijn ondertekend. Zipaligning vermindert het RAM-geheugen dat de toepassing verbruikt. Als uw build de APK nog niet ondertekent en zipalignt , voegt u de Android-ondertekeningstaak toe aan de pijplijn. Zie Een mobiele app ondertekenen voor meer informatie.
Voor beveiliging slaat u de jarsignerKeystorePassword
en jarsignerKeyPassword
in geheime variabelen op en gebruikt u deze variabelen in uw pijplijn.
- task: AndroidSigning@2
inputs:
apkFiles: '**/*.apk'
jarsign: true
jarsignerKeystoreFile: 'pathToYourKeystoreFile'
jarsignerKeystorePassword: '$(jarsignerKeystorePassword)'
jarsignerKeystoreAlias: 'yourKeystoreAlias'
jarsignerKeyPassword: '$(jarsignerKeyPassword)'
zipalign: true
Testen op de Android-emulator
Als u de Android-emulator wilt installeren en uitvoeren, voegt u de Bash-taak toe aan uw pijplijn en plakt u de volgende code. De emulator wordt gestart als achtergrondproces en is beschikbaar in latere taken. Rangschik de emulatorparameters zodat deze passen bij uw testomgeving.
#!/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"
Testen op door Azure gehoste apparaten
Als u uw app wilt testen in een gehost lab met Android-apparaten in Visual Studio App Center, voegt u de App Center-testtaak toe aan uw pijplijn.
Voor deze taak is een gratis proefaccount voor App Center vereist, dat na 30 dagen moet worden geconverteerd naar betaald om het testlab te kunnen blijven gebruiken. Meld u aan voor een App Center-account voordat u deze taak gebruikt.
In het volgende voorbeeld wordt een App Center-testpakket uitgevoerd. De taak maakt gebruik van een serviceverbinding die u moet instellen.
Zie App Center-testtaak voor de volledige taaksyntaxis en -verwijzing. Zie Azure DevOps gebruiken voor ui-tests voor meer informatie.
- 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'
Artefacten behouden met de buildrecord
Als u uw APK-bestand wilt opslaan met de buildrecord of test en het wilt implementeren in volgende pijplijnen, voegt u de taken Copy Files and Publish Build Artifacts toe aan uw pijplijn. Zie Pijplijnartefacten publiceren en downloaden voor meer informatie.
- task: CopyFiles@2
inputs:
contents: '**/*.apk'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: MyBuildOutputs
Implementeren in App Center
Als u een app wilt distribueren naar een groep testers of bètagebruikers, of de app wilt promoveren naar Intune of Google Play, voegt u de taak App Center Distribueren toe. Voor de taak is een gratis App Center-account vereist dat gratis blijft.
In het volgende voorbeeld wordt een app gedistribueerd naar gebruikers. Zie App Center Distribueren voor de volledige taaksyntaxis en -verwijzing. Zie Azure DevOps-builds implementeren met App Center voor meer informatie.
- 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'
De Google Play-extensie installeren en implementeren in Google Play
Als u de interactie met Google Play wilt automatiseren, installeert u de Google Play-extensie en gebruikt u vervolgens de volgende taken. Deze taken worden standaard geverifieerd bij Google Play met behulp van een serviceverbinding die u moet configureren.
Vrijgeven
Als u een nieuwe Android-app-versie wilt vrijgeven aan de Google Play Store, voegt u de Google Play Release-taak toe aan uw pijplijn.
- task: GooglePlayRelease@4
inputs:
apkFile: '**/*.apk'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
track: 'internal'
Promoten
Als u een eerder uitgebrachte Android-toepassingsupdate van het ene nummer naar het andere wilt promoveren, zoals alpha
→ beta
, voegt u de Google Play Promote-taak toe aan uw pijplijn.
- task: GooglePlayPromote@3
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
sourceTrack: 'internal'
destinationTrack: 'alpha'
Implementatie verhogen
Als u het implementatiepercentage wilt verhogen van een toepassing die eerder voor het rollout
spoor is uitgebracht, voegt u de implementatietaak google Play-verhoging toe aan uw pijplijn.
- task: GooglePlayIncreaseRollout@2
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
userFraction: '0.5' # 0.0 to 1.0 (0% to 100%)
Status bijwerken
Als u de implementatiestatus wilt bijwerken voor een toepassing die eerder is uitgebracht voor het rollout
bijhouden, voegt u de Google Play Status Update-taak toe aan uw pijplijn.
- task: GooglePlayStatusUpdate@2
inputs:
authType: ServiceEndpoint
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
status: 'inProgress' # draft | inProgress | halted | completed
Een app-bundel maken
U kunt een app-bundel bouwen en ondertekenen met een inlinescript en een beveiligd bestand.
Download uw sleutelarchief en sla het op als een beveiligd bestand in de Azure Pipelines-bibliotheek.
Maak variabelen voor
keystore.password
,key.alias
enkey.password
in een variabelegroep.
In uw YAML-pijplijn:
Voeg de taak Beveiligd bestand downloaden toe om het beveiligde bestand app.keystore te downloaden.
- task: DownloadSecureFile@1 name: keyStore displayName: "Download keystore from secure files" inputs: secureFile: app.keystore
Gebruik de Bash-taak met een Bash-script om de app-bundel te bouwen en te ondertekenen.
- 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)
Gebruik de taak Bestanden kopiëren om de app-bundel te kopiëren.
- task: CopyFiles@2 displayName: 'Copy deliverables' inputs: SourceFolder: '$(Build.SourcesDirectory)/myAndroidApp/bin/$(buildConfiguration)' Contents: '*.aab' TargetFolder: 'drop'
Hier kunt u een artefact maken en opslaan met de taak BuildArtefact publiceren of de Google Play-extensie gebruiken om de app-bundel te publiceren.
Verwante extensies
- Codified Security from Codified Security
- Google Play van Microsoft
- Taken voor mobiele apps voor iOS en Android van James Montemagno
- Mobile Testing Lab van Perfecto Mobile
- React Native van Microsoft