Вы можете интегрировать App Distribution в процесс сборки Android с помощью плагина Gradle App Distribution . Этот плагин позволяет указать тестировщиков и примечания к выпуску в Gradle-файле вашего приложения, что позволяет настраивать дистрибутивы для различных типов сборки и вариантов приложения.
В этом руководстве описывается, как распространять APK-файлы среди тестировщиков с помощью плагина App Distribution Gradle.
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой Android-проект .
Если вы не используете другие продукты 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.4.3" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.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.3' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.1.1' 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 CLI, если не используется другой метод аутентификации.
Аутентификация с помощью учётной записи сервиса позволяет гибко использовать плагин с вашей системой непрерывной интеграции (CI). Существует два способа предоставить данные учётной записи сервиса:
- Передайте файл ключа учётной записи службы в
build.gradle
. Этот метод может оказаться удобным, если файл ключа учётной записи службы уже есть в вашей среде сборки. - Настройте переменную окружения
GOOGLE_APPLICATION_CREDENTIALS
так, чтобы она указывала на файл ключей вашей учётной записи сервиса. Этот метод может быть предпочтительнее, если у вас уже настроены учётные данные приложения по умолчанию (ADC) для другого сервиса Google (например, Google Cloud ).
Для аутентификации с использованием учетных данных сервисной учетной записи:
- В консоли Google Cloud выберите свой проект и создайте новую учетную запись службы.
- Добавьте роль администратора Firebase App Distribution .
- Создайте закрытый JSON-ключ и переместите его в место, доступное вашей среде сборки. Сохраните этот файл в безопасном месте , так как он предоставляет администратору доступ к App Distribution в вашем проекте Firebase.
- Пропустите этот шаг, если вы создали приложение после 20 сентября 2019 г.: в консоли Google API включите API Firebase App Distribution . При появлении запроса выберите проект с тем же именем, что и у вашего проекта Firebase.
Укажите или найдите данные своей учетной записи службы:
- Чтобы передать Gradle ключ учетной записи службы, в файле
build.gradle
задайте для свойстваserviceCredentialsFile
файл закрытого ключа JSON. Чтобы найти свои учётные данные в ADC, укажите путь к JSON-файлу закрытого ключа в переменной среды
GOOGLE_APPLICATION_CREDENTIALS
. Например:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Дополнительную информацию об аутентификации в ADC см. в разделе Предоставление учетных данных приложению.
- Чтобы передать Gradle ключ учетной записи службы, в файле
Инструкции по аутентификации вашего проекта см. в разделе Вход с помощью Firebase CLI.
Шаг 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
сборки в «демо» и «полной» версиях продукта, следуйте этим инструкциям:
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;model=b0q,version=33,locale=en,orientation=portrait" Или вы можете указать путь к файлу, содержащему список спецификаций устройства, разделенных точкой с запятой: testDevicesFile="/path/to/testDevices.txt" |
testUsername | Имя пользователя для автоматического входа в систему, которое будет использоваться во время автоматизированных тестов . |
testPassword или testPasswordFile | Пароль для автоматического входа в систему, который будет использоваться во время автоматизированных тестов . Или вы можете указать путь к текстовому файлу, содержащему пароль: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource | Имя ресурса для поля имени пользователя для автоматического входа в систему, которое будет использоваться во время автоматизированных тестов . |
testPasswordResource | Имя ресурса для поля пароля для автоматического входа в систему, которое будет использоваться во время автоматизированных тестов . |
testNonBlocking | Запускайте автоматические тесты асинхронно. Результаты автоматических тестов можно посмотреть в консоли Firebase. |
stacktrace | Выводит трассировку стека для пользовательских исключений. Это полезно при отладке. |
Шаг 4. Распространите свое приложение среди тестировщиков
Наконец, чтобы упаковать ваше тестовое приложение и пригласить тестировщиков, создайте цели
BUILD-VARIANT
иappDistributionUpload BUILD-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 дней, чтобы принять приглашение на тестирование приложения, прежде чем срок его действия истечёт. Когда до истечения срока действия приглашения остаётся 5 дней, в консоли Firebase рядом с именем тестировщика в релизе появляется уведомление об истечении срока действия. Приглашение можно продлить, отправив его повторно с помощью раскрывающегося меню в строке тестировщика.
Следующие шаги
Реализуйте обратную связь в приложении , чтобы тестировщикам было проще отправлять отзывы о вашем приложении (включая снимки экрана).
Узнайте, как отображать внутри приложения оповещения для тестировщиков о том, что новые сборки вашего приложения доступны для установки.
Посетите лабораторию по кодированию Android App Bundle, чтобы узнать, как шаг за шагом распространять выпуски пакетов приложений.
Изучите передовой опыт распространения приложений Android среди тестировщиков QA с использованием CI/CD .