Вы можете интегрировать 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.4" 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.4' 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 .