Membangun, menguji, dan menyebarkan aplikasi Android
Azure DevOps
Mulai cepat ini menunjukkan kepada Anda cara menyiapkan alur YAML di Azure Pipelines untuk membuat, menguji, dan menyebarkan aplikasi Android secara otomatis.
Prasyarat
Organisasi dan proyek Azure DevOps tempat Anda memiliki izin untuk membuat alur dan menyebarkan aplikasi. Untuk membuat proyek, lihat Membuat proyek di Azure DevOps.
Akun GitHub.
Penting
Selama prosedur GitHub, Anda mungkin diminta untuk membuat koneksi layanan GitHub atau dialihkan ke GitHub untuk masuk, menginstal Azure Pipelines, mengotorisasi Azure Pipelines, atau mengautentikasi ke organisasi GitHub. Ikuti instruksi di layar untuk menyelesaikan proses. Untuk informasi selengkapnya, lihat Akses ke repositori GitHub.
Membuat dan menjalankan alur
Lakukan tugas berikut untuk menyiapkan alur untuk aplikasi Android sederhana.
- Untuk mendapatkan kode untuk aplikasi sampel, fork repositori aplikasi sampel Android ke akun GitHub Anda.
- Dalam proyek Azure DevOps Anda, pilih Alur Alur> baru, atau Buat alur jika alur ini adalah yang pertama dalam proyek.
- Pilih GitHub sebagai lokasi kode sumber Anda.
- Pada layar Pilih repositori, pilih repositori sampel Android fork Anda.
- Pada layar Konfigurasikan alur Anda, pilih Android.
- Azure Pipelines menyediakan alur pemula berdasarkan templat Android . Tinjau kode alur.
- Pilih Simpan dan jalankan.
- Secara opsional, edit pesan Terapkan dan berikan deskripsi. Lalu pilih Simpan dan jalankan lagi untuk menerapkan file azure-pipelines.yml ke repositori Anda dan memulai build.
Halaman eksekusi build menunjukkan detail dan kemajuan build. Jika Anda ingin menonton alur Anda beraksi, pilih Pekerjaan di bagian bawah halaman.
Anda sekarang memiliki alur YAML Android yang berfungsi, azure-pipelines.yml, di repositori Anda yang siap disesuaikan.
Mengkustomisasi alur Anda
Untuk membuat perubahan pada alur Anda, pilih Edit di halaman alur. Bagian berikut menjelaskan beberapa cara umum untuk menyesuaikan alur Android Anda.
Mengonfigurasi Gradle
Alur YAML starter menggunakan Gradle, alat build sumber terbuka umum untuk proyek Android. Untuk informasi selengkapnya, lihat tugas Gradle.
Dalam tugas contoh, tasks
parameter membangun assembleDebug
jenis build. Anda dapat menyesuaikan tasks
nilai untuk varian build yang Anda inginkan, seperti build
, , test
dan assembleRelease
.
Contoh tugas juga mengasumsikan bahwa file Anda gradlew
berada di akar repositori. Jika tidak, sesuaikan workingDirectory
nilai dan gradleWrapperFile
yang sesuai.
workingDirectory
harus mirip dengan akar repositori, seperti AndroidApps/MyApp
atau $(system.defaultWorkingDirectory)/AndroidApps/MyApp
. Jalur gradleWrapperFile
harus mirip dengan akar repositori, seperti AndroidApps/MyApp/gradlew
atau $(system.defaultWorkingDirectory)/AndroidApps/MyApp/gradlew
.
- task: Gradle@3
inputs:
workingDirectory: ''
gradleWrapperFile: 'gradlew'
gradleOptions: '-Xmx3072m'
publishJUnitResults: false
testResultsFiles: '**/TEST-*.xml'
tasks: 'assembleDebug'
Untuk informasi selengkapnya tentang menggunakan tugas Gradle, lihat Menggunakan tugas dalam dokumentasi Gradle. Untuk informasi selengkapnya tentang tugas build, lihat Membuat APK debug dan Mengonfigurasi varian build dalam dokumentasi pengembangan Google Android.
Menandatangani dan menyelaraskan paket Android (APK)
Untuk berjalan pada perangkat alih-alih emulator, Paket Aplikasi Android (APK) harus ditandatangani. Zipaligning mengurangi RAM yang digunakan aplikasi. Jika build Anda belum menandatangani dan melakukan zipalign APK, tambahkan tugas Penandatanganan Android ke alur. Untuk informasi selengkapnya, lihat Menandatangani aplikasi seluler.
Untuk keamanan, simpan jarsignerKeystorePassword
dan jarsignerKeyPassword
dalam variabel rahasia dan gunakan variabel tersebut di alur Anda.
- task: AndroidSigning@2
inputs:
apkFiles: '**/*.apk'
jarsign: true
jarsignerKeystoreFile: 'pathToYourKeystoreFile'
jarsignerKeystorePassword: '$(jarsignerKeystorePassword)'
jarsignerKeystoreAlias: 'yourKeystoreAlias'
jarsignerKeyPassword: '$(jarsignerKeyPassword)'
zipalign: true
Uji di emulator Android
Untuk menginstal dan menjalankan emulator Android, tambahkan tugas Bash ke alur Anda, dan tempelkan dalam kode berikut. Emulator dimulai sebagai proses latar belakang dan tersedia dalam tugas selanjutnya. Atur parameter emulator agar sesuai dengan lingkungan pengujian Anda.
#!/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"
Uji di perangkat yang dihosting Azure
Untuk menguji aplikasi Anda di lab perangkat Android yang dihosting di Visual Studio App Center, tambahkan tugas Uji App Center ke alur Anda.
Tugas ini memerlukan akun uji coba gratis App Center , yang harus dikonversi menjadi berbayar setelah 30 hari untuk terus menggunakan lab pengujian. Daftar untuk akun App Center sebelum Anda menggunakan tugas ini.
Contoh berikut menjalankan rangkaian pengujian App Center. Tugas ini menggunakan koneksi layanan yang harus Anda siapkan.
Untuk sintaks dan referensi tugas lengkap, lihat Tugas Pengujian App Center. Untuk informasi selengkapnya, lihat Menggunakan Azure DevOps untuk Pengujian UI.
- 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'
Menyimpan artefak dengan rekaman build
Untuk menyimpan file APK Anda dengan catatan build atau menguji dan menyebarkannya di alur berikutnya, tambahkan tugas Salin File dan Terbitkan Artefak Build ke alur Anda. Untuk informasi selengkapnya, lihat Menerbitkan dan mengunduh artefak alur.
- task: CopyFiles@2
inputs:
contents: '**/*.apk'
targetFolder: '$(build.artifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: $(Build.ArtifactStagingDirectory)
artifactName: MyBuildOutputs
Menyebarkan ke App Center
Untuk mendistribusikan aplikasi ke sekelompok penguji atau pengguna beta, atau mempromosikan aplikasi ke Intune atau Google Play, tambahkan tugas Distribusi App Center. Tugas ini memerlukan akun App Center gratis yang tetap gratis.
Contoh berikut mendistribusikan aplikasi kepada pengguna. Untuk sintaks dan referensi tugas lengkap, lihat Distribusi App Center. Untuk informasi selengkapnya, lihat Menyebarkan Azure DevOps Builds dengan 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'
Instal ekstensi Google Play dan sebarkan ke Google Play
Untuk mengotomatiskan interaksi dengan Google Play, instal ekstensi Google Play lalu gunakan tugas berikut. Secara default, tugas-tugas ini mengautentikasi ke Google Play dengan menggunakan koneksi layanan yang harus Anda konfigurasi.
Lepaskan
Untuk merilis versi aplikasi Android baru ke Google Play Store, tambahkan tugas Rilis Google Play ke alur Anda.
- task: GooglePlayRelease@4
inputs:
apkFile: '**/*.apk'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
track: 'internal'
Promosikan
Untuk mempromosikan pembaruan aplikasi Android yang dirilis sebelumnya dari satu trek ke trek lain, seperti alpha
→ beta
, tambahkan tugas Promosi Google Play ke alur Anda.
- task: GooglePlayPromote@3
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
sourceTrack: 'internal'
destinationTrack: 'alpha'
Meningkatkan peluncuran
Untuk meningkatkan persentase peluncuran aplikasi yang sebelumnya dirilis ke rollout
trek, tambahkan tugas Peluncuran Peningkatan Google Play ke alur Anda.
- task: GooglePlayIncreaseRollout@2
inputs:
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
userFraction: '0.5' # 0.0 to 1.0 (0% to 100%)
Status pembaruan
Untuk memperbarui status peluncuran aplikasi yang sebelumnya dirilis ke rollout
trek, tambahkan tugas Pembaruan Status Google Play ke alur Anda.
- task: GooglePlayStatusUpdate@2
inputs:
authType: ServiceEndpoint
packageName: 'com.yourCompany.appPackageName'
serviceEndpoint: 'yourGooglePlayServiceConnectionName'
status: 'inProgress' # draft | inProgress | halted | completed
Membuat bundel aplikasi
Anda dapat membuat dan menandatangani app bundle dengan skrip sebaris dan file aman.
Unduh keystore Anda dan simpan sebagai file aman di pustaka Azure Pipelines.
Buat variabel untuk
keystore.password
,key.alias
, dankey.password
dalam grup variabel.
Di alur YAML Anda:
Tambahkan tugas Unduh File Aman untuk mengunduh file aman app.keystore.
- task: DownloadSecureFile@1 name: keyStore displayName: "Download keystore from secure files" inputs: secureFile: app.keystore
Gunakan tugas Bash dengan skrip Bash untuk membangun dan menandatangani bundel aplikasi.
- 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)
Gunakan tugas Salin File untuk menyalin bundel aplikasi.
- task: CopyFiles@2 displayName: 'Copy deliverables' inputs: SourceFolder: '$(Build.SourcesDirectory)/myAndroidApp/bin/$(buildConfiguration)' Contents: '*.aab' TargetFolder: 'drop'
Dari sini, Anda dapat membuat dan menyimpan artefak dengan tugas Terbitkan Artefak Build atau menggunakan ekstensi Google Play untuk memublikasikan bundel aplikasi.
Ekstensi terkait
- Keamanan Terkodifikasi dari Keamanan Terkodifikasi
- Google Play dari Microsoft
- Tugas Aplikasi Seluler untuk iOS dan Android dari James Montemagno
- Mobile Testing Lab dari Perfecto Mobile
- React Native dari Microsoft