Gradle'ı kullanarak Android uygulamalarını test kullanıcılarına dağıtma


App Distribution Gradle eklentisini kullanarak App Distribution'yı Android derleme işleminize entegre edebilirsiniz. Bu eklenti, test kullanıcılarınızı ve sürüm notlarınızı uygulamanızın Gradle dosyasında belirtmenize olanak tanır. Böylece, uygulamanızın farklı derleme türleri ve varyantları için dağıtımları yapılandırabilirsiniz.

Bu kılavuzda, App Distribution Gradle eklentisini kullanarak APK'ları test kullanıcılarına nasıl dağıtacağınız açıklanmaktadır.

Başlamadan önce

  1. Henüz yapmadıysanız Firebase'i Android projenize ekleyin.

    Başka Firebase ürünü kullanmıyorsanız yalnızca bir proje oluşturmanız ve uygulamanızı kaydetmeniz gerekir. Ancak gelecekte ek ürünler kullanmaya karar verirseniz yukarıda bağlantısı verilen sayfadaki tüm adımları tamamladığınızdan emin olun.

  2. Firebase konsolunun App Distribution sayfasını açın. İstendiğinde Firebase projenizi seçin, uygulama değiştiriciyi kullanarak uygulamanızı seçin ve Başlayın'ı tıklayın.

1. Adım: Android projenizi oluşturma

  1. Kök düzeyindeki (proje düzeyinde) Gradle dosyanızda (<project>/build.gradle.kts veya <project>/build.gradle), App Distribution Gradle eklentisini bağımlılık olarak ekleyin:

    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.5.0" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.3.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.5.0' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.3.0' apply false
    }
  2. Modülünüzün (uygulama düzeyinde) Gradle dosyasında (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle), App Distribution Gradle eklentisini ekleyin:

    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. Bir kurumsal proxy veya güvenlik duvarının arkasındaysanız dağıtımlarınızı Firebase'e yüklemenizi App Distributionsağlayan aşağıdaki Java sistem özelliğini ekleyin:

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

2. adım: Firebase ile kimlik doğrulama

Gradle eklentisini kullanabilmek için önce aşağıdaki yöntemlerden birini kullanarak Firebase projenizle kimliğinizi doğrulamanız gerekir. Varsayılan olarak, başka bir kimlik doğrulama yöntemi kullanılmıyorsa Gradle eklentisi, Firebase CLI'daki kimlik bilgilerini arar.

3. Adım: Dağıtım özelliklerinizi yapılandırma

Modülünüzün (uygulama düzeyinde) Gradle dosyasında (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle), en az bir firebaseAppDistribution bölümü ekleyerek App Distribution yapılandırın.

Örneğin, release derlemesini test kullanıcılarına dağıtmak için aşağıdaki talimatları uygulayın:

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

  // ...
}

Derleme türleri ve ürün türleri için App Distribution özelliğini yapılandırabilirsiniz.

Örneğin, debug ve release derlemelerini "demo" ve "full" ürün varyantlarında dağıtmak için aşağıdaki talimatları uygulayın:

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

  // ...
}

Dağıtımı yapılandırmak için aşağıdaki parametreleri kullanın:

App Distribution Parametre Oluşturma
appId

Uygulamanızın Firebase uygulama kimliği. Yalnızca Google Hizmetleri Gradle eklentisi yüklü değilse gereklidir. Uygulama kimliğini google-services.json dosyasında veya Firebase konsolundaki Genel Ayarlar sayfasında bulabilirsiniz. build.gradle dosyanızdaki değer, google-services eklentisinden çıkan değeri geçersiz kılar.

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

Hizmet hesabınızın özel anahtar JSON dosyasının yolu. Yalnızca hizmet hesabı kimlik doğrulaması kullanıyorsanız gereklidir.

artifactType

Uygulamanızın dosya türünü belirtir. "AAB" veya "APK" olarak ayarlanabilir.

artifactPath

Yüklemek istediğiniz APK veya AAB dosyasının mutlak yolu.

releaseNotes veya releaseNotesFile

Bu derlemeyle ilgili sürüm notları.

Sürüm notlarını doğrudan veya düz metin dosyasının yolunu belirtebilirsiniz.

testers veya testersFile

Derlemeleri dağıtmak istediğiniz test kullanıcılarının e-posta adresleri.

Test kullanıcılarını, e-posta adreslerinin virgülle ayrılmış bir listesi olarak belirtebilirsiniz:

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

Alternatif olarak, virgülle ayrılmış e-posta adresi listesini içeren bir dosyanın yolunu belirtebilirsiniz:

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

Derlemeleri dağıtmak istediğiniz test kullanıcısı grupları (bkz. Test kullanıcılarını yönetme). Gruplar, Firebase App Distribution konsolundaki Test kullanıcıları sekmesinde bulabileceğiniz grup takma adları kullanılarak belirtilir.

Grupları, virgülle ayrılmış grup takma adları listesi olarak belirtebilirsiniz:

groups="qa-team, android-testers"

Alternatif olarak, virgülle ayrılmış grup takma adları listesini içeren bir dosyanın yolunu belirtebilirsiniz:

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

Test çalıştırmak istediğiniz test cihazları Uygulama Testi temsilcisi testleri.

Test cihazlarını, noktalı virgülle ayrılmış bir cihaz özellikleri listesi olarak belirtebilirsiniz:

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

Alternatif olarak, noktalı virgülle ayrılmış cihaz özelliklerinin listesini içeren bir dosyanın yolunu belirtebilirsiniz:

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

Uygulama Testi aracısı testleri sırasında kullanılacak otomatik giriş için kullanıcı adı.

testPassword veya testPasswordFile

Uygulama Testi aracısı testleri sırasında kullanılacak otomatik giriş şifresi.

Alternatif olarak, şifre içeren düz metin dosyasının yolunu belirtebilirsiniz:

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

Uygulama Testi aracısı testleri sırasında kullanılacak otomatik giriş için kullanıcı adı alanının kaynak adı.

testPasswordResource

Uygulama Testi aracısı testleri sırasında kullanılacak otomatik giriş için şifre alanının kaynak adı.

testNonBlocking

Uygulama Testi ajanı testleri çalıştırılırken ayarlanırsa komut, testleri başlatır ve tamamlanmalarını beklemek yerine hemen geri döner. Test sonuçlarını görmek için Firebase konsolunu ziyaret edin. Bu işaret ayarlanmazsa komut, testler tamamlanana kadar engellenir ve testlerden herhangi biri başarısız olursa hata koduyla çıkar.

resultsBucket

Test sonuçlarının saklandığı özel bir Google Cloud Storage (GCS) paketi. Boş bırakılırsa varsayılan paket kullanılır. Paket, faturalandırmanın etkin olduğu bir projeye ait olmalıdır ve paket belirtmek, kullanılan depolama alanı için faturalandırma ücretlerine neden olur.

stacktrace

Kullanıcı istisnaları için yığın izini yazdırır. Bu, sorunları ayıklarken faydalıdır.

4. Adım. Uygulamanızı test kullanıcılarına dağıtma

  1. Son olarak, test uygulamanızı paketlemek ve test kullanıcılarını davet etmek için BUILD-VARIANT ve appDistributionUploadBUILD-VARIANT hedeflerini projenizin Gradle sarmalayıcısıyla oluşturun. Burada BUILD-VARIANT, önceki adımda yapılandırdığınız isteğe bağlı ürün türü ve derleme türüdür. Ürün çeşitleri hakkında daha fazla bilgi için Derleme varyantlarını yapılandırma başlıklı makaleyi inceleyin.

    Örneğin, uygulamanızı release derleme değişkenini kullanarak dağıtmak için aşağıdaki komutu çalıştırın:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    Alternatif olarak, Google Hesabınızla kimlik doğruladıysanız ve Gradle derleme dosyanızda kimlik bilgisi sağlamadıysanız FIREBASE_TOKEN değişkenini ekleyin:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. Ayrıca, build.gradle dosyanızda ayarlanan değerleri --<property-name>=<property-value> biçiminde komut satırı bağımsız değişkenleri ileterek geçersiz kılabilirsiniz. Örneğin:

    • Hata ayıklama derlemesini App Distribution'ya yüklemek için:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • Firebase projenize ek test kullanıcıları davet etmek veya mevcut test kullanıcılarını kaldırmak için:

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

      Firebase projenize bir test kullanıcısı eklendikten sonra bu kullanıcıyı tek tek sürümlere ekleyebilirsiniz. Kaldırılan test kullanıcıları artık projenizdeki sürümlere erişemez ancak bir süre boyunca sürümlerinize erişmeye devam edebilir.

    Test kullanıcılarını --emails yerine --file="/path/to/testers.txt" kullanarak da belirtebilirsiniz.

    appDistributionAddTesters ve appDistributionRemoveTesters görevleri de aşağıdaki argümanları kabul eder:

    • projectNumber: Firebase proje numaranız.

    • serviceCredentialsFile: Google hizmeti kimlik bilgileri dosyanızın yolu. Bu, yükleme işlemi tarafından kullanılan aynı bağımsız değişkendir.

Gradle eklentisi, yayın yüklemesinden sonra aşağıdaki bağlantıları verir. Bu bağlantılar, ikili dosyaları yönetmenize ve test kullanıcılarının ve diğer geliştiricilerin doğru sürümü kullanmasını sağlamanıza yardımcı olur:

  • firebase_console_uri - Tek bir sürümü gösteren Firebase konsolunun bağlantısı. Bu bağlantıyı kuruluşunuzdaki diğer geliştiricilerle paylaşabilirsiniz.
  • testing_uri - Test kullanıcısı deneyiminde (yerleşik Android uygulaması) sürüm notlarını görüntülemelerine ve uygulamayı cihazlarına yüklemelerine olanak tanıyan sürüm bağlantısı. Test kullanıcısının bağlantıyı kullanabilmesi için sürüme erişmesi gerekir.
  • binary_download_uri - Uygulama ikili programını (APK veya AAB dosyası) doğrudan indirip yükleyen imzalı bağlantı. Bağlantının süresi bir saat sonra dolar.

Derlemenizi dağıttıktan sonra 150 gün (beş ay) boyunca App Distribution konsolunun Firebase kontrol panelinde kullanılabilir. Derlemenin geçerlilik süresinin dolmasına 30 gün kaldığında hem konsolda hem de test cihazındaki test kullanıcılarının derleme listesinde geçerlilik süresinin dolma bildirimi gösterilir.

Uygulamayı test etmeye davet edilmemiş test kullanıcıları, başlamak için e-posta davetiyesi alır. Mevcut test kullanıcıları ise yeni bir derlemenin test edilmeye hazır olduğuna dair e-posta bildirimi alır (Test uygulamasının nasıl yükleneceğiyle ilgili talimatlar için test kullanıcısı kurulum kılavuzunu inceleyin). Her test kullanıcısının durumunu (daveti kabul edip etmediği ve uygulamayı indirip indirmediği) Firebase konsolunda izleyebilirsiniz.

Test kullanıcılarının, uygulamayı test etme davetini 30 gün içinde kabul etmesi gerekir. Aksi takdirde davetin süresi dolar. Bir davetin süresi dolmasına 5 gün kaldığında, sürümdeki test kullanıcısının yanında Firebase konsolunda bir son kullanma tarihi bildirimi gösterilir. Davetiye, test kullanıcısı satırındaki açılır menü kullanılarak yeniden gönderilerek yenilenebilir.

Sonraki adımlar