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


App Distribution Gradle eklentisini kullanarak App Distribution'ü Android derleme sürecinize entegre edebilirsiniz. Bu eklenti, uygulamanızın Gradle dosyasında test kullanıcılarınızı ve sürüm notlarınızı 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 eklentisi kullanılarak Android App Bundle'ların (AAB'ler) test kullanıcılarına nasıl dağıtılacağı açıklanmaktadır.

App Distribution, yüklediğiniz AAB'leri işlemek ve test kullanıcılarınızın cihaz yapılandırmaları için optimize edilmiş APK'lar sunmak amacıyla Google Play'ın dahili uygulama paylaşım hizmetiyle entegre olur. AAB'leri dağıtarak şunları yapabilirsiniz:

  • Test kullanıcılarınızın cihazlarına göre optimize edilmiş optimize APK'lar (Google Play tarafından yayınlanır) çalıştırın.

  • Cihazlara özgü sorunları tespit edip hata ayıklayın.

  • Play Özellik Dağıtımı ve Play Asset Delivery gibi uygulama paketi özelliklerini test edin.

  • Test kullanıcılarınız için indirmelerin boyutunu küçültün.

Gerekli izinler

App Distribution'e AAB yüklemek için Firebase uygulamanızı Google Play'deki bir uygulamaya bağlamanız gerekir. Bu işlemleri gerçekleştirmek için gerekli erişim düzeyine sahip olmanız gerekir.

Gerekli Firebase erişiminiz yoksa bir Firebase proje sahibinden Firebase konsolu IAM ayarlarını kullanarak size uygun rolü atamasını isteyebilirsiniz. Sahibi bulma veya atama dahil olmak üzere Firebase projenize erişme hakkında sorularınız varsa "İzinler ve Firebase projelerine erişim" ile ilgili SSS bölümünü inceleyin.

Aşağıdaki tablo, Firebase uygulamasını Google Play'teki bir uygulamaya bağlama ve AAB yükleme için geçerlidir.

Firebase konsolunda işlem Gerekli IAM izni Varsayılan olarak gerekli izinleri içeren IAM rolleri Gerekli ek roller
Google Play'teki bir uygulamaya Firebase uygulaması bağlama firebase.playLinks.update Aşağıdaki rollerden biri: Google Play geliştirici hesabına Yönetici olarak erişim
App Distribution'e AAB yükleme firebaseappdistro.releases.update Aşağıdaki rollerden biri: ––

Başlamadan önce

  1. Henüz yapmadıysanız Firebase'i Android projenize ekleyin. Bu iş akışı sonunda Firebase projenizde bir Firebase Android uygulaması olacak.

    Başka Firebase ürünü kullanmıyorsanız tek yapmanız gereken bir proje oluşturmak ve uygulamanızı kaydetmektir. Başka ürünler kullanmaya karar verirseniz Android projenize Firebase ekleme başlıklı makaledeki tüm adımları tamamladığınızdan emin olun.

  2. Google Play'e Firebase bağlantısı oluşturmak ve AAB'leri yüklemek için uygulamanızın şu koşulları karşıladığından emin olun:

    • Hem Google Play'deki uygulama hem de Firebase Android uygulaması aynı paket adı kullanılarak kaydedilmelidir.

    • Google Play'deki uygulama, uygulama kontrol panelinde ayarlanmalı ve Google Play kanallarından birine (Dahili test, Kapalı test, Açık test veya Üretim) dağıtılmalıdır.

    • Uygulamanın Google Play'deki incelemesi tamamlanmış ve uygulama yayınlanmış olmalıdır. Uygulama durumu sütununda şu durumlardan biri bulunuyorsa uygulamanız yayınlanmış demektir: Dahili test (Taslak dahili test değil), Kapalı test, Açık test veya Üretim.

  3. Firebase Android uygulamanızı Google Play geliştirici hesabınıza bağlayın:

    1. Firebase konsolunda Proje ayarlarınıza gidin ve Entegrasyonlar sekmesini seçin.

    2. Google Play kartında Bağlan'ı tıklayın.
      Google Play bağlantılarınız zaten varsa bunun yerine Yönet'i tıklayın.

    3. App Distribution entegrasyonunu etkinleştirmek ve Google Play'e hangi Firebase Android uygulamalarının bağlanacağını seçmek için ekrandaki talimatları uygulayın.

    Google Play'e bağlama hakkında daha fazla bilgi edinin.

1. Adım. Android projenizi oluşturma

  1. Kök düzeyindeki (proje düzeyindeki) Gradle dosyanıza (<project>/build.gradle.kts veya <project>/build.gradle) App Distribution Gradle eklentisini bağımlı 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.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. Modül (uygulama düzeyi) Gradle dosyanıza (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. Kurumsal bir proxy veya güvenlik duvarının arkasındaysanız App Distribution'nin dağıtımlarınızı Firebase'e yüklemesini sağ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 biriyle Firebase projenizle kimlik doğrulamanız gerekir. Gradle eklentisi, varsayılan olarak başka bir kimlik doğrulama yöntemi kullanılmazsa Firebase CLI'den kimlik bilgilerini arar.

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

Modül (uygulama düzeyi) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle), en az bir firebaseAppDistribution bölümü ekleyerek App Distribution'i 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 = "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"
          }
      }
  }

  // ...
}

App Distribution öğesini derleme türleri ve ürün varyantları için yapılandırabilirsiniz.

Örneğin, debug ve release derlemelerini "demo" ve "tam" ürün varyasyonları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 Oluşturma Parametreleri
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 eklentisinin çıkış değerini geçersiz kılar.

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

Hizmet hesabı özel anahtar JSON dosyanızı 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 derlemenin sürüm notları.

Doğrudan sürüm notlarını 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ı, virgülle ayrılmış bir e-posta adresi listesi olarak belirtebilirsiniz:

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

Dilerseniz virgülle ayrılmış bir e-posta adresi listesi içeren dosyanın yolunu da belirtebilirsiniz:

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

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

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

groups="qa-team, android-testers"

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

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

Aşağıdaki dağıtım türleri otomatik test aracı beta özelliğinin bir parçasıdır.

Derlemeleri dağıtmak istediğiniz test cihazları (Otomatik testler bölümüne bakın).

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

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

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

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

Otomatik testler sırasında kullanılacak otomatik giriş için kullanıcı adı.

testPassword veya testPasswordFile

Otomatik testler sırasında kullanılacak otomatik giriş şifresi.

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

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

Otomatik testler sırasında kullanılacak otomatik giriş için kullanıcı adı alanının kaynak adı.

testPasswordResource

Otomatik testler sırasında kullanılacak otomatik giriş için şifre alanının kaynak adı.

testNonBlocking

Otomatik testleri asynkron olarak çalıştırın. Otomatik test sonuçları için Firebase konsolunu ziyaret edin.

stacktrace

Kullanıcı istisnaları için yığın izlemeyi yazdırır. Bu, sorunların giderilmesinde 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 derleyin. Burada BUILD-VARIANT, önceki adımda yapılandırdığınız isteğe bağlı ürün çeşidi ve derleme türüdür. Ürün varyantları hakkında daha fazla bilgi için Derleme varyantlarını yapılandırma başlıklı makaleyi inceleyin.

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

    ./gradlew bundleRelease appDistributionUploadRelease
    

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

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

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

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
      
    • Daha fazla test kullanıcısı davet etmek veya mevcut test kullanıcılarını Firebase projenizden 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 eklenen test kullanıcılarını ayrı ayrı 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 aşağıdaki bağımsız değişkenleri de kabul eder:

    • projectNumber: Firebase proje numaranız.

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

Gradle eklentisi, sürüm yüklendikten sonra aşağıdaki bağlantıları oluşturur. 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ına 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ı deneyimindeki (Android yerel uygulaması) sürümün bağlantısı. Bu bağlantı, test kullanıcılarının sürüm notlarını görüntülemesine ve uygulamayı cihazlarına yüklemesine olanak tanır. Test kullanıcısının bağlantıyı kullanabilmesi için sürüme erişmesi gerekir.
  • binary_download_uri: Uygulama ikilisini (APK veya AAB dosyası) doğrudan indirip yükleyen imzalı bir bağlantıdır. Bağlantının süresi bir saat sonra dolar.

Derlemeniz dağıtıldıktan sonra 150 gün (beş ay) boyunca Firebase konsolunun App Distribution kontrol panelinde kullanılabilir. Derlemenin geçerlilik süresinin sona ermesine 30 gün kala hem konsolda hem de test kullanıcınızın test cihazındaki derleme listesinde bir geçerlilik süresi sonu bildirimi gösterilir.

Uygulamayı test etmeye davet edilmemiş test kullanıcılarına, teste başlamak için e-posta davetiyeleri gönderilir. Mevcut test kullanıcılarına ise yeni bir derlemenin teste hazır olduğuyla ilgili e-posta bildirimleri gönderilir (Test uygulamasını yükleme talimatları için test kullanıcısı kurulum kılavuzunu okuyun). Her test kullanıcısının durumunu (daveti kabul edip etmediğini ve uygulamayı indirip indirmediğini) Firebase konsolunda izleyebilirsiniz.

Test kullanıcılarının, uygulamayı test etme davetini kabul etmek için 30 günü vardır. Davetin geçerlilik süresi 5 gün içinde sona erecekse Firebase konsolunda, sürümdeki test kullanıcısının yanında bir geçerlilik bitiş bildirimi görünür. Davet, test kullanıcısı satırındaki açılır menüyü kullanarak yeniden gönderilerek uzatılabilir.

Sonraki adımlar