Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure DevOps Services
W tym przewodniku szybkiego startu pokazano, jak skonfigurować potok YAML w usłudze Azure Pipelines w celu automatycznego kompilowania, testowania i wdrażania aplikacji na Androida.
Wymagania wstępne
Organizacja i projekt usługi Azure DevOps, w którym masz uprawnienia do tworzenia potoków i wdrażania aplikacji. Aby utworzyć projekt, zobacz Tworzenie projektu w usłudze Azure DevOps.
Konto usługi GitHub.
Ważne
Podczas procedur usługi GitHub może zostać wyświetlony monit o utworzenie połączenia usługi GitHub lub przekierowanie do usługi GitHub w celu zalogowania się, zainstalowania usługi Azure Pipelines, autoryzowania usługi Azure Pipelines lub uwierzytelniania w organizacjach usługi GitHub. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby ukończyć proces. Aby uzyskać więcej informacji, zobacz Dostęp do repozytoriów GitHub.
Utwórz i uruchom potok
Wykonaj następujące zadania, aby skonfigurować potok dla prostej aplikacji systemu Android.
- Aby uzyskać kod przykładowej aplikacji, sforcuj przykładowe repozytorium aplikacji Android na swoim koncie GitHub.
- W projekcie usługi Azure DevOps wybierz pozycję Potoki>Nowy potok lub Utwórz potok, jeśli ten potok jest pierwszym w projekcie.
- Wybierz pozycję GitHub jako lokalizację kodu źródłowego.
- Na ekranie Wybieranie repozytorium wybierz sforkowane przykładowe repozytorium systemu Android.
- Na ekranie "Konfigurowanie potoku" wybierz Android.
- Usługa Azure Pipelines udostępnia potok początkowy na podstawie szablonu systemu Android . Przejrzyj kod potoku.
- Wybierz pozycję Zapisz i uruchom.
- Opcjonalnie zmodyfikuj komunikat zatwierdzenia i podaj opis. Następnie wybierz pozycję Zapisz i uruchom ponownie, aby zatwierdzić plik azure-pipelines.yml w repozytorium i uruchomić kompilację.
Strona przebiegu kompilacji zawiera szczegóły kompilacji i postęp. Jeśli chcesz śledzić działanie potoku, wybierz pozycję Zadanie na dole strony.
Masz teraz działający potok YAML systemu Android, azure-pipelines.yml, w repozytorium, które jest gotowe do dostosowania.
Dostosuj swoją ścieżkę przetwarzania
Aby wprowadzić zmiany w potoku, wybierz Edytuj na stronie potoku. W poniższych sekcjach opisano kilka typowych sposobów dostosowywania potoku systemu Android.
Konfigurowanie narzędzia Gradle
Początkowy potok YAML używa narzędzia Gradle, popularnego narzędzia do budowy typu open source dla projektów Android. Aby uzyskać więcej informacji, zobacz zadanie narzędzia Gradle.
W przykładowym zadaniu parametr tasks odpowiada za budowanie typu kompilacji assembleDebug. Możesz dostosować tasks wartość dla żądanych wariantów kompilacji, takich jak build, testi assembleRelease.
Przykładowe zadanie zakłada również, że plik gradlew znajduje się w katalogu głównym repozytorium. Jeśli nie, dostosuj wartości workingDirectory i gradleWrapperFile odpowiednio.
Element workingDirectory powinien być podobny do katalogu głównego repozytorium, takiego jak AndroidApps/MyApp lub $(system.defaultWorkingDirectory)/AndroidApps/MyApp. Ścieżka gradleWrapperFile powinna być podobna do głównej ścieżki repozytorium, takiej jak AndroidApps/MyApp/gradlew lub $(system.defaultWorkingDirectory)/AndroidApps/MyApp/gradlew.
- task: Gradle@3
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: 'assembleDebug'
Aby uzyskać więcej informacji na temat korzystania z zadań narzędzia Gradle, zobacz Używanie zadań w dokumentacji narzędzia Gradle. Aby uzyskać więcej informacji na temat zadań kompilacji, zobacz Tworzenie APK debugowania i Konfigurowanie wariantów kompilacji w dokumentacji programowania platformy Google Android.
Podpisz i dopasuj pakiet systemu Android (APK)
Aby można było uruchomić na urządzeniu zamiast emulatora, należy podpisać pakiet aplikacji systemu Android (APK). Zipaligning zmniejsza ilość pamięci RAM zużywanej przez aplikację. Jeśli kompilacja jeszcze nie podpisze i zipalign pliku APK, dodaj zadanie Podpisywania Androida do potoku. Aby uzyskać więcej informacji, zobacz Podpisywanie aplikacji mobilnej.
Dla bezpieczeństwa przechowuj apksignerKeystorePassword i apksignerKeyPassword w zmiennych tajnych i użyj tych zmiennych w potoku.
- 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
Testowanie w emulatorze systemu Android
Aby zainstalować i uruchomić emulator systemu Android, dodaj zadanie powłoki Bash do potoku i wklej następujący kod. Emulator jest uruchamiany jako proces w tle i jest dostępny w kolejnych zadaniach. Rozmieść parametry emulatora, aby dopasować je do środowiska testowego.
Ważne
Jeśli używasz agenta hostowanego przez firmę Microsoft, użyj obrazu agenta systemu macOS z emulatorem systemu Android. Bieżące emulatory systemu Android wymagają przyspieszenia sprzętowego do uruchomienia. Agenci systemu Ubuntu hostowani w usłudze Azure DevOps nie obsługują przyspieszania sprzętowego.
- 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"
Testowanie na urządzeniach hostowanych na platformie Azure
Aby przetestować aplikację w hostowanym laboratorium urządzeń z systemem Android w Visual Studio App Center, dodaj zadanie App Center Test do potoku.
To zadanie wymaga bezpłatnego konta wersji próbnej usługi App Center , które musi zostać przekonwertowane na płatne po upływie 30 dni, aby nadal korzystać z laboratorium testowego. Przed rozpoczęciem korzystania z tego zadania utwórz konto usługi App Center.
Ostrzeżenie
Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Dowiedz się więcej o harmonogramach wsparcia i zalecanych alternatywach.
najpierw utwórz konto w centrum aplikacji.
W poniższym przykładzie uruchomiono pakiet testowy usługi App Center. Zadanie używa połączenia z usługą, które należy skonfigurować.
Aby uzyskać pełną składnię i dokumentację zadania, zobacz App Center Test task (Zadanie testowe usługi App Center). Aby uzyskać więcej informacji, zobacz Using Azure DevOps for UI Testing (Używanie usługi Azure DevOps do testowania interfejsu użytkownika).
- 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'
Zachowaj artefakty wraz z rekordem kompilacji
Aby zapisać plik APK razem z rekordem kompilacji lub użyć go do testowania i wdrażania w następnych potokach, dodaj zadania Copy Files i Publish Build Artifacts do potoku. Aby uzyskać więcej informacji, zobacz Artefakty potoków: publikowanie i pobieranie.
- task: CopyFiles@2
inputs:
contents: '**/*.apk'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: MyBuildOutputs
Wdróż do App Center
Aby dystrybuować aplikację do grupy testerów lub użytkowników wersji beta albo promować aplikację w usłudze Intune lub Google Play, dodaj zadanie App Center Distribute. Zadanie wymaga bezpłatnego konta usługi App Center , które pozostaje bezpłatne.
Poniższy przykład dystrybuuje aplikację do użytkowników. Aby uzyskać pełną składnię zadań i dokumentację, zobacz App Center Distribute. Aby uzyskać więcej informacji, zobacz Wdrażanie kompilacji Azure DevOps za 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'
Instalowanie rozszerzenia Google Play i wdrażanie w sklepie Google Play
Aby zautomatyzować interakcję ze sklepem Google Play, zainstaluj rozszerzenie Google Play, a następnie wykonaj następujące zadania. Domyślnie te zadania uwierzytelniają się w sklepie Google Play przy użyciu połączenia usługi, które należy skonfigurować.
Wydanie
Aby wydać nową wersję aplikacji na Androida do sklepu Google Play, dodaj zadanie Google Play Release do potoku.
- task: GooglePlayRelease@4
inputs:
apkFile: '**/*.apk'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
track: 'internal'
Promocja
Aby przenieść wcześniej wydaną aktualizację aplikacji Androida z jednego toru na inny, na przykład alpha → beta, dodaj zadanie Promowanie Google Play do pipelinu.
- task: GooglePlayPromote@3
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
sourceTrack: 'internal'
destinationTrack: 'alpha'
Zwiększ wdrożenie
Aby zwiększyć procent wdrożenia aplikacji, która została wcześniej wydana na rollout ścieżce, dodaj zadanie Zwiększanie Wdrożenia Google Play do linii.
- task: GooglePlayIncreaseRollout@2
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
userFraction: '0.5' # 0.0 to 1.0 (0% to 100%)
Stan aktualizacji
Aby zaktualizować stan wdrożenia aplikacji, która została wcześniej wydana w ścieżce rollout , dodaj zadanie Google Play Status Update do potoku.
- task: GooglePlayStatusUpdate@2
inputs:
authType: ServiceEndpoint
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
status: 'inProgress' # draft | inProgress | halted | completed
Tworzenie pakietu aplikacji
Pakiet aplikacji można skompilować i podpisać za pomocą wbudowanego skryptu i bezpiecznego pliku.
Pobierz magazyn kluczy i zapisz go jako bezpieczny plik w bibliotece usługi Azure Pipelines.
Utwórz zmienne dla
keystore.password,key.aliasikey.passwordw grupie zmiennych.
W twoim potoku przetwarzania YAML:
Dodaj zadanie Pobierz bezpieczny plik, aby pobrać bezpieczny plik app.keystore.
- task: DownloadSecureFile@1 name: keyStore displayName: "Download keystore from secure files" inputs: secureFile: app.keystoreUżyj zadania Bash ze skryptem Bash, aby skompilować i podpisać pakiet aplikacji.
- 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)Użyj zadania Copy Files (Kopiowanie plików), aby skopiować pakiet aplikacji.
- task: CopyFiles@2 displayName: 'Copy deliverables' inputs: SourceFolder: '$(Build.SourcesDirectory)/myAndroidApp/bin/$(buildConfiguration)' Contents: '*.aab' TargetFolder: 'drop'
W tym miejscu możesz utworzyć i zapisać artefakt za pomocą zadania Publikuj artefakt kompilacji lub użyć rozszerzenia Google Play, aby opublikować pakiet aplikacji.
Powiązane rozszerzenia
- Skodyfikowane zabezpieczenia ze skodyfikowanych zabezpieczeń
- Google Play od firmy Microsoft
- Zadania aplikacji mobilnych dla systemów iOS i Android z James Montemagno
- Laboratorium Mobilnych Testów od Perfecto Mobile
- React Native firmy Microsoft