Вы можете интегрировать App Distribution в процесс сборки Android с помощью плагина Gradle App Distribution. Плагин позволяет указать тестировщиков и примечания к выпуску в файле Gradle приложения, чтобы настроить распространение для разных типов сборки и вариантов приложения.
Из этого руководства вы узнаете, как распространять APK-файлы среди тестировщиков с помощью плагина Gradle App Distribution.
Подготовка
Если вы ещё этого не сделали, добавьте Firebase в проект Android.
Если вы не используете другие продукты Firebase, вам нужно только создать проект и зарегистрировать приложение. Однако если вы решите использовать дополнительные продукты в будущем, обязательно выполните все шаги на странице, ссылку на которую мы привели выше.
Откройте страницу App Distribution консоли Firebase. Выберите проект Firebase, когда появится запрос, выберите приложение с помощью переключателя приложений и нажмите Начать.
1. Как настроить проект для Android
В корневом (на уровне проекта) файле Gradle (
<project>/build.gradle.ktsили<project>/build.gradle) добавьте плагин Gradle App Distribution в качестве зависимости: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 ищет учетные данные в интерфейсе командной строки 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. Требуется, только если у вас не установлен плагин Gradle для сервисов Google. Идентификатор приложения можно найти в файле appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile
|
Путь к JSON-файлу закрытого ключа сервисного аккаунта. Требуется, только если вы используете аутентификацию сервисного аккаунта. |
artifactType
|
Указывает тип файла приложения. Может иметь значение |
artifactPath
|
Абсолютный путь к APK-файлу или набору Android App Bundle, который вы хотите загрузить. |
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 и не указали учетные данные в файле сборки 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. Это тот же аргумент, который используется в действии загрузки.
После загрузки релиза плагин Gradle выводит следующие ссылки: Эти ссылки помогают управлять двоичными файлами и следить за тем, чтобы у тестировщиков и других разработчиков была правильная версия:
firebase_console_uri– ссылка на Firebase с информацией об одном релизе. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.testing_uri– ссылка на версию в приложении для тестировщиков (встроенном приложении Android), где можно посмотреть примечания к выпуску и установить приложение на устройство. Чтобы воспользоваться ссылкой, у тестировщика должен быть доступ к выпуску.binary_download_uri– подписанная ссылка, по которой можно напрямую скачать и установить исполняемый файл приложения (APK или AAB). Ссылка действительна в течение одного часа.
После распространения сборка будет доступна на App Distributionпанели управления Firebaseконсоли в течение 150 дней (пяти месяцев). Когда до истечения срока действия сборки остается 30 дней, уведомление об этом появляется в консоли и в списке сборок на тестовом устройстве.
Тестировщики, которые ещё не получили приглашение, получат его по электронной почте. Те, кто уже тестирует приложение, получат уведомление о том, что новая сборка готова к тестированию. Инструкции по установке тестовой версии приложения можно найти в руководстве по настройке для тестировщиков. В консоли Firebase можно отслеживать статус каждого тестировщика: принял ли он приглашение и скачал ли приложение.
У тестировщиков есть 30 дней, чтобы принять приглашение. Когда до истечения срока действия приглашения остается пять дней, в консоли Firebase рядом с тестировщиком в выпуске появляется уведомление об истечении срока действия. Приглашение можно обновить, отправив его повторно с помощью раскрывающегося меню в строке тестировщика.
Дальнейшие действия
Добавьте в приложение функцию отправки отзывов, чтобы тестировщики могли делиться своим мнением о нем (в том числе прикреплять скриншоты).
Узнайте, как показывать тестировщикам оповещения в приложении, когда для установки становятся доступны новые сборки.
Чтобы узнать, как распространять выпуски наборов App Bundle, ознакомьтесь с практической работой по наборам Android App Bundle.
Узнайте, как распространять приложения Android среди тестировщиков с помощью CI/CD.