Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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' je geforkte Android-voorbeeldrepository.
- Selecteer Android in het scherm Uw pijplijn configureren.
- Azure Pipelines biedt een starterpijplijn 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, testen 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- en gradleWrapperFile-waarden dienovereenkomstig aan.
De workingDirectory moet vergelijkbaar zijn met de wortel van de opslagplaats, zoals AndroidApps/MyApp of $(system.defaultWorkingDirectory)/AndroidApps/MyApp. Het gradleWrapperFile pad moet vergelijkbaar zijn met de rootmap 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. Voor meer informatie over buildtaken, raadpleeg Build a debug APK en Configure build variants in de Google Android-ontwikkelingsdocumentatie.
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 zipalignet, voegt u de Android-ondertekeningstaak toe aan de pijplijn. Zie Een mobiele app ondertekenen voor meer informatie.
Voor beveiliging slaat u de apksignerKeystorePassword en apksignerKeyPassword in geheime variabelen op en gebruikt u deze variabelen in uw pijplijn.
- task: AndroidSigning@3
inputs:
apkFiles: '**/*.apk' # Specify the APK files to sign
apksignerKeystoreFile: 'pathToYourKeystoreFile' # Path to the keystore file
apksignerKeystorePassword: '$(apksignerKeystorePassword)' # Use a secret variable for security
apksignerKeystoreAlias: 'yourKeystoreAlias' # Alias for the keystore
apksignerKeyPassword: '$(apksignerKeyPassword)' # Use a secret variable for security
apksignerVersion: 'latest' # Use the latest version of apksigner
apksignerArguments: '--verbose' # Optional: Additional arguments for apksigner
zipalign: true # Enable zipalign to optimize APK
zipalignVersion: 'latest' # Use the latest version of zipalign
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.
Belangrijk
Als u een door Microsoft gehoste agent gebruikt, gebruikt u de installatiekopie van de macOS-agent met de Android-emulator. Voor huidige Android-emulators is hardwareversnelling vereist om te starten. Gehoste Ubuntu-agents van Azure DevOps bieden geen ondersteuning voor hardwareversnelling.
- task: Bash@3
inputs:
targetType: 'inline'
script: |
#!/usr/bin/env bash
# Install AVD files
echo "y" | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --install 'system-images;android-35;google_apis;x86_64'
# Create emulator
echo "y" | $ANDROID_HOME/cmdline-tools/latest/bin/avdmanager create avd -n xamarin_android_emulator -d "Nexus 10" -k 'system-images;android-35;google_apis;x86_64' --force
echo "y" | $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 on > /dev/null 2>&1 &
# Fixed quoting around "\r"
$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.
Waarschuwing
Visual Studio App Center is gepland voor buitengebruikstelling op 31 maart 2025. Meer informatie over ondersteuningstijdlijnen en aanbevolen alternatieven.
meld u eerst aan bij App Center.
In het volgende voorbeeld wordt een App Center-testsuite 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 het buildrecord of testen en het wilt implementeren in volgende pijplijnen, voegt u de taken Copy Files en 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'
Promoveren
Als u een eerder vrijgegeven Android-app-update van het ene releasekanaal naar het andere wilt promoveren, zoals alpha → beta, voegt u de Google Play Promote-taak toe aan uw pipeline.
- task: GooglePlayPromote@3
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
sourceTrack: 'internal'
destinationTrack: 'alpha'
Uitrol verhogen
Om het uitrolpercentage van een toepassing die eerder naar het rollout-kanaal is uitgebracht te verhogen, voegt u de taak Google Play Increase Rollout 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 kanaal, 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.aliasenkey.passwordin 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.keystoreGebruik 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 Bestanden kopiëren taak 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 Publiceer bouwartefact 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