Mendistribusikan aplikasi Android kepada penguji menggunakan Gradle


Anda dapat mengintegrasikan App Distribution ke dalam proses build Android menggunakan plugin Gradle App Distribution. Dengan plugin ini, Anda dapat menentukan penguji dan catatan rilis di file Gradle aplikasi sehingga dapat mengonfigurasi distribusi untuk beragam jenis build dan varian aplikasi.

Panduan ini menjelaskan cara mendistribusikan Android App Bundle (AAB) kepada penguji menggunakan plugin Gradle App Distribution.

App Distribution terintegrasi dengan layanan fitur berbagi aplikasi internal Google Play untuk memproses AAB yang Anda upload dan menyalurkan APK yang dioptimalkan untuk konfigurasi perangkat penguji. Mendistribusikan AAB memungkinkan Anda melakukan hal berikut:

  • Menjalankan APK (yang disalurkan oleh Google Play) yang telah dioptimalkan untuk perangkat penguji Anda.

  • Menemukan dan mendebug masalah terkait perangkat.

  • Menguji fitur-fitur app bundle seperti Play Feature Delivery dan Play Asset Delivery

  • Mengurangi ukuran download untuk penguji Anda.

Izin yang diperlukan

Untuk mengupload AAB ke App Distribution, Anda harus menautkan aplikasi Firebase ke aplikasi di Google Play. Anda harus memiliki tingkat akses yang diperlukan untuk melakukan tindakan ini.

Jika tidak memiliki akses Firebase yang diperlukan, Anda dapat meminta Pemilik project Firebase untuk menetapkan peran yang berlaku melalui setelan IAM Firebase console. Jika Anda memiliki pertanyaan terkait cara mengakses project Firebase, termasuk cara menemukan atau menetapkan Pemilik, pelajari FAQ tentang "izin dan akses ke project Firebase".

Tabel berikut berlaku untuk menautkan aplikasi Firebase ke aplikasi di Google Play, serta mengupload AAB.

Tindakan di Firebase console Izin IAM yang diperlukan Peran IAM yang menyertakan izin yang diperlukan secara default Peran tambahan yang diperlukan
Menautkan aplikasi Firebase ke aplikasi di Google Play firebase.playLinks.update Salah satu dari peran berikut: Akses ke akun developer Google Play sebagai Admin
Mengupload AAB ke App Distribution firebaseappdistro.releases.update Salah satu dari peran berikut: ––

Sebelum memulai

  1. Tambahkan Firebase ke project Android jika belum melakukannya. Di akhir alur kerja ini, Anda akan memiliki Aplikasi Android Firebase di project Firebase.

    Jika tidak menggunakan produk Firebase lainnya, Anda hanya perlu membuat project dan mendaftarkan aplikasi. Jika Anda memutuskan untuk menggunakan produk tambahan, pastikan untuk menyelesaikan semua langkah di Menambahkan Firebase ke project Android Anda.

  2. Untuk membuat link Firebase ke Google Play dan mengupload AAB, pastikan aplikasi Anda memenuhi persyaratan berikut:

    • Aplikasi di Google Play dan aplikasi Android Firebase terdaftar menggunakan nama paket yang sama.

    • Aplikasi di Google Play disiapkan di dasbor aplikasi dan didistribusikan ke salah satu jalur Google Play (Pengujian internal, Pengujian tertutup, Pengujian terbuka, atau Produksi).

    • Peninjauan aplikasi di Google Play selesai dan aplikasi sudah dipublikasikan. Aplikasi Anda dianggap sudah dipublikasikan jika kolom Status aplikasi menampilkan salah satu status berikut: Pengujian internal (bukan Draf pengujian internal), Pengujian tertutup, Pengujian terbuka, atau Produksi.

  3. Tautkan Aplikasi Android Firebase ke akun developer Google Play Anda:

    1. Di Firebase console, buka Project settings, lalu pilih tab Integrations.

    2. Di kartu Google Play, klik Link.
      Jika Anda sudah memiliki Aplikasi Android Firebase yang tertaut ke Google Play, klik Manage.

    3. Ikuti petunjuk di layar untuk mengaktifkan App Distribution dan memilih Aplikasi Android Firebase yang akan ditautkan ke Google Play.

    Pelajari lebih lanjut cara menautkan ke Google Play

Langkah 1. Menyiapkan project Android

  1. Dalam file Gradle level root (level project) (<project>/build.gradle.kts atau <project>/build.gradle), tambahkan plugin Gradle App Distribution sebagai dependensi:

    Kotlin

    plugins {
        // ...
        id("com.android.application") version "7.3.0" apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id("com.google.gms.google-services") version "4.4.2" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.0.0" apply false
    }
    

    Groovy

    plugins {
        // ...
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.4.2' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.0.0' apply false
    }
    
  2. Dalam file Gradle modul (level aplikasi) (biasanya <project>/<app-module>/build.gradle.kts atau <project>/<app-module>/build.gradle), tambahkan plugin Gradle App Distribution:

    Kotlin

    plugins {
      id("com.android.application")
    
      // Make sure that you have the Google services Gradle plugin
      id("com.google.gms.google-services")
    
      // Add the App Distribution Gradle plugin
      id("com.google.firebase.appdistribution")
    }
    

    Groovy

    plugins {
      id 'com.android.application'
    
      // Make sure that you have the Google services Gradle plugin
      id 'com.google.gms.google-services'
    
      // Add the App Distribution Gradle plugin
      id 'com.google.firebase.appdistribution'
    }
    
  3. Jika Anda menggunakan proxy atau firewall perusahaan, tambahkan properti sistem Java yang mengaktifkanApp Distribution untuk mengupload distribusi ke Firebase:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

Langkah 2. Melakukan autentikasi dengan Firebase

Agar dapat menggunakan plugin Gradle, Anda harus terlebih dahulu melakukan autentikasi dengan project Firebase dengan salah satu cara berikut. Secara default, plugin Gradle mencari kredensial dari Firebase CLI jika tidak ada metode autentikasi lain yang digunakan.

Langkah 3. Konfigurasikan properti distribusi Anda

Dalam file Gradle modul (level aplikasi) (biasanya <project>/<app-module>/build.gradle.kts atau <project>/<app-module>/build.gradle), konfigurasikan App Distribution dengan menambahkan setidaknya satu bagian firebaseAppDistribution.

Misalnya, untuk mendistribusikan build release kepada penguji, ikuti petunjuk berikut:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("release") {
          firebaseAppDistribution {
              artifactType = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Anda dapat mengonfigurasi App Distribution untuk jenis build dan ragam produk.

Misalnya, untuk mendistribusikan build debug dan release dalam ragam produk "demo" "dan" "lengkap", ikuti petunjuk berikut:

Kotlin

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("debug") {...}
      getByName("release") {...}
  }

  flavorDimensions += "version"
  productFlavors {
      create("demo") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for demo version"
              testers = "demo@testers.com"
          }
      }
      create("full") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for full version"
              testers = "full@testers.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      debug {...}
      release {...}
  }

  flavorDimensions "version"
  productFlavors {
      demo {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for demo version"
              testers="demo@testers.com"
          }
      }
      full {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for full version"
              testers="full@testers.com"
          }
      }
  }

  // ...
}

Gunakan parameter berikut untuk mengonfigurasi distribusi:

Parameter Build App Distribution
appId

ID Aplikasi Firebase aplikasi Anda. Diperlukan hanya jika Anda tidak menginstal plugin Gradle Layanan Google. Anda dapat menemukan ID Aplikasi di file google-services.json atau di Firebase console di halaman Setelan Umum. Nilai dalam file build.gradle Anda menggantikan output nilai dari plugin google-services.

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

Jalur ke file JSON kunci pribadi akun layanan Anda. Diperlukan hanya jika Anda menggunakan autentikasi akun layanan.

artifactType

Menentukan jenis file aplikasi Anda. Dapat disetel ke "AAB" atau "APK".

artifactPath

Jalur absolut ke file APK atau AAB yang akan diupload.

releaseNotes atau releaseNotesFile

Catatan rilis untuk build ini.

Anda dapat menentukan catatan rilis secara langsung atau menentukan jalur ke file teks biasa.

testers atau testersFile

Alamat email penguji yang akan didistribusikan build.

Anda dapat menentukan penguji sebagai daftar alamat email yang dipisahkan dengan koma:

testers="ali@example.com, bri@example.com, cal@example.com"

Atau, Anda dapat menentukan jalur ke file yang berisi daftar alamat email yang dipisahkan dengan koma:

testersFile="/path/to/testers.txt"
groups atau groupsFile

Grup penguji yang akan didistribusikan build (lihat Mengelola penguji). Grup ditentukan menggunakan alias grup, yang dapat Anda temukan di tab Penguji di konsol Firebase App Distribution.

Anda dapat menentukan grup sebagai daftar alias grup yang dipisahkan koma:

groups="qa-team, android-testers"

Atau, Anda dapat menentukan lokasi ke file yang berisi daftar alias grup yang dipisahkan koma:

groupsFile="/path/to/tester-groups.txt"
testDevices atau testDevicesFile

Jenis distribusi berikut adalah bagian dari Fitur beta penguji otomatis.

Perangkat pengujian tempat Anda ingin mendistribusikan build (lihat Pengujian otomatis).

Anda dapat menentukan perangkat pengujian sebagai daftar spesifikasi perangkat yang dipisahkan titik koma:

testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

Atau, Anda dapat menentukan jalur ke file yang berisi daftar spesifikasi perangkat yang dipisahkan titik koma:

testDevicesFile="/path/to/testDevices.txt"
testUsername

Nama pengguna untuk login otomatis yang akan digunakan selama pengujian otomatis.

testPassword atau testPasswordFile

Sandi untuk login otomatis yang akan digunakan selama pengujian otomatis.

Atau, Anda dapat menentukan jalur ke file teks biasa yang berisi sandi:

testPasswordFile="/path/to/testPassword.txt"
testUsernameResource

Nama resource pada kolom nama pengguna untuk login otomatis yang akan digunakan selama pengujian otomatis.

testPasswordResource

Nama resource pada kolom sandi untuk login otomatis yang akan digunakan selama pengujian otomatis.

testNonBlocking

Jalankan pengujian otomatis secara asinkron. Buka Firebase console untuk melihat hasil pengujian otomatis.

stacktrace

Mencetak stacktrace untuk pengecualian pengguna. Hal ini berguna saat men-debug masalah.

Langkah 4. Distribusikan aplikasi kepada penguji

  1. Terakhir, untuk memaketkan aplikasi pengujian dan mengundang penguji, build target BUILD-VARIANT dan appDistributionUploadBUILD-VARIANT dengan wrapper Gradle project. Dalam hal ini, BUILD-VARIANT adalah ragam produk dan jenis build opsional yang Anda konfigurasikan pada langkah sebelumnya. Untuk mengetahui informasi selengkapnya tentang ragam produk, baca artikel Mengonfigurasi varian build.

    Misalnya, untuk mendistribusikan aplikasi menggunakan varian build release, jalankan perintah berikut:

    ./gradlew bundleRelease appDistributionUploadRelease
    

    Atau, jika Anda melakukan autentikasi dengan Akun Google dan tidak memberikan kredensial di file build Gradle, sertakan variabel FIREBASE_TOKEN:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew bundleRelease appDistributionUploadRelease
    
  2. Anda juga dapat mengganti nilai yang ditetapkan dalam file build.gradle dengan meneruskan argumen command line dalam bentuk --<property-name>=<property-value>. Contoh:

    • Untuk mengupload build debug ke App Distribution:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
      
    • Untuk mengundang penguji tambahan atau menghapus penguji yang sudah ada dari project Firebase Anda:

      ./gradlew appDistributionAddTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      ./gradlew appDistributionRemoveTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      

      Setelah penguji ditambahkan ke project Firebase, Anda dapat menambahkannya ke rilis individual. Penguji yang dihapus tidak akan lagi memiliki akses ke rilis di project Anda, tetapi masih dapat mempertahankan akses ke rilis Anda selama jangka waktu tertentu.

    Anda juga dapat memilih penguji menggunakan --file="/path/to/testers.txt", bukan --emails.

    Tugas appDistributionAddTesters dan appDistributionRemoveTesters juga menerima argumen berikut:

    • projectNumber: Nomor project Firebase Anda.

    • serviceCredentialsFile: Jalur ke file kredensial layanan Google Anda. Argumen ini sama dengan yang digunakan oleh tindakan upload.

Plugin Gradle menampilkan link berikut setelah upload rilis. Link ini membantu Anda mengelola biner dan memastikan bahwa penguji serta developer lain memiliki rilis yang tepat:

  • firebase_console_uri - Link ke Firebase console yang menampilkan satu rilis. Anda dapat membagikan link ini kepada developer lain di organisasi Anda.
  • testing_uri - Link ke rilis dalam pengalaman penguji (aplikasi native Android) yang memungkinkan penguji melihat catatan rilis dan menginstal aplikasi ke perangkat mereka. Penguji memerlukan akses ke rilis untuk menggunakan link.
  • binary_download_uri - Link bertanda tangan yang langsung mendownload dan menginstal biner aplikasi (file APK atau AAB). Masa berlaku link akan berakhir setelah satu jam.

Setelah didistribusikan, build Anda akan tersedia di dasbor App Distribution di Firebase console selama 150 hari (lima bulan). Saat masa berlaku build akan berakhir dalam 30 hari, notifikasi akhir masa berlakunya akan muncul di konsol dan di daftar build penguji pada perangkat pengujinya.

Penguji yang belum diundang untuk menguji aplikasi akan menerima undangan email untuk memulai, dan penguji yang ada akan menerima notifikasi email bahwa ada versi build baru yang siap diuji (baca panduan penyiapan penguji untuk mengetahui petunjuk cara menginstal aplikasi pengujian). Anda dapat memantau status setiap penguji, apakah mereka sudah menerima undangan dan mendownload aplikasi, di Firebase console.

Penguji memiliki waktu 30 hari untuk menerima undangan pengujian aplikasi sebelum masa berlakunya habis. Saat masa berlaku undangan akan berakhir dalam 5 hari, notifikasi habisnya masa berlaku akan muncul di Firebase console di samping penguji pada rilis. Undangan dapat diperpanjang dengan pengiriman ulang menggunakan menu drop-down pada baris penguji.

Langkah berikutnya