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 APK kepada penguji menggunakan plugin Gradle App Distribution.

Sebelum memulai

Tambahkan Firebase ke project Android jika belum melakukannya.

Jika tidak menggunakan produk Firebase lainnya, Anda hanya perlu membuat project dan mendaftarkan aplikasi. Namun, jika memutuskan untuk menggunakan produk tambahan di masa mendatang, pastikan untuk menyelesaikan semua langkah di halaman yang tertaut di atas.

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:

    KotlinGroovy
    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.1.1" apply false
    }
    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.1.1' 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:

    KotlinGroovy
    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")
    }
    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.

Dengan mengautentikasi dengan akun layanan, Anda dapat menggunakan plugin secara fleksibel dengan sistem continuous integration (CI). Ada dua cara untuk memberikan kredensial akun layanan:

  • Teruskan file kunci akun layanan Anda ke build.gradle. Metode ini cocok jika sudah ada file kunci akun layanan di lingkungan build Anda.
  • Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS agar mengarah ke file kunci akun layanan Anda. Anda dapat memilih metode ini jika sudah memiliki Kredensial Default Aplikasi (ADC) yang dikonfigurasi untuk layanan Google lainnya (misalnya, Google Cloud).

Untuk mengautentikasi menggunakan kredensial akun layanan:

  1. Di konsol Google Cloud, pilih project Anda dan buat akun layanan baru.
  2. Tambahkan peran Firebase App Distribution Admin.
  3. Buat kunci json pribadi dan pindahkan kunci ke lokasi yang dapat diakses oleh lingkungan build Anda. Pastikan Anda menyimpan file ini di tempat yang aman, karena file tersebut akan memberi administrator akses ke App Distribution dalam project Firebase Anda.
  4. Lewati langkah ini jika Anda membuat aplikasi setelah 20 September 2019: Di konsol API Google, aktifkan API Firebase App Distribution. Saat diminta, pilih project yang bernama sama seperti project Firebase Anda.
  5. Berikan atau temukan kredensial akun layanan Anda:

    1. Untuk meneruskan kunci akun layanan Anda ke Gradle, pada file build.gradle, setel properti serviceCredentialsFile ke file JSON kunci pribadi.
    2. Untuk menemukan kredensial Anda dengan ADC, setel variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur untuk file JSON kunci pribadi. Contoh:

       export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
      

      Untuk mengetahui informasi selengkapnya tentang autentikasi dengan ADC, baca Memberikan kredensial ke aplikasi.

Baca artikel Login dengan Firebase CLI untuk mendapatkan petunjuk mengenai cara mengautentikasi project.

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:

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

android {

  // ...

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

  // ...
}
android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="APK"
              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:

KotlinGroovy
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"
          }
      }
  }

  // ...
}
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 assembleRelease 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 assembleRelease 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="APK"
    • 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