Sdílet prostřednictvím


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.

  1. Pokud chcete získat kód ukázkové aplikace, nastavte fork úložiště ukázkové aplikace pro Android do účtu GitHubu.

  2. 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.

  3. Jako umístění zdrojového kódu vyberte GitHub .

  4. Na obrazovce Vybrat úložiště vyberte ukázkové úložiště forku Androidu.

  5. Na obrazovce Konfigurace kanálu vyberte Android.

  6. Azure Pipelines poskytuje počáteční kanál založený na šabloně Androidu. Zkontrolujte kód kanálu.

  7. Zvolte Uložit a Spustit.

    Snímek obrazovky s tlačítkem Uložit a spustit v novém kanálu Android YAML

  8. 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, testa 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@2
  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-27;google_apis;x86'

# Create emulator
echo "no" | $ANDROID_HOME/tools/bin/avdmanager create avd -n xamarin_android_emulator -k 'system-images;android-27;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 > /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.

  1. Stáhněte si úložiště klíčů a uložte ho jako zabezpečený soubor do knihovny Azure Pipelines.

  2. Vytvořte proměnné pro keystore.password, key.aliasa key.password ve skupině proměnných.

V kanálu YAML:

  1. 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
    
  2. 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)
    
  3. 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í.