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.
- A mintaalkalmazás kódjának lekéréséhez forgja el az Android mintaalkalmazás-adattárat a GitHub-fiókjához.
- 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.
- Válassza a GitHubot a forráskód helyeként.
- Az Adattár kiválasztása képernyőn válassza ki az elágazott Android-mintaadattárat.
- A folyamat konfigurálása képernyőn válassza az Android lehetőséget.
- Az Azure Pipelines az Android-sablonon alapuló kezdőfolyamatot biztosít. Tekintse át a folyamatkódot.
- Válassza a Mentés és futtatás lehetőséget.
- 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 alpha
→ beta
, 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.
Töltse le a keystore-t, és tárolja biztonságos fájlként az Azure Pipelines-kódtárban.
Változók
keystore.password
létrehozása egykey.alias
változócsoporthoz éskey.password
egy változócsoporthoz.
A YAML-folyamatban:
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
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)
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.
Kapcsolódó bővítmények
- Kodifikált biztonság a kodifikált biztonságból
- Google Play a Microsofttól
- Mobilalkalmazás-feladatok iOS-hez és Androidhoz James Montemagno-tól
- Mobile Testing Lab a Perfecto Mobile-tól
- React Native a Microsofttól