Sestavování, testování a nasazování aplikací Android
Služby Azure DevOps
V tomto rychlém startu se dozvíte, jak nastavit kanál YAML v Azure Pipelines pro automatické sestavování, testování a nasazení aplikace pro Android.
Požadavky
Organizace a projekt Azure DevOps, kde máte oprávnění vytvářet kanály a nasazovat aplikace. Pokud chcete vytvořit projekt, přečtěte si téma Vytvoření projektu v Azure DevOps.
Účet GitHub.
Důležité
Během postupů GitHubu se může zobrazit výzva k vytvoření připojení ke službě GitHub nebo k přesměrování na GitHub, abyste se mohli přihlásit, nainstalovat Azure Pipelines, autorizovat Službu Azure Pipelines nebo ověřit v organizacích GitHubu. Dokončete proces podle pokynů na obrazovce. Další informace najdete v tématu Přístup k úložištím GitHub.
Vytvoření a spuštění kanálu
Pokud chcete nastavit kanál pro jednoduchou aplikaci pro Android, proveďte následující úlohy.
- Pokud chcete získat kód ukázkové aplikace, nastavte fork úložiště ukázkové aplikace pro Android do účtu GitHubu.
- V projektu Azure DevOps vyberte Kanály>Nový kanál nebo Vytvořte kanál, pokud je tento kanál v projektu prvním kanálem.
- Jako umístění zdrojového kódu vyberte GitHub .
- Na obrazovce Vybrat úložiště vyberte ukázkové úložiště forku Androidu.
- Na obrazovce Konfigurace kanálu vyberte Android.
- Azure Pipelines poskytuje počáteční kanál založený na šabloně Androidu. Zkontrolujte kód kanálu.
- Zvolte Uložit a Spustit.
- Volitelně můžete upravit zprávu Potvrzení a zadat popis. Potom vyberte Uložit a spusťte znovu, aby se soubor azure-pipelines.yml uložil do úložiště a spustil sestavení.
Na stránce spuštění sestavení se zobrazují podrobnosti o sestavení a průběh. Pokud chcete sledovat kanál v akci, vyberte Úlohu v dolní části stránky.
Teď máte v úložišti funkční kanál ANDROID YAML, azure-pipelines.yml, který je připravený k přizpůsobení.
Přizpůsobení kanálu
Pokud chcete v kanálu udělat změny, na stránce kanálu vyberte Upravit . Následující části popisují některé běžné způsoby přizpůsobení kanálu Android.
Konfigurace Gradle
Úvodní kanál YAML používá Gradle, běžný opensourcový nástroj sestavení pro projekty Android. Další informace najdete v úkolu Gradle.
V ukázkové úloze tasks
parametr sestaví assembleDebug
typ sestavení. Můžete upravit tasks
hodnotu požadovaných variant sestavení, například build
, test
a assembleRelease
.
Ukázkový úkol také předpokládá, že váš gradlew
soubor je v kořenovém adresáři úložiště. Pokud ne, upravte hodnoty workingDirectory
odpovídajícím gradleWrapperFile
způsobem.
Měla workingDirectory
by se podobat kořenovému adresáři úložiště, například AndroidApps/MyApp
nebo $(system.defaultWorkingDirectory)/AndroidApps/MyApp
. Cesta gradleWrapperFile
by měla být podobná kořenovému adresáři úložiště, například AndroidApps/MyApp/gradlew
.$(system.defaultWorkingDirectory)/AndroidApps/MyApp/gradlew
- task: Gradle@3
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: 'assembleDebug'
Další informace o používání úkolů Gradle najdete v tématu Použití úkolů v dokumentaci k Gradle. Další informace o úlohách sestavení naleznete v tématu Sestavení ladění APK a Konfigurace variant sestavení v dokumentaci k vývoji Google Android.
Podepsání a zarovnání balíčku androidu (APK)
Pokud chcete spustit na zařízení místo emulátoru, musí být podepsaný balíček aplikace pro Android (APK). Zazipování snižuje velikost paměti RAM, kterou aplikace využívá. Pokud váš build ještě nepodepisuje a zipalignuje APK, přidejte do kanálu úlohu Podepisování androidu. Další informace najdete v tématu Podepsání mobilní aplikace.
Pro zabezpečení uložte jarsignerKeystorePassword
a jarsignerKeyPassword
do tajných proměnných a použijte tyto proměnné ve vašem kanálu.
- task: AndroidSigning@2
inputs:
apkFiles: '**/*.apk'
jarsign: true
jarsignerKeystoreFile: 'pathToYourKeystoreFile'
jarsignerKeystorePassword: '$(jarsignerKeystorePassword)'
jarsignerKeystoreAlias: 'yourKeystoreAlias'
jarsignerKeyPassword: '$(jarsignerKeyPassword)'
zipalign: true
Testování v emulátoru Androidu
Pokud chcete nainstalovat a spustit emulátor Androidu, přidejte do kanálu úlohu Bash a vložte následující kód. Emulátor se spustí jako proces na pozadí a je k dispozici v pozdějších úlohách. Uspořádejte parametry emulátoru tak, aby vyhovovaly vašemu testovacímu prostředí.
#!/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"
Testování na zařízeních hostovaných v Azure
Pokud chcete svou aplikaci otestovat v hostované testovacím prostředí pro zařízení s Androidem v Centru aplikací sady Visual Studio, přidejte do kanálu úlohu App Center Test .
Tato úloha vyžaduje bezplatný zkušební účet App Center , který se musí po 30 dnech převést na placený, aby se testovací testovací prostředí dál používalo. Před použitím této úlohy si zaregistrujte účet App Center.
Následující příklad spustí testovací sadu App Center. Úloha používá připojení služby, které musíte nastavit.
Úplnou syntaxi úlohy a referenční informace najdete v tématu Testovací úloha App Center. Další informace najdete v tématu Použití Azure DevOps pro testování uživatelského rozhraní.
- 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'
Zachování artefaktů pomocí záznamu buildu
Pokud chcete soubor APK uložit se záznamem sestavení nebo testem a nasadit ho v následných kanálech, přidejte do kanálu úlohy Kopírovat soubory a Publikovat artefakty sestavení. Další informace najdete v tématu Publikování a stahování artefaktů kanálu.
- task: CopyFiles@2
inputs:
contents: '**/*.apk'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: MyBuildOutputs
Nasazení do App Center
Pokud chcete distribuovat aplikaci skupině testerů nebo beta uživatelů nebo zvýšit úroveň aplikace na Intune nebo Google Play, přidejte úlohu Distribuce App Center. Úkol vyžaduje bezplatný účet App Center , který zůstane zdarma.
Následující příklad distribuuje aplikaci uživatelům. Úplnou syntaxi úloh a referenční informace najdete v tématu Distribuce v App Center. Další informace najdete v tématu Nasazení buildů Azure DevOps pomocí 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'
Instalace rozšíření Google Play a nasazení do Google Play
Pokud chcete automatizovat interakci s Google Play, nainstalujte rozšíření Google Play a pak použijte následující úlohy. Ve výchozím nastavení se tyto úlohy ověřují ve službě Google Play pomocí připojení služby, které musíte nakonfigurovat.
Verze
Pokud chcete uvolnit novou verzi aplikace pro Android do obchodu Google Play, přidejte do kanálu úlohu vydání google Play.
- task: GooglePlayRelease@4
inputs:
apkFile: '**/*.apk'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
track: 'internal'
Propagovat
Pokud chcete zvýšit úroveň dříve vydané aktualizace aplikace pro Android z jedné skladby na jinou, například alpha
→ , přidejte do kanálu úlohu Google Play Promotebeta
.
- task: GooglePlayPromote@3
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
sourceTrack: 'internal'
destinationTrack: 'alpha'
Zvýšení zavedení
Pokud chcete zvýšit procento zavedení aplikace, která byla dříve vydána na rollout
sledování, přidejte do kanálu úlohu Zvýšení zavedení Google Play.
- task: GooglePlayIncreaseRollout@2
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
userFraction: '0.5' # 0.0 to 1.0 (0% to 100%)
Aktualizovat stav
Pokud chcete aktualizovat stav uvedení pro aplikaci, která byla dříve vydána na rollout
sledování, přidejte do kanálu úlohu Aktualizace stavu Google Play.
- task: GooglePlayStatusUpdate@2
inputs:
authType: ServiceEndpoint
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
status: 'inProgress' # draft | inProgress | halted | completed
Vytvoření sady aplikací
Sadu aplikací můžete sestavit a podepsat pomocí vloženého skriptu a zabezpečeného souboru.
Stáhněte si úložiště klíčů a uložte ho jako zabezpečený soubor do knihovny Azure Pipelines.
Vytvořte proměnné pro
keystore.password
,key.alias
akey.password
ve skupině proměnných.
V kanálu YAML:
Přidejte úlohu Stáhnout zabezpečený soubor pro stažení souboru zabezpečení app.keystore.
- task: DownloadSecureFile@1 name: keyStore displayName: "Download keystore from secure files" inputs: secureFile: app.keystore
Pomocí úlohy Bash se skriptem Bash sestavte a podepište sadu aplikací.
- 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)
Ke zkopírování sady aplikací použijte úlohu Kopírovat soubory.
- task: CopyFiles@2 displayName: 'Copy deliverables' inputs: SourceFolder: '$(Build.SourcesDirectory)/myAndroidApp/bin/$(buildConfiguration)' Contents: '*.aab' TargetFolder: 'drop'
Odtud můžete buď vytvořit a uložit artefakt s úlohou Publikovat artefakt sestavení, nebo pomocí rozšíření Google Play publikovat sadu aplikací.
Související rozšíření
- Kodifikované zabezpečení z kodifikovaného zabezpečení
- Google Play od Microsoftu
- Úlohy mobilních aplikací pro iOS a Android od Jamese Montemagna
- Mobilní testovací cvičení z Perfecto Mobile
- React Native od Microsoftu