Распространяйте приложения Android среди тестировщиков с помощью Gradle


You can integrate App Distribution into your Android build process using the App Distribution Gradle plugin. The plugin lets you specify your testers and release notes in your app's Gradle file, letting you configure distributions for different build types and variants of your app.

В этом руководстве описывается, как распространять пакеты приложений Android (AAB) среди тестировщиков с помощью плагина App Distribution Gradle.

App Distribution интегрируется с внутренней службой обмена приложениями Google Play для обработки загружаемых вами файлов AAB и предоставления APK-файлов, оптимизированных для конфигураций устройств ваших тестировщиков. Распространение файлов AAB позволяет выполнять следующие действия:

  • Запускайте оптимизированные APK-файлы (доступные в Google Play), оптимизированные для устройств ваших тестировщиков.

  • Выявление и устранение проблем, специфичных для конкретного устройства.

  • Протестируйте функции пакета приложения, такие как Play Feature Delivery и Play Asset Delivery .

  • Уменьшите размер загружаемых файлов для ваших тестировщиков.

Необходимые разрешения

Для загрузки AAB в App Distribution необходимо связать ваше приложение Firebase с приложением в Google Play . Для выполнения этих действий у вас должен быть необходимый уровень доступа.

Если у вас нет необходимого доступа к Firebase, вы можете попросить владельца проекта Firebase назначить вам соответствующую роль через настройки IAM в консоли Firebase . Если у вас есть вопросы о доступе к вашему проекту Firebase, включая поиск или назначение владельца, ознакомьтесь с разделом часто задаваемых вопросов «Разрешения и доступ к проектам Firebase» .

Приведенная ниже таблица относится к связыванию приложения Firebase с приложением в Google Play , а также к загрузке файлов AAB.

Действие в консоли Firebase Требуются разрешения IAM. Роли IAM, которые по умолчанию включают необходимые разрешения. Дополнительные необходимые роли
Свяжите приложение Firebase с приложением в Google Play firebase.playLinks.update Одна из следующих ролей: Доступ к учетной записи разработчика Google Play в качестве администратора.
Загрузите AAB в App Distribution firebaseappdistro.releases.update Одна из следующих ролей: ––

Прежде чем начать

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android . В результате выполнения этого процесса у вас будет приложение Firebase для Android в вашем проекте Firebase.

    Если вы не используете другие продукты Firebase, вам нужно только создать проект и зарегистрировать приложение. Если вы решите использовать дополнительные продукты, обязательно выполните все шаги, описанные в разделе «Добавление Firebase в ваш проект Android» .

  2. Для создания ссылки Firebase на Google Play и загрузки файлов AAB убедитесь, что ваше приложение соответствует следующим требованиям:

    • И приложение в Google Play, и приложение Firebase для Android зарегистрированы с использованием одного и того же имени пакета.

    • Приложение в Google Play устанавливается на панели управления приложениями и распространяется по одному из направлений Google Play (внутреннее тестирование, закрытое тестирование, открытое тестирование или производственная среда).

    • Проверка приложения в Google Play завершена, и приложение опубликовано. Ваше приложение опубликовано, если в столбце «Статус приложения» отображается один из следующих статусов: Внутреннее тестирование (не черновик внутреннего тестирования), Закрытое тестирование, Открытое тестирование или Производственная версия.

  3. Свяжите ваше Android-приложение Firebase с вашей учетной записью разработчика Google Play:

    1. В консоли Firebase перейдите в свой настройках проекта выберите вкладку «Интеграции» .

    2. На карточке Google Play нажмите «Ссылка» .
      Если у вас уже есть ссылки на Google Play, нажмите «Управление» .

    3. Следуйте инструкциям на экране, чтобы включить интеграцию App Distribution и выбрать, какие приложения Firebase для Android следует связать с Google Play.

    Узнайте больше о создании ссылок на Google Play .

Шаг 1. Настройте свой проект Android.

  1. В корневом (проектном) файле Gradle ( <project>/build.gradle.kts или <project>/build.gradle ) добавьте плагин App Distribution Gradle в качестве зависимости:

    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.4" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.2.1" 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.4' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.2.1' apply false
    }
  2. В файл Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте плагин 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. Если вы используете корпоративный прокси-сервер или брандмауэр, добавьте следующее системное свойство Java , которое позволит App Distribution загружать ваши дистрибутивы в Firebase:

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

Шаг 2. Аутентификация с помощью Firebase.

Before you can use the Gradle plugin, you must first authenticate with your Firebase project in one of the following ways. By default, the Gradle plugin looks for credentials from the Firebase CLI if no other authentication method is used.

Шаг 3. Настройте свойства дистрибутива.

In your module (app-level) Gradle file (usually <project>/<app-module>/build.gradle.kts or <project>/<app-module>/build.gradle ), configure App Distribution by adding at least one firebaseAppDistribution section.

Например, чтобы распространить release сборку среди тестировщиков, следуйте этим инструкциям:

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 для типов сборок и вариантов продуктов .

Например, для распространения debug и release сборок в вариантах «демо» и «полная версия» продукта следуйте этим инструкциям:

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

  // ...
}

Для настройки дистрибутива используйте следующие параметры:

Параметры сборки App Distribution
appId

Your app's Firebase App ID. Required only if you don't have the Google Services Gradle plugin installed. You can find the App ID in the google-services.json file or in the Firebase console on the General Settings page . The value in your build.gradle file overrides the value output from the google-services plugin.

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

Путь к JSON-файлу закрытого ключа вашей учетной записи службы. Требуется только в том случае, если вы используете аутентификацию по учетной записи службы.

artifactType

Указывает тип файла вашего приложения. Может быть установлено значение "AAB" или "APK" .

artifactPath

Укажите абсолютный путь к файлу APK или AAB, который вы хотите загрузить.

releaseNotes или releaseNotesFile

Примечания к выпуску этой сборки.

Вы можете указать либо непосредственно примечания к выпуску, либо путь к текстовому файлу.

testers or testersFile

Адреса электронной почты тестировщиков, которым вы хотите распространить сборки.

Список тестировщиков можно указать в виде списка адресов электронной почты, разделенных запятыми:

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

Или же вы можете указать путь к файлу, содержащему список адресов электронной почты, разделенных запятыми:

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

Группы тестировщиков, которым вы хотите распределить сборки (см. раздел «Управление тестировщиками »). Группы указываются с помощью... псевдонимы групп который вы можете найти на вкладке «Тестировщики» в консоли Firebase App Distribution .

Группы можно указать в виде списка псевдонимов групп, разделенных запятыми:

groups="qa-team, android-testers"

Или же вы можете указать путь к файлу, содержащему список псевдонимов групп, разделенных запятыми:

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

Тестовые устройства, на которых вы хотите запустить тесты агента тестирования приложений .

Список тестовых устройств можно указать в виде перечня характеристик, разделенных точкой с запятой:

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

Или же вы можете указать путь к файлу, содержащему список технических характеристик устройства, разделенных точкой с запятой:

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

Имя пользователя для автоматического входа в систему, используемое во время тестирования агентом App Testing .

testPassword или testPasswordFile

Пароль для автоматического входа в систему, используемый во время тестирования агентом приложения .

Или же вы можете указать путь к текстовому файлу, содержащему пароль:

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

Имя ресурса для поля имени пользователя, используемого для автоматического входа в систему во время тестирования агентом App Testing.

testPasswordResource

Имя ресурса для поля пароля, используемого для автоматического входа в систему во время тестирования агентом App Testing.

testNonBlocking

Если этот флаг установлен при запуске тестов агента App Testing , команда запустит тесты и немедленно вернет управление, не дожидаясь их завершения. Чтобы просмотреть результаты тестов, перейдите в консоль Firebase. Если этот флаг не установлен, команда будет блокироваться до завершения тестов и завершится с кодом ошибки, если какой-либо из тестов завершится неудачей.

stacktrace

Выводит трассировку стека для пользовательских исключений. Это полезно при отладке проблем.

Step 4. Distribute your app to testers

  1. Наконец, чтобы упаковать тестовое приложение и пригласить тестировщиков, соберите целевые объекты. BUILD-VARIANT and appDistributionUpload BUILD-VARIANT with your project's Gradle wrapper, where BUILD-VARIANT is the optional product flavor and build type you configured in the previous step. For more information about product flavors, see Configure build variants .

    Например, чтобы распространить ваше приложение, используя вариант сборки release , выполните следующую команду:

    ./gradlew bundleRelease appDistributionUploadRelease
    

    Или, если вы авторизовались с помощью своей учетной записи Google и не указали учетные данные в файле сборки Gradle, добавьте переменную FIREBASE_TOKEN :

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew bundleRelease appDistributionUploadRelease
    
  2. Вы также можете переопределить значения, заданные в файле build.gradle , передав аргументы командной строки в формате --<property-name>=<property-value> . Например:

    • To upload a debug build to App Distribution :

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="AAB"
    • Чтобы пригласить дополнительных тестировщиков или удалить существующих из вашего проекта Firebase:

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

      Once a tester has been added to your Firebase project, you can add them to individual releases. Testers who are removed will no longer have access to releases in your project, but may still retain access to your releases for a window of time.

    Также можно указать тестировщиков, используя --file="/path/to/testers.txt" вместо --emails ".

    Задачи appDistributionAddTesters и appDistributionRemoveTesters также принимают следующие аргументы:

    • projectNumber : Your Firebase project number.

    • serviceCredentialsFile : Путь к файлу с учетными данными вашей службы Google. Это тот же аргумент, который используется в действии загрузки.

После загрузки релиза плагин Gradle выводит следующие ссылки. Эти ссылки помогают управлять бинарными файлами и гарантируют, что тестировщики и другие разработчики получат правильный релиз:

  • firebase_console_uri - A link to the Firebase console displaying a single release. You can share this link with other developers in your org.
  • testing_uri - A link to the release in the tester experience (Android native app) that lets testers view release notes and install the app onto their device. The tester needs access to the release in order to use the link.
  • binary_download_uri - A signed link that directly downloads and installs the app binary (APK or AAB file). The link expires after one hour.

После распространения вашей сборки она становится доступной на панели App Distribution в консоли Firebase в течение 150 дней (пяти месяцев). Когда до истечения срока действия сборки останется 30 дней, уведомление об истечении срока действия появится как в консоли, так и в списке сборок вашего тестировщика на его тестовом устройстве.

Тестировщики, не получившие приглашение к тестированию приложения, получают приглашения по электронной почте для начала работы, а существующие тестировщики получают уведомления по электронной почте о готовности новой сборки к тестированию (инструкции по установке тестового приложения см. в руководстве по настройке тестировщика ). Вы можете отслеживать статус каждого тестировщика — принял ли он приглашение и скачал ли приложение — в консоли Firebase .

У тестировщиков есть 30 дней, чтобы принять приглашение на тестирование приложения, после чего оно истекает. За 5 дней до истечения срока действия приглашения в консоли Firebase рядом с именем тестировщика в релизе появляется уведомление об истечении срока действия. Приглашение можно продлить, отправив его повторно с помощью выпадающего меню в строке с именем тестировщика.

Следующие шаги