Megosztás a következőn keresztül:


Android-alkalmazások készítése, tesztelése és üzembe helyezése

Azure DevOps Services

Ez a rövid útmutató bemutatja, hogyan állíthat be YAML-folyamatot az Azure Pipelinesban androidos alkalmazások automatikus létrehozásához, teszteléséhez és üzembe helyezéséhez.

Előfeltételek

  • Egy Azure DevOps-szervezet és -projekt, amelyben engedéllyel rendelkezik folyamatok létrehozására és alkalmazások üzembe helyezésére. Projekt létrehozásához lásd : Projekt létrehozása az Azure DevOpsban.

  • Egy GitHub-fiók.

    Fontos

    A GitHub-eljárások során előfordulhat, hogy a rendszer arra kéri, hogy hozzon létre egy GitHub-szolgáltatáskapcsolatot , vagy átirányítsa a GitHubra, hogy jelentkezzen be, telepítse az Azure Pipelinest, engedélyezze az Azure Pipelinest, vagy hitelesítse a GitHub-szervezeteket. A folyamat befejezéséhez kövesse a képernyőn megjelenő utasításokat. További információ: Access to GitHub-adattárak.

A folyamat létrehozása és futtatása

Hajtsa végre az alábbi feladatokat egy egyszerű Android-alkalmazás folyamatának beállításához.

  1. A mintaalkalmazás kódjának lekéréséhez forgja el az Android mintaalkalmazás-adattárat a GitHub-fiókjához.
  2. Az Azure DevOps-projektben válassza a Pipelines>New (Folyamatok új) vagy a Create pipeline (Folyamat létrehozása) lehetőséget, ha ez a folyamat az első a projektben.
  3. Válassza a GitHubot a forráskód helyeként.
  4. Az Adattár kiválasztása képernyőn válassza ki az elágazott Android-mintaadattárat.
  5. A folyamat konfigurálása képernyőn válassza az Android lehetőséget.
  6. Az Azure Pipelines az Android-sablonon alapuló kezdőfolyamatot biztosít. Tekintse át a folyamatkódot.
  7. Válassza a Mentés és futtatás lehetőséget.
  8. Igény szerint szerkessze a véglegesítési üzenetet , és adjon meg egy leírást. Ezután válassza a Mentés lehetőséget, és futtassa újra a azure-pipelines.yml fájlt az adattárban való véglegesítéséhez, és indítsa el a buildet.

A buildelési oldal a build részleteit és a folyamat előrehaladását mutatja. Ha működés közben szeretné megtekinteni a folyamatot, válassza a Feladat lehetőséget a lap alsó részén.

Most már rendelkezik egy működő Android YAML-folyamatsal, azure-pipelines.yml az adattárban, amely készen áll a testreszabásra.

A folyamat testreszabása

Ha módosítani szeretné a folyamatot, válassza a Szerkesztés lehetőséget a folyamat lapján. Az alábbi szakaszok az Android-folyamat testreszabásának néhány gyakori módját ismertetik.

Gradle konfigurálása

A kezdő YAML-folyamat a Gradle-t, az Android-projektek gyakori nyílt forráskódú buildelési eszközét használja. További információ: Gradle tevékenység.

A példafeladatban a tasks paraméter létrehozza a assembleDebug build típusát. Módosíthatja a tasks kívánt buildvariánsok értékét, például build: , testés assembleRelease.

A példafeladat azt is feltételezi, hogy a gradlew fájl az adattár gyökerénél található. Ha nem, módosítsa az és gradleWrapperFile az workingDirectory értékeket ennek megfelelően.

A workingDirectory fájlnak hasonlónak kell lennie az adattár gyökeréhez, például AndroidApps/MyApp vagy $(system.defaultWorkingDirectory)/AndroidApps/MyApp. Az gradleWrapperFile elérési útnak hasonlónak kell lennie az adattár gyökeréhez, például AndroidApps/MyApp/gradlew vagy $(system.defaultWorkingDirectory)/AndroidApps/MyApp/gradlew.

- task: Gradle@3
  inputs:
    workingDirectory: ''
    gradleWrapperFile: 'gradlew'
    gradleOptions: '-Xmx3072m'
    publishJUnitResults: false
    testResultsFiles: '**/TEST-*.xml'
    tasks: 'assembleDebug'

További információ a Gradle-feladatok használatáról: Feladatok használata a Gradle dokumentációjában. A buildelési feladatokkal kapcsolatos további információkért lásd : Hibakeresési APK létrehozása és buildvariánsok konfigurálása a Google Android fejlesztési dokumentációjában.

Az Android-csomag (APK) aláírása és igazítása

Ahhoz, hogy emulátor helyett egy eszközön fusson, az Android-alkalmazáscsomagot (APK) alá kell írni. A zipaligning csökkenti az alkalmazás által felhasznált RAM-ot. Ha a build még nem írta alá és tömöríti az APK-t, adja hozzá az Android-aláírási feladatot a folyamathoz. További információ: Mobilalkalmazás aláírása.

A biztonság érdekében tárolja a jarsignerKeystorePassword titkos változókat, jarsignerKeyPassword és használja ezeket a változókat a folyamatban.

- task: AndroidSigning@2
  inputs:
    apkFiles: '**/*.apk'
    jarsign: true
    jarsignerKeystoreFile: 'pathToYourKeystoreFile'
    jarsignerKeystorePassword: '$(jarsignerKeystorePassword)'
    jarsignerKeystoreAlias: 'yourKeystoreAlias'
    jarsignerKeyPassword: '$(jarsignerKeyPassword)'
    zipalign: true

Tesztelés az Android emulátoron

Az Android emulátor telepítéséhez és futtatásához adja hozzá a Bash-feladatot a folyamathoz, és illessze be a következő kódot. Az emulátor háttérfolyamatként indul, és a későbbi feladatokban is elérhető. Rendezze el az emulátor paramétereit a tesztelési környezetnek megfelelően.

#!/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"

Tesztelés Az Azure által üzemeltetett eszközökön

Ha androidos eszközök üzemeltetett tesztkörnyezetében szeretné tesztelni az alkalmazást a Visual Studio App Centerben, adja hozzá az App Center tesztelési feladatát a folyamathoz.

Ehhez a feladathoz egy ingyenes App Center-próbafiókra van szükség, amelyet 30 nap után fizetőssé kell alakítani a tesztlabor használatához. A feladat használata előtt regisztráljon egy App Center-fiókot .

Az alábbi példa egy App Center-tesztcsomagot futtat. A feladat egy szolgáltatáskapcsolatot használ, amelyet be kell állítania.

A teljes tevékenységszintaxis és -referencia az App Center tesztelési feladatában található. További információ: Az Azure DevOps használata felhasználói felületi teszteléshez.

- 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'

Összetevők megőrzése a buildrekorddal

Az APK-fájl buildrekorddal való tárolásához vagy teszteléséhez és későbbi folyamatokban való üzembe helyezéséhez adja hozzá a Fájlok másolása és a Build Artifacts-tevékenységek közzététele a folyamathoz. További információ: Folyamatösszetevők közzététele és letöltése.

- task: CopyFiles@2
  inputs:
    contents: '**/*.apk'
    targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
  inputs:
    pathToPublish: $(Build.ArtifactStagingDirectory)
    artifactName: MyBuildOutputs

Üzembe helyezés az App Centerben

Ha egy alkalmazást tesztelők vagy bétafelhasználók egy csoportjának szeretne terjeszteni, vagy elő szeretné segíteni az alkalmazást az Intune-ban vagy a Google Play-ben, adja hozzá az App Center Distribute feladatot. A feladathoz ingyenes App Center-fiók szükséges, amely továbbra is ingyenes.

Az alábbi példa egy alkalmazást terjeszt a felhasználók között. A teljes tevékenységszintaxis és -referencia az App Center Distribute című témakörben található. További információ: Azure DevOps-buildek üzembe helyezése az App Centerrel.

- 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'

A Google Play bővítmény telepítése és üzembe helyezése a Google Play-ben

A Google Play szolgáltatással való interakció automatizálásához telepítse a Google Play bővítményt , majd használja az alábbi feladatokat. Alapértelmezés szerint ezek a feladatok egy konfigurálni kívánt szolgáltatáskapcsolat használatával hitelesíthetők a Google Play-ben.

Felszabadítás

Ha új Android-alkalmazásverziót szeretne kiadni a Google Play Áruházba, adja hozzá a Google Play kiadási feladatát a folyamathoz.

- task: GooglePlayRelease@4
  inputs:
    apkFile: '**/*.apk'
    serviceEndpoint: 'yourGooglePlayServiceConnectionName'
    track: 'internal'

Reklámozás

Ha egy korábban kiadott Android-alkalmazásfrissítést szeretne előléptetni egyik sávról a másikra, például alphabeta, adja hozzá a Google Play Promote feladatot a folyamathoz.

- task: GooglePlayPromote@3
  inputs:
    packageName: 'com.yourCompany.appPackageName'
    serviceEndpoint: 'yourGooglePlayServiceConnectionName'
    sourceTrack: 'internal'
    destinationTrack: 'alpha'

Bevezetés növelése

Ha növelni szeretné a korábban a pályán megjelent rollout alkalmazások bevezetési százalékos arányát, adja hozzá a Google Play Increase bevezetési feladatát a folyamathoz.

- task: GooglePlayIncreaseRollout@2
  inputs:
    packageName: 'com.yourCompany.appPackageName'
    serviceEndpoint: 'yourGooglePlayServiceConnectionName'
    userFraction: '0.5' # 0.0 to 1.0 (0% to 100%)

Frissítés állapota

Ha frissíteni szeretné egy korábban a pályán megjelent rollout alkalmazás bevezetési állapotát, adja hozzá a Google Play állapotfrissítési feladatát a folyamathoz.

  - task: GooglePlayStatusUpdate@2
    inputs:
      authType: ServiceEndpoint
      packageName: 'com.yourCompany.appPackageName'
      serviceEndpoint: 'yourGooglePlayServiceConnectionName'
      status: 'inProgress' # draft | inProgress | halted | completed

Alkalmazáscsomag létrehozása

Létrehozhat és aláírhat egy alkalmazáscsomagot egy beágyazott szkripttel és egy biztonságos fájllal.

  1. Töltse le a keystore-t, és tárolja biztonságos fájlként az Azure Pipelines-kódtárban.

  2. Változók keystore.passwordlétrehozása egy key.aliasváltozócsoporthoz és key.password egy változócsoporthoz.

A YAML-folyamatban:

  1. Adja hozzá a Biztonságos fájl letöltése feladatot az app.keystore biztonságos fájl letöltéséhez.

    - task: DownloadSecureFile@1
      name: keyStore
      displayName: "Download keystore from secure files"
      inputs:
        secureFile: app.keystore
    
  2. Az alkalmazáscsomag létrehozásához és aláírásához használja a Bash-feladatot egy Bash-szkripttel.

    - 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. Az alkalmazáscsomag másolásához használja a Fájlok másolása feladatot.

    - task: CopyFiles@2
      displayName: 'Copy deliverables'
      inputs:
        SourceFolder: '$(Build.SourcesDirectory)/myAndroidApp/bin/$(buildConfiguration)'
        Contents: '*.aab'
        TargetFolder: 'drop'
    

Innen létrehozhat és menthet egy összetevőt a Build Artifact közzététele feladattal, vagy a Google Play bővítmény használatával közzéteheti az alkalmazáscsomagot.