Bagikan melalui


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.

  1. Untuk mendapatkan kode untuk aplikasi sampel, fork repositori aplikasi sampel Android ke akun GitHub Anda.
  2. Dalam proyek Azure DevOps Anda, pilih Alur Alur> baru, atau Buat alur jika alur ini adalah yang pertama dalam proyek.
  3. Pilih GitHub sebagai lokasi kode sumber Anda.
  4. Pada layar Pilih repositori, pilih repositori sampel Android fork Anda.
  5. Pada layar Konfigurasikan alur Anda, pilih Android.
  6. Azure Pipelines menyediakan alur pemula berdasarkan templat Android . Tinjau kode alur.
  7. Pilih Simpan dan jalankan.
  8. 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, , testdan 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 alphabeta, 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.

  1. Unduh keystore Anda dan simpan sebagai file aman di pustaka Azure Pipelines.

  2. Buat variabel untuk keystore.password, key.alias, dan key.password dalam grup variabel.

Di alur YAML Anda:

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