Вы можете интегрировать App Distribution в процесс сборки Android с помощью плагина App Distribution Gradle. Плагин позволяет указать тестировщиков и примечания к выпуску в файле Gradle приложения, чтобы вы могли настроить распространение для разных типов и вариантов сборки.
В этом руководстве описано, как распространять APK среди тестировщиков с помощью плагина Gradle App Distribution.
Подготовка
Если вы ещё этого не сделали, добавьте Firebase в проект Android.
Если вы не используете другие продукты Firebase, вам нужно только создать проект и зарегистрировать приложение. Однако если вы решите использовать дополнительные продукты в будущем, обязательно выполните все шаги, описанные на странице по ссылке выше.
Откройте страницу App Distribution в консоли Firebase. Выберите проект Firebase, затем выберите приложение с помощью переключателя приложений и нажмите Начать.
1. Как настроить проект для Android
В файле 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.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 }
В файл 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' }
Если вы используете корпоративный прокси-сервер или брандмауэр, добавьте следующее системное свойство Java, которое позволяет App Distribution загружать ваши дистрибутивы в Firebase:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Шаг 2. Аутентификация с помощью Firebase
Прежде чем использовать плагин Gradle, необходимо выполнить аутентификацию в проекте Firebase одним из следующих способов. По умолчанию плагин Gradle ищет учетные данные в CLI Firebase, если не используется другой способ аутентификации.
Шаг 3. Как настроить свойства распространения
В файле Gradle модуля (на уровне приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle) настройте App Distribution, добавив хотя бы один раздел firebaseAppDistribution.
Например, чтобы распространить сборку release среди тестировщиков, выполните следующие инструкции:
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" } } } // ... }
Вы можете настроить App Distribution для типов сборки и версий продукта.
Например, чтобы распространить сборки debug и release в версиях продукта demo и full, выполните следующие действия:
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
|
Идентификатор приложения Firebase. Требуется, только если у вас не установлен плагин Google Services Gradle. Идентификатор приложения можно найти в файле appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile
|
Путь к JSON-файлу закрытого ключа сервисного аккаунта. Требуется, только если вы используете аутентификацию сервисного аккаунта. |
artifactType
|
Указывает тип файла приложения. Допустимые значения: |
artifactPath
|
Абсолютный путь к файлу APK или AAB, который вы хотите загрузить. |
releaseNotes или releaseNotesFile |
Примечания к выпуску для этой сборки. Вы можете указать примечания к выпуску напрямую или задать путь к файлу обычного текста. |
testers или testersFile |
Адреса электронной почты тестировщиков, которым вы хотите предоставить доступ к сборкам. Вы можете указать тестировщиков в виде списка адресов электронной почты, разделенных запятыми: testers="ali@example.com, bri@example.com, cal@example.com" Вы также можете указать путь к файлу, содержащему список адресов электронной почты, разделенных запятыми: testersFile="/path/to/testers.txt" |
groups или groupsFile |
Группы тестировщиков, которым вы хотите распространить сборки (см. раздел Управление тестировщиками).
Группы указываются с помощью Вы можете указать группы в виде списка псевдонимов, разделенных запятыми: 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 |
Имя пользователя для автоматического входа, которое будет использоваться при тестировании с помощью агента тестирования приложений. |
testPassword или testPasswordFile |
Пароль для автоматического входа, который будет использоваться во время тестов агента тестирования приложений. Вы также можете указать путь к текстовому файлу, содержащему пароль: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource |
Название ресурса для поля имени пользователя, которое будет использоваться для автоматического входа во время тестов агента тестирования приложений. |
testPasswordResource |
Название ресурса для поля пароля, которое будет использоваться для автоматического входа во время тестов агента тестирования приложений. |
testNonBlocking |
Если этот флаг установлен при запуске тестов агента тестирования приложений, команда запустит тесты и сразу же вернет управление, не дожидаясь их завершения. Чтобы посмотреть результаты тестирования, откройте консоль Firebase. Если этот флаг не установлен, команда будет заблокирована до завершения тестов и завершится с кодом ошибки, если какой-либо из тестов не пройден. |
resultsBucket
|
Специальный сегмент Google Cloud Storage (GCS), в котором хранятся результаты тестирования. Если оставить поле пустым, будет использоваться сегмент по умолчанию. Сегмент должен принадлежать проекту, для которого включены платежные функции. При указании сегмента взимается плата за использование хранилища. |
stacktrace
|
Выводит трассировку стека для пользовательских исключений. Это полезно при устранении неполадок. |
Шаг 4. Как распространять приложение среди тестировщиков
Наконец, чтобы упаковать тестовое приложение и пригласить тестировщиков, создайте целевые объекты
BUILD-VARIANTиappDistributionUploadBUILD-VARIANTс помощью оболочки Gradle вашего проекта, где BUILD-VARIANT – это необязательная версия продукта и тип сборки, настроенные на предыдущем шаге. Подробнее о настройке вариантов сборки…Например, чтобы распространить приложение с помощью варианта сборки
release, выполните следующую команду:./gradlew assembleRelease appDistributionUploadRelease
Если вы выполнили аутентификацию с помощью аккаунта Google и не указали учетные данные в файле build.gradle, добавьте переменную
FIREBASE_TOKEN:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew assembleRelease appDistributionUploadRelease
Вы также можете переопределить значения, заданные в файле
build.gradle, передав аргументы командной строки в виде--<property-name>=<property-value>. Пример:Чтобы загрузить отладочную сборку в App Distribution:
./gradlew bundleDebug appDistributionUploadDebug --artifactType="APK"Чтобы пригласить дополнительных тестировщиков или удалить существующих из проекта 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"После того как тестировщик будет добавлен в проект Firebase, вы сможете добавлять его в отдельные выпуски. Удаленные тестировщики потеряют доступ к выпускам в вашем проекте, но могут сохранить доступ к вашим выпускам в течение определенного периода времени.
Вы также можете указать тестировщиков, используя
--file="/path/to/testers.txt"вместо--emails.Задачи
appDistributionAddTestersиappDistributionRemoveTestersтакже принимают следующие аргументы:projectNumber– номер проекта Firebase.serviceCredentialsFile– путь к файлу с учетными данными сервиса Google. Это тот же аргумент, который используется для действия upload.
После загрузки выпуска плагин Gradle выводит следующие ссылки: Эти ссылки помогают управлять двоичными файлами и гарантируют, что у тестировщиков и других разработчиков будет нужный выпуск.
firebase_console_uri– ссылка на консоль Firebase, в которой показан один выпуск. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.testing_uri– ссылка на выпуск в приложении для тестировщиков (встроенное приложение Android), которая позволяет тестировщикам просматривать примечания к выпуску и устанавливать приложение на свои устройства. Чтобы воспользоваться ссылкой, тестировщику нужен доступ к выпуску.binary_download_uri– подписанная ссылка, которая напрямую скачивает и устанавливает двоичный файл приложения (APK или AAB). Ссылка действительна в течение одного часа.
После распространения сборка будет доступна на панели управления App Distribution в консоли Firebase в течение 150 дней (пяти месяцев). За 30 дней до истечения срока действия сборки в консоли и в списке сборок на тестовом устройстве появится уведомление.
Тестировщики, которые ещё не были приглашены, получат приглашения по электронной почте, а те, кто уже участвует в тестировании, – уведомления о том, что новая сборка готова к тестированию. Инструкции по установке тестового приложения можно найти в руководстве по настройке для тестировщиков. В консоли Firebase можно отслеживать статус каждого тестировщика: принял ли он приглашение и скачал ли приложение.
Принять приглашение можно в течение 30 дней. За пять дней до истечения срока действия приглашения в консоли Firebase рядом с именем тестировщика появляется уведомление. Чтобы продлить приглашение, отправьте его повторно, используя раскрывающееся меню в строке тестировщика.
Дальнейшие действия
Добавьте в приложение форму обратной связи, чтобы тестировщики могли отправлять вам отзывы и скриншоты.
Узнайте, как показывать тестировщикам оповещения в приложении, когда доступны новые сборки.
Пройдите практическую работу по наборам Android App Bundle, чтобы узнать, как распространять выпуски наборов App Bundle.
Ознакомьтесь с рекомендациями по распространению приложений Android среди тестировщиков с помощью CI/CD.