Вы можете интегрировать распространение приложений в процесс сборки Android с помощью плагина App Distribution Gradle. Плагин позволяет указать ваших тестировщиков и примечания к выпуску в файле build.gradle
вашего приложения, что позволяет настраивать дистрибутивы для различных типов сборки и вариантов вашего приложения.
В этом руководстве описывается, как распространять наборы приложений Android (AAB) среди тестировщиков с помощью подключаемого модуля App Distribution Gradle.
App Distribution интегрируется с внутренней службой обмена приложениями Google Play для обработки загруженных вами AAB и предоставления APK, оптимизированных для конфигураций устройств ваших тестировщиков. Распространение AAB позволяет вам делать следующее:
Запускайте оптимизированные APK-файлы (обслуживаемые Google Play), оптимизированные для устройств ваших тестировщиков.
Выявляйте и устраняйте проблемы, связанные с устройством.
Протестируйте функции набора приложений, такие как доставка функций Play и доставка объектов Play .
Уменьшите размер загрузок для ваших тестировщиков.
Требуемые разрешения
Чтобы загрузить 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 для распространения приложений | firebaseappdistro.releases.update | Одна из следующих ролей: | –– |
Прежде чем вы начнете
Если вы еще этого не сделали, добавьте Firebase в свой проект Android . В конце этого рабочего процесса у вас будет приложение Firebase для Android в вашем проекте Firebase.
Если вы не используете какие-либо другие продукты Firebase, вам нужно только создать проект и зарегистрировать свое приложение. Если вы решите использовать дополнительные продукты, обязательно выполните все шаги, описанные в разделе «Добавление Firebase в ваш проект Android» .
Чтобы создать ссылку Firebase на Google Play и загрузить AAB, убедитесь, что ваше приложение соответствует следующим требованиям:
Приложение в Google Play и приложение Firebase для Android зарегистрированы с использованием одного и того же имени пакета.
Приложение в Google Play настраивается на панели приложений и распространяется на одну из дорожек Google Play (внутреннее тестирование, закрытое тестирование, открытое тестирование или производство).
Проверка приложения в Google Play завершена, и приложение опубликовано. Ваше приложение опубликовано, если в столбце Статус приложения отображается один из следующих статусов: Внутреннее тестирование (не Черновик внутреннего тестирования), Закрытое тестирование, Открытое тестирование или Производство.
Свяжите свое Android-приложение Firebase со своей учетной записью разработчика Google Play:
В консоли Firebase перейдите в
Project settings и выберите вкладку Integrations .На карточке Google Play нажмите Ссылка .
Если у вас уже есть ссылки на Google Play, нажмите «Управление» .Следуйте инструкциям на экране, чтобы включить интеграцию распространения приложений и выбрать, какие приложения Firebase для Android следует связать с Google Play.
Узнайте больше о привязке к Google Play .
Шаг 1. Настройте свой проект Android
В файле Gradle корневого уровня (уровня проекта) (
или<project>/build.gradle
) добавьте плагин App Distribution Gradle в качестве зависимости buildscript:<project>/build.gradle.kts заводной
buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... classpath 'com.android.tools.build:gradle:7.2.0' // Make sure that you have the Google services Gradle plugin dependency classpath 'com.google.gms:google-services:4.3.15' // Add the dependency for the App Distribution Gradle plugin classpath 'com.google.firebase:firebase-appdistribution-gradle:4.0.0' } }
Котлин
buildscript { repositories { // Make sure that you have the following two repositories google() // Google's Maven repository mavenCentral() // Maven Central repository } dependencies { ... classpath("com.android.tools.build:gradle:7.2.0") // Make sure that you have the Google services Gradle plugin dependency classpath("com.google.gms:google-services:4.3.15") // Add the dependency for the App Distribution Gradle plugin classpath("com.google.firebase:firebase-appdistribution-gradle:4.0.0") } }
В файле Gradle вашего модуля (на уровне приложения) (обычно
или<project>/<app-module>/build.gradle
) добавьте плагин Gradle App Distribution:<project>/<app-module>/build.gradle.kts заводной
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' }
Котлин
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 , которое позволяет службе распространения приложений загружать ваши дистрибутивы в Firebase:
-Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Шаг 2. Авторизуйтесь в Firebase
Прежде чем вы сможете использовать плагин Gradle, вы должны сначала пройти аутентификацию в своем проекте Firebase одним из следующих способов. По умолчанию плагин Gradle ищет учетные данные из интерфейса командной строки Firebase, если не используется другой метод аутентификации.
Аутентификация с помощью сервисной учетной записи позволяет вам гибко использовать плагин с вашей системой непрерывной интеграции (CI). Существует два способа предоставления учетных данных служебной учетной записи:
- Передайте файл ключа вашей учетной записи службы в
build.gradle
. Этот метод может оказаться удобным, если у вас уже есть файл ключа учетной записи службы в среде сборки. - Установите переменную среды
GOOGLE_APPLICATION_CREDENTIALS
так, чтобы она указывала на файл ключа вашей учетной записи службы. Вы можете предпочесть этот метод, если у вас уже есть учетные данные приложения по умолчанию (ADC), настроенные для другой службы Google (например, Google Cloud).
Для аутентификации с использованием учетных данных сервисной учетной записи:
- В Google Cloud Console выберите свой проект и создайте новую учетную запись службы.
- Добавьте роль администратора распространения приложений Firebase .
- Создайте закрытый ключ json и переместите ключ в место, доступное для вашей среды сборки. Обязательно сохраните этот файл в надежном месте , так как он предоставляет администратору доступ к распространению приложений в вашем проекте Firebase.
- Пропустите этот шаг, если вы создали приложение после 20 сентября 2019 года. В консоли Google API включите Firebase App Distribution API. При появлении запроса выберите проект с тем же именем, что и ваш проект Firebase.
Укажите или найдите учетные данные своей учетной записи службы:
- Чтобы передать Gradle ключ вашей учетной записи службы, в файле
build.gradle
задайте для свойстваserviceCredentialsFile
файл JSON с закрытым ключом. Чтобы найти свои учетные данные с помощью ADC, задайте для переменной среды
GOOGLE_APPLICATION_CREDENTIALS
путь к JSON-файлу закрытого ключа. Например:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Дополнительные сведения об аутентификации с помощью ADC см. в статье Предоставление учетных данных вашему приложению.
- Чтобы передать Gradle ключ вашей учетной записи службы, в файле
Инструкции по аутентификации вашего проекта см . в разделе Вход с помощью интерфейса командной строки Firebase .
Шаг 3. Настройте свойства дистрибутива
В файле Gradle вашего модуля (на уровне приложения) (обычно
или
) настройте распространение приложений, добавив как минимум один раздел firebaseAppDistribution
.
Например, чтобы раздать сборку release
тестерам, следуйте этим инструкциям:
заводной
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Котлин
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { release { firebaseAppDistribution { artifactType = "AAB" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
Вы можете настроить распространение приложений для типов сборки и разновидностей продуктов .
Например, чтобы распространять debug
и release
сборки в «демонстрационном» и «полном» вариантах продукта, следуйте этим инструкциям:
заводной
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" } } } // ... }
Котлин
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" } } } // ... }
Используйте следующие параметры для настройки раздачи:
Параметры сборки распространения приложений | |
---|---|
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" |
stacktrace | Выводит трассировку стека для пользовательских исключений. Это полезно при устранении неполадок. |
Шаг 4. Распространите ваше приложение среди тестировщиков
Наконец, чтобы упаковать тестовое приложение и пригласить тестировщиков, соберите целевые объекты
BUILD-VARIANT
иappDistributionUpload BUILD-VARIANT
с помощью оболочки Gradle вашего проекта, где BUILD-VARIANT — это дополнительный вариант продукта и тип сборки, которые вы настроили на предыдущем шаге. Дополнительные сведения о разновидностях продукта см. в разделе Настройка вариантов сборки .Например, чтобы распространять приложение с использованием варианта сборки
release
, выполните следующую команду:./gradlew bundleRelease appDistributionUploadRelease
Или, если вы прошли аутентификацию с помощью своей учетной записи Google и не предоставили учетные данные в файле сборки Gradle, включите переменную
FIREBASE_TOKEN
:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew bundleRelease appDistributionUploadRelease
Вы также можете переопределить значения, установленные в файле
build.gradle
, передав аргументы командной строки в виде--<property-name>=<property-value>
. Например:Чтобы загрузить отладочную сборку в 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"
После добавления тестировщика в ваш проект 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). Ссылка действительна через час.
Как только вы распространяете свою сборку, она становится доступной на панели управления распространением приложений консоли Firebase в течение 150 дней (пять месяцев). Когда срок действия сборки истекает через 30 дней, уведомление об истечении срока действия появляется как в консоли, так и в списке сборок тестировщика на его тестовом устройстве.
Тестировщики, которые не были приглашены для тестирования приложения, получают приглашения по электронной почте для начала работы, а существующие тестировщики получают уведомления по электронной почте о том, что новая сборка готова к тестированию (прочитайте руководство по настройке тестера , чтобы узнать, как установить тестовое приложение). Вы можете отслеживать статус каждого тестировщика — приняли ли они приглашение и загрузили ли приложение — в консоли Firebase.
У тестировщиков есть 30 дней, чтобы принять приглашение протестировать приложение до истечения срока его действия. Когда срок действия приглашения истекает через 5 дней, уведомление об истечении срока действия появляется в консоли Firebase рядом с тестировщиком в выпуске. Приглашение можно обновить, отправив его повторно с помощью раскрывающегося меню в строке тестера.
Следующие шаги
Реализуйте обратную связь в приложении , чтобы тестировщики могли легко отправлять отзывы о вашем приложении (включая скриншоты).
Узнайте, как отображать оповещения в приложении для тестировщиков, когда новые сборки вашего приложения доступны для установки.
Посетите лабораторию Android App Bundle , чтобы узнать, как шаг за шагом распространять выпуски App Bundle.
Узнайте о передовых методах распространения приложений Android среди тестировщиков QA с помощью CI/CD .