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:

    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 = "APK"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

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:

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 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