Вы можете интегрировать App Distribution в процесс сборки Android с помощью плагина App Distribution Gradle. Плагин позволяет вам указывать тестировщиков и примечания к выпуску в файле Gradle вашего приложения, позволяя настраивать дистрибутивы для разных типов сборок и вариантов вашего приложения.
В этом руководстве описывается, как распространять пакеты приложений Android (AAB) среди тестировщиков с помощью плагина Gradle App Distribution .
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 в App Distribution | firebaseappdistro.releases.update | Одна из следующих ролей: | –– |
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой проект Android . В конце этого рабочего процесса в вашем проекте Firebase появится приложение Firebase Android.
Если вы не используете другие продукты Firebase, вам нужно всего лишь создать проект и зарегистрировать свое приложение. Если вы решите использовать дополнительные продукты, обязательно выполните все шаги, описанные в разделе «Добавление Firebase в ваш проект Android» .
Чтобы создать ссылку Firebase на Google Play и загрузить файлы AAB, убедитесь, что ваше приложение соответствует следующим требованиям:
Приложение в Google Play и приложение Firebase для Android зарегистрированы с использованием одного и того же имени пакета.
Приложение в Google Play настраивается на панели приложения и распространяется на один из треков Google Play (Внутреннее тестирование, Закрытое тестирование, Открытое тестирование или Производство).
Проверка приложения в Google Play завершена и приложение опубликовано. Ваше приложение опубликовано, если в столбце Статус приложения отображается один из следующих статусов: Внутреннее тестирование (не черновое внутреннее тестирование), Закрытое тестирование, Открытое тестирование или Производство.
Свяжите свое Android-приложение Firebase со своей учетной записью разработчика Google Play:
В консоли Firebase перейдите в свой
На карточке Google Play нажмите «Ссылка» .
Если у вас уже есть ссылки на Google Play, вместо этого нажмите «Управление» .Следуйте инструкциям на экране, чтобы включить интеграцию App Distribution и выбрать, какие приложения Firebase для Android связать с Google Play.
Узнайте больше о привязке к Google Play .
Шаг 1. Настройте свой Android-проект
В файле Gradle корневого уровня (уровня проекта) ( <project>/build.gradle.kts
или<project>/build.gradle
) добавьте плагин Gradle App Distribution в качестве зависимости: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.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.1" apply false }
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.2' 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 :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 , которое позволит App Distribution загружать ваши дистрибутивы в Firebase: -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Шаг 2. Аутентификация с помощью Firebase
Используйте учетные данные учетной записи службы Firebase
Передайте файл ключей вашей сервисной учетной записи в build.gradle
. Этот метод может показаться вам удобным, если в вашей среде сборки уже есть файл ключей сервисной учетной записи.Установите переменную среды GOOGLE_APPLICATION_CREDENTIALS
чтобы она указывала на файл ключей вашего сервисного аккаунта. Вы можете предпочесть этот метод, если у вас уже есть учетные данные приложения по умолчанию (ADC), настроенные для другой службы Google (например, Google Cloud ).
В консоли Google Cloud выберите свой проект и создайте новую учетную запись службы. Добавьте роль администратора Firebase App Distribution . Создайте закрытый ключ json и переместите его в место, доступное для вашей среды сборки. Обязательно сохраните этот файл в безопасном месте , поскольку он предоставляет администратору доступ к App Distribution в вашем проекте Firebase. Пропустите этот шаг, если вы создали свое приложение после 20 сентября 2019 г.: в консоли API Google включите API Firebase App Distribution . При появлении запроса выберите проект с тем же именем, что и ваш проект Firebase. Предоставьте или найдите учетные данные своей сервисной учетной записи: Чтобы передать Gradle ключ вашей учетной записи службы, в файле build.gradle
установите для свойстваserviceCredentialsFile
файл JSON закрытого ключа.Чтобы найти свои учетные данные с помощью ADC, установите для переменной среды GOOGLE_APPLICATION_CREDENTIALS
путь к JSON-файлу закрытого ключа. Например:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Дополнительные сведения об аутентификации с помощью ADC см. в статье Предоставление учетных данных вашему приложению.
Войдите в систему с помощью Firebase CLI.
Шаг 3. Настройте свойства распространения
<project>/<app-module>/build.gradle.kts
или <project>/<app-module>/build.gradle
) настройте App Distribution , добавив хотя бы один раздел firebaseAppDistribution
.
release
среди тестировщиков, следуйте этим инструкциям:
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("release") { firebaseAppDistribution { artifactType = "AAB" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
debug
и release
сборки в «демо» и «полной» версиях продукта, следуйте этим инструкциям:
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" } } } // ... }
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 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. Это тот же аргумент, который используется в действии загрузки.
firebase_console_uri
— ссылка на консоль Firebase , отображающая один выпуск. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.testing_uri
— ссылка на выпуск в интерфейсе тестировщика (родное приложение Android), которая позволяет тестировщикам просматривать примечания к выпуску и устанавливать приложение на свое устройство. Чтобы использовать ссылку, тестировщику необходим доступ к выпуску.binary_download_uri
— подписанная ссылка, по которой непосредственно загружается и устанавливается двоичный файл приложения (файл APK или AAB). Срок действия ссылки истекает через час.
Следующие шаги
Внедрите обратную связь в приложении , чтобы тестировщикам было проще отправлять отзывы о вашем приложении (включая снимки экрана). Узнайте, как отображать оповещения внутри приложения для тестировщиков, когда новые сборки вашего приложения доступны для установки. Посетите лабораторию разработки Android App Bundle, чтобы узнать, как шаг за шагом распространять выпуски App Bundle. Изучите лучшие практики по распространению приложений Android среди тестировщиков QA с помощью CI/CD .
Вы можете интегрировать App Distribution в процесс сборки Android с помощью плагина App Distribution Gradle. Плагин позволяет вам указывать тестировщиков и примечания к выпуску в файле Gradle вашего приложения, позволяя настраивать дистрибутивы для разных типов сборок и вариантов вашего приложения.
В этом руководстве описывается, как распространять пакеты приложений Android (AAB) среди тестировщиков с помощью плагина Gradle App Distribution .
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 в App Distribution | firebaseappdistro.releases.update | Одна из следующих ролей: | –– |
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой проект Android . В конце этого рабочего процесса в вашем проекте Firebase появится приложение Firebase Android.
Если вы не используете другие продукты Firebase, вам нужно всего лишь создать проект и зарегистрировать свое приложение. Если вы решите использовать дополнительные продукты, обязательно выполните все шаги, описанные в разделе «Добавление Firebase в ваш проект Android» .
Чтобы создать ссылку Firebase на Google Play и загрузить файлы AAB, убедитесь, что ваше приложение соответствует следующим требованиям:
Приложение в Google Play и приложение Firebase для Android зарегистрированы с использованием одного и того же имени пакета.
Приложение в Google Play настраивается на панели приложения и распространяется на один из треков Google Play (Внутреннее тестирование, Закрытое тестирование, Открытое тестирование или Производство).
Проверка приложения в Google Play завершена и приложение опубликовано. Ваше приложение опубликовано, если в столбце Статус приложения отображается один из следующих статусов: Внутреннее тестирование (не черновое внутреннее тестирование), Закрытое тестирование, Открытое тестирование или Производство.
Свяжите свое Android-приложение Firebase со своей учетной записью разработчика Google Play:
В консоли Firebase перейдите в свой На карточке Google Play нажмите «Ссылка» .
Если у вас уже есть ссылки на Google Play, вместо этого нажмите «Управление» .Следуйте инструкциям на экране, чтобы включить интеграцию App Distribution и выбрать, какие приложения Firebase для Android связать с Google Play.
Узнайте больше о привязке к Google Play .
Шаг 1. Настройте свой Android-проект
В файле Gradle корневого уровня (уровня проекта) ( <project>/build.gradle.kts
или<project>/build.gradle
) добавьте плагин Gradle App Distribution в качестве зависимости: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.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.1" apply false }
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.2' 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 :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 , которое позволит App Distribution загружать ваши дистрибутивы в Firebase: -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Шаг 2. Аутентификация с помощью Firebase
Используйте учетные данные учетной записи службы Firebase
Передайте файл ключей вашей сервисной учетной записи в build.gradle
. Этот метод может показаться вам удобным, если в вашей среде сборки уже есть файл ключей сервисной учетной записи.Установите переменную среды GOOGLE_APPLICATION_CREDENTIALS
чтобы она указывала на файл ключей вашего сервисного аккаунта. Вы можете предпочесть этот метод, если у вас уже есть учетные данные приложения по умолчанию (ADC), настроенные для другой службы Google (например, Google Cloud ).
В консоли Google Cloud выберите свой проект и создайте новую учетную запись службы. Добавьте роль администратора Firebase App Distribution . Создайте закрытый ключ json и переместите его в место, доступное для вашей среды сборки. Обязательно сохраните этот файл в безопасном месте , поскольку он предоставляет администратору доступ к App Distribution в вашем проекте Firebase. Пропустите этот шаг, если вы создали свое приложение после 20 сентября 2019 г.: в консоли API Google включите API Firebase App Distribution . При появлении запроса выберите проект с тем же именем, что и ваш проект Firebase. Предоставьте или найдите учетные данные своей сервисной учетной записи: Чтобы передать Gradle ключ вашей учетной записи службы, в файле build.gradle
установите для свойстваserviceCredentialsFile
файл JSON закрытого ключа.Чтобы найти свои учетные данные с помощью ADC, установите для переменной среды GOOGLE_APPLICATION_CREDENTIALS
путь к JSON-файлу закрытого ключа. Например:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Дополнительные сведения об аутентификации с помощью ADC см. в статье Предоставление учетных данных вашему приложению.
Войдите в систему с помощью Firebase CLI.
Шаг 3. Настройте свойства распространения
<project>/<app-module>/build.gradle.kts
или <project>/<app-module>/build.gradle
) настройте App Distribution , добавив хотя бы один раздел firebaseAppDistribution
.
release
среди тестировщиков, следуйте этим инструкциям:
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("release") { firebaseAppDistribution { artifactType = "AAB" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
debug
и release
сборки в «демо» и «полной» версиях продукта, следуйте этим инструкциям:
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" } } } // ... }
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 Wrapper вашего проекта, где 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. Это тот же аргумент, который используется действием загрузки.
firebase_console_uri
- ссылка на консоль Firebase с отображением одного выпуска. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.testing_uri
- Ссылка на выпуск в опыте Tester (Android Native), которая позволяет тестировщикам просматривать заметки о выпуске и устанавливать приложение на их устройство. Тестер нуждается в доступе к выпуску, чтобы использовать ссылку.binary_download_uri
- подписанная ссылка, которая напрямую загружает и устанавливает приложение Binary (APK или AAB -файл). Ссылка истекает через час.
Следующие шаги
Реализуйте отзывы в приложении , чтобы тестировщики было проще отправлять отзывы о вашем приложении (включая скриншоты). Узнайте, как отображать в приложении оповещения для ваших тестеров, когда будут установлены новые сборки вашего приложения. Посетите Android App Bundle CodeLab, чтобы узнать, как распределить выпуск пакетов приложений шаг за шагом. Изучите передовые практики для распределения приложений для Android в тестировщиках QA с использованием CI/CD .
Вы можете интегрировать App Distribution в процесс сборки Android, используя плагин App Distribution Gradle. Плагин позволяет указать ваши тестеры и выпустить заметки в файле Gradle вашего приложения, позволяя настроить распределения для различных типов сборки и вариантов вашего приложения.
В этом руководстве описывается, как распространять пакеты приложения Android (AABS) для тестеров, используя плагин App Distribution Gradle.
App Distribution интегрируется с службой внутреннего обмена приложениями Google Play для обработки загрузки AAB, которые вы загружаете, и обслуживают APK, оптимизированные для конфигураций устройства ваших тестеров. Распределение AABS позволяет вам сделать следующее:
Запустите оптимизированные APK (обслуживаемые Google Play), которые оптимизированы на устройства ваших тестеров.
Раскрыть и отлаживать проблемы, специфичные для устройства.
Тестовые функции пакета приложений, такие как доставка функций и доставка активов .
Уменьшите размер загрузок для ваших тестеров.
Требуемые разрешения
Чтобы загрузить AAB для App Distribution , вы должны связать свое приложение Firebase с приложением в Google Play . Вы должны иметь необходимый уровень доступа для выполнения этих действий.
Если у вас нет необходимого доступа к Firebase, вы можете попросить владельца проекта Firebase назначить вам применимую роль через консоли Firebase IAM . Если у вас есть вопросы о доступе к вашему проекту Firebase, включая поиск или назначение владельца, просмотрите «Разрешения и доступ к проектам Firebase» .
Следующая таблица применима к связыванию приложения Firebase с приложением в Google Play , а также для загрузки AAB.
Действие в консоли Firebase | Требуется разрешение IAM | IAM Роль (ы), которые по умолчанию включают необходимые разрешения | Дополнительная необходимая роль (ы) |
---|---|---|---|
Свяжите приложение Firebase с приложением в Google Play | firebase.playLinks.update | Одна из следующих ролей: | Доступ к учетной записи разработчика Google Play в качестве администратора |
Загрузить AAB для App Distribution | firebaseappdistro.releases.update | Одна из следующих ролей: | --- |
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой Android Project . В конце этого рабочего процесса у вас будет приложение Android Firebase в вашем проекте Firebase.
Если вы не используете какие -либо другие продукты Firebase, вам нужно только создать проект и зарегистрировать свое приложение. Если вы решите использовать дополнительные продукты, обязательно выполните все шаги в Add Firebase в ваш проект Android .
Чтобы создать ссылку на Firebase для Google Play и для загрузки AAB, убедитесь, что ваше приложение соответствует следующим требованиям:
Приложение в Google Play и приложении Firebase Android зарегистрировано с использованием одного и того же имени пакета.
Приложение в Google Play настроено на панели инструментов приложения и распространяется по одному из треков Google Play (внутреннее тестирование, закрытое тестирование, открытое тестирование или производство).
Обзор приложения в Google Play завершен, а приложение опубликовано. Ваше приложение опубликовано, если в столбце состояния приложения отображается один из следующих статусов: внутреннее тестирование (не проект внутреннего тестирования), закрытое тестирование, открытое тестирование или производство.
Свяжите свое приложение Firebase Android с учетной записью разработчика Google Play:
В консоли Firebase идите к своему На карте Google Play нажмите ссылку .
Если у вас уже есть ссылки на Google Play, нажмите вместо этого.Следуйте инструкциям на экране, чтобы включить интеграцию App Distribution и выберите, какие приложения Android Firebase ссылаются на Google Play.
Узнайте больше о ссылке на Google Play .
Шаг 1. Настройте проект Android
В вашем файле Gradle на уровне корневого уровня ( <project>/build.gradle.kts
или<project>/build.gradle
) добавьте плагин App Distribution в качестве зависимости: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.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.1" apply false }
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.2' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.1.1' apply false }
В вашем модуле (на уровне приложения) Gradle File (обычно <project>/<app-module>/build.gradle.kts
или<project>/<app-module>/build.gradle
), добавьте плагин App Distribution :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 , которое позволяет App Distribution для загрузки ваших дистрибутивов в Firebase: -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Шаг 2. Аутентификация с помощью Firebase
Используйте учетные данные об учетной записи Firebase Service
Передайте файл ключа ключа учетной записи службы в build.gradle
. Вы можете найти этот метод удобным, если у вас уже есть файл ключа учетной записи службы в вашей среде сборки.Установите переменную среды GOOGLE_APPLICATION_CREDENTIALS
чтобы указать на файл ключа учетной записи вашей службы. Вы можете предпочесть этот метод, если у вас уже есть учетные данные по умолчанию приложения (ADC) для другой службы Google (например, Google Cloud ).
На консоли Google Cloud выберите свой проект и создайте новую учетную запись службы. Добавьте роль администратора Firebase App Distribution . Создайте частный ключ JSON и переместите ключ в местоположение, доступное для вашей среды сборки. Обязательно сохраните этот файл где -нибудь в безопасности , так как он предоставляет доступ администратора для App Distribution в вашем проекте Firebase. Пропустите этот шаг, если вы создали свое приложение после 20 сентября 2019 года: в консоли Google APIS включите API Firebase App Distribution . При запросе выберите проект с тем же названием, что и ваш проект Firebase. Предоставьте или найдите учетные данные для учетной записи обслуживания: Чтобы перенести gradle вашей ключа учетной записи службы в вашем файле build.gradle
, установите свойствоserviceCredentialsFile
в файл JSON Private Key.Чтобы найти свои учетные данные с помощью АЦП, установите переменную среды GOOGLE_APPLICATION_CREDENTIALS
на путь для файла JSON закрытого ключа. Например:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
Для получения дополнительной информации об аутентификации с АЦП, прочтите предоставление учетных данных для вашего приложения.
Войдите, используя CLI Firebase
Шаг 3. Настройте свои свойства распределения
<project>/<app-module>/build.gradle.kts
или <project>/<app-module>/build.gradle
) настройте App Distribution , добавив хотя бы один раздел firebaseAppDistribution
.
release
на тестеров, следуйте этим инструкциям ::
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("release") { firebaseAppDistribution { artifactType = "AAB" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
release
debug
и выпуска в «Демо» и «полных» ароматах продукта следуйте этим инструкциям:
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" } } } // ... }
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 | Идентификатор приложения вашего приложения. Требуется только в том случае, если у вас установлен плагин Google Services Gradle. Вы можете найти идентификатор приложения в файле appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | Путь к вашей учетной записи услуги приватный ключ JSON File. Требуется только в том случае, если вы используете аутентификацию учетной записи службы. |
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 | Следующие типы распределения являются частью функции Beta Automated Tester . Тестовые устройства, на которые вы хотите распределить сборки (см. Автоматизированные тесты ). Вы можете указать тестовые устройства в виде полуколонного списка спецификаций устройств: 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 | Отпечатает Stacktrace для исключений пользователей. Это полезно при отладке. |
Шаг 4. Распределите ваше приложение на тестеров
Наконец, чтобы упаковать ваше тестовое приложение и пригласить тестеров, построить цели BUILD-VARIANT
иappDistributionUpload BUILD-VARIANT
с Gradle Wrapper вашего проекта, где 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. Это тот же аргумент, который используется действием загрузки.
firebase_console_uri
- ссылка на консоль Firebase с отображением одного выпуска. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.testing_uri
- Ссылка на выпуск в опыте Tester (Android Native), которая позволяет тестировщикам просматривать заметки о выпуске и устанавливать приложение на их устройство. Тестер нуждается в доступе к выпуску, чтобы использовать ссылку.binary_download_uri
- подписанная ссылка, которая напрямую загружает и устанавливает приложение Binary (APK или AAB -файл). Ссылка истекает через час.
Следующие шаги
Реализуйте отзывы в приложении , чтобы тестировщики было проще отправлять отзывы о вашем приложении (включая скриншоты). Узнайте, как отображать в приложении оповещения для ваших тестеров, когда будут установлены новые сборки вашего приложения. Посетите Android App Bundle CodeLab, чтобы узнать, как распределить выпуск пакетов приложений шаг за шагом. Изучите передовые практики для распределения приложений для Android в тестировщиках QA с использованием CI/CD .
Вы можете интегрировать App Distribution в процесс сборки Android, используя плагин App Distribution Gradle. Плагин позволяет указать ваши тестеры и выпустить заметки в файле Gradle вашего приложения, позволяя настроить распределения для различных типов сборки и вариантов вашего приложения.
В этом руководстве описывается, как распространять пакеты приложения Android (AABS) для тестеров, используя плагин App Distribution Gradle.
App Distribution интегрируется с службой внутреннего обмена приложениями Google Play для обработки загрузки AAB, которые вы загружаете, и обслуживают APK, оптимизированные для конфигураций устройства ваших тестеров. Распределение AABS позволяет вам сделать следующее:
Запустите оптимизированные APK (обслуживаемые Google Play), которые оптимизированы на устройства ваших тестеров.
Раскрыть и отлаживать проблемы, специфичные для устройства.
Тестовые функции пакета приложений, такие как доставка функций и доставка активов .
Уменьшите размер загрузок для ваших тестеров.
Требуемые разрешения
Чтобы загрузить AAB для App Distribution , вы должны связать свое приложение Firebase с приложением в Google Play . Вы должны иметь необходимый уровень доступа для выполнения этих действий.
Если у вас нет необходимого доступа к Firebase, вы можете попросить владельца проекта Firebase назначить вам применимую роль через консоли Firebase IAM . Если у вас есть вопросы о доступе к вашему проекту Firebase, включая поиск или назначение владельца, просмотрите «Разрешения и доступ к проектам Firebase» .
Следующая таблица применима к связыванию приложения Firebase с приложением в Google Play , а также для загрузки AAB.
Действие в консоли Firebase | Требуется разрешение IAM | IAM Роль (ы), которые по умолчанию включают необходимые разрешения | Дополнительная необходимая роль (ы) |
---|---|---|---|
Свяжите приложение Firebase с приложением в Google Play | firebase.playLinks.update | Одна из следующих ролей: | Доступ к учетной записи разработчика Google Play в качестве администратора |
Загрузить AAB для App Distribution | firebaseappdistro.releases.update | Одна из следующих ролей: | --- |
Прежде чем начать
Если вы еще этого не сделали, добавьте Firebase в свой Android Project . В конце этого рабочего процесса у вас будет приложение Android Firebase в вашем проекте Firebase.
Если вы не используете какие -либо другие продукты Firebase, вам нужно только создать проект и зарегистрировать свое приложение. Если вы решите использовать дополнительные продукты, обязательно выполните все шаги в Add Firebase в ваш проект Android .
Чтобы создать ссылку на Firebase для Google Play и для загрузки AAB, убедитесь, что ваше приложение соответствует следующим требованиям:
Приложение в Google Play и приложении Firebase Android зарегистрировано с использованием одного и того же имени пакета.
Приложение в Google Play настроено на панели инструментов приложения и распространяется по одному из треков Google Play (внутреннее тестирование, закрытое тестирование, открытое тестирование или производство).
Обзор приложения в Google Play завершен, а приложение опубликовано. Ваше приложение опубликовано, если в столбце состояния приложения отображается один из следующих статусов: внутреннее тестирование (не проект внутреннего тестирования), закрытое тестирование, открытое тестирование или производство.
Свяжите свое приложение Firebase Android с учетной записью разработчика Google Play:
В консоли Firebase идите к своему На карте Google Play нажмите ссылку .
Если у вас уже есть ссылки на Google Play, нажмите вместо этого.Следуйте инструкциям на экране, чтобы включить интеграцию App Distribution и выберите, какие приложения Android Firebase ссылаются на Google Play.
Узнайте больше о ссылке на Google Play .
Шаг 1. Настройте проект Android
В вашем файле Gradle на уровне корневого уровня ( <project>/build.gradle.kts
или<project>/build.gradle
) добавьте плагин App Distribution в качестве зависимости: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.2" apply false // Add the dependency for the App Distribution Gradle plugin id("com.google.firebase.appdistribution") version "5.1.1" apply false }
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.2' apply false // Add the dependency for the App Distribution Gradle plugin id 'com.google.firebase.appdistribution' version '5.1.1' apply false }
В вашем модуле (на уровне приложения) Gradle File (обычно <project>/<app-module>/build.gradle.kts
или<project>/<app-module>/build.gradle
), добавьте плагин App Distribution :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 , которое позволяет App Distribution для загрузки ваших дистрибутивов в Firebase: -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
Шаг 2. Аутентификация с помощью Firebase
Используйте учетные данные об учетной записи Firebase Service
Передайте файл ключа ключа учетной записи службы в build.gradle
. You might find this method convenient if you already have your service account key file in your build environment.Set the environment variable GOOGLE_APPLICATION_CREDENTIALS
to point to your service account key file. You might prefer this method if you already have Application Default Credentials (ADC) configured for another Google service (eg, Google Cloud ).
On the Google Cloud console, select your project and create a new service account. Add the Firebase App Distribution Admin role. Create a private json key and move the key to a location accessible to your build environment. Be sure to keep this file somewhere safe , as it grants administrator access to App Distribution in your Firebase project. Skip this step if you created your app after September 20, 2019: In the Google APIs console, enable the Firebase App Distribution API. When prompted, select the project with the same name as your Firebase project. Provide or locate your service account credentials: To pass Gradle your service account key, in your build.gradle
file, set the propertyserviceCredentialsFile
to the private key JSON file.To locate your credentials with ADC, set the environment variable GOOGLE_APPLICATION_CREDENTIALS
to the path for the private key JSON file. Например:export GOOGLE_APPLICATION_CREDENTIALS=/absolute/path/to/credentials/file.json
For more information on authenticating with ADC, read Providing credentials to your application.
Sign in using the Firebase CLI
Step 3. Configure your distribution properties
<project>/<app-module>/build.gradle.kts
or <project>/<app-module>/build.gradle
), configure App Distribution by adding at least one firebaseAppDistribution
section.
release
build to testers, follow these instructions::
import com.google.firebase.appdistribution.gradle.firebaseAppDistribution android { // ... buildTypes { getByName("release") { firebaseAppDistribution { artifactType = "AAB" releaseNotesFile = "/path/to/releasenotes.txt" testers = "ali@example.com, bri@example.com, cal@example.com" } } } // ... }
android { // ... buildTypes { release { firebaseAppDistribution { artifactType="AAB" releaseNotesFile="/path/to/releasenotes.txt" testers="ali@example.com, bri@example.com, cal@example.com" } } } // ... }
debug
and release
builds in "demo" and "full" product flavors, follow these instructions:
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" } } } // ... }
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 Build Parameters | |
---|---|
appId | Your app's Firebase App ID. Required only if you don't have the Google Services Gradle plugin installed. You can find the App ID in the appId="1:1234567890:android:321abc456def7890" |
serviceCredentialsFile | The path to your service account private key JSON file. Required only if you use service account authentication. |
artifactType | Specifies your app's file type. Can be set to |
artifactPath | Absolute path to the APK or AAB file you want to upload. |
releaseNotes or releaseNotesFile | Release notes for this build. You can either specify the release notes directly or the path to a plain text file. |
testers or testersFile | The email addresses of the testers you want to distribute builds to. You can specify the testers as a comma-separated list of email addresses: testers="ali@example.com, bri@example.com, cal@example.com" Or, you can specify the path to a file containing a comma-separated list of email addresses: testersFile="/path/to/testers.txt" |
groups or groupsFile | The tester groups you want to distribute builds to (see Manage testers ). Groups are specified using You can specify the groups as a comma-separated list of group aliases: groups="qa-team, android-testers" Or, you can specify the path to a file containing a comma-separated list of group aliases: groupsFile="/path/to/tester-groups.txt" |
testDevices or testDevicesFile | The following distribution types are part of the Automated tester beta feature . The test devices you want to distribute builds to (see Automated tests ). You can specify the test devices as a semicolon-separated list of device specifications: testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait" Or, you can specify the path to a file containing a semicolon-separated list of device specifications: testDevicesFile="/path/to/testDevices.txt" |
testUsername | The username for automatic login to be used during automated tests . |
testPassword or testPasswordFile | The password for automatic login to be used during automated tests . Or, you can specify the path to a plain text file containing a password: testPasswordFile="/path/to/testPassword.txt" |
testUsernameResource | Resource name for the username field for automatic login to be used during automated tests . |
testPasswordResource | Resource name for the password field for automatic login to be used during automated tests . |
testNonBlocking | Run automated tests asynchronously. Visit the Firebase console for the automatic test results. |
stacktrace | Prints out the stacktrace for user exceptions. This is helpful when debugging issues. |
Step 4. Distribute your app to testers
Finally, to package your test app and invite testers, build the targets BUILD-VARIANT
andappDistributionUpload BUILD-VARIANT
with your project's Gradle wrapper, where BUILD-VARIANT is the optional product flavor and build type you configured in the previous step. For more information about product flavors, see Configure build variants .For example, to distribute your app using the release
build variant, run the following command:./gradlew bundleRelease appDistributionUploadRelease
Or, if you authenticated with your Google Account and didn't provide credentials in your Gradle build file, include the
FIREBASE_TOKEN
variable:export FIREBASE_TOKEN=1/a1b2c3d4e5f67890 ./gradlew --stop // Only needed for environment variable changes ./gradlew bundleRelease appDistributionUploadRelease
You can also override the values set in your build.gradle
file by passing command line arguments in the form of--<property-name>=<property-value>
. Например:To upload a debug build to App Distribution : ./gradlew bundleDebug appDistributionUploadDebug --artifactType="AAB"
To invite additional testers or remove existing testers from your Firebase project: ./gradlew appDistributionAddTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
./gradlew appDistributionRemoveTesters --projectNumber=<project_number> --emails="anothertester@email.com, moretesters@email.com"
Once a tester has been added to your Firebase project, you can add them to individual releases. Testers who are removed will no longer have access to releases in your project, but may still retain access to your releases for a window of time.
You can also specify testers using --file="/path/to/testers.txt"
instead of--emails
.The appDistributionAddTesters
andappDistributionRemoveTesters
tasks also accept the following arguments:projectNumber
: Your Firebase project number.serviceCredentialsFile
: The path to your Google service credentials file. This is the same argument used by the upload action.
firebase_console_uri
- A link to the Firebase console displaying a single release. You can share this link with other developers in your org.testing_uri
- A link to the release in the tester experience (Android native app) that lets testers view release notes and install the app onto their device. The tester needs access to the release in order to use the link.binary_download_uri
- A signed link that directly downloads and installs the app binary (APK or AAB file). The link expires after one hour.
Следующие шаги
Implement in-app feedback to make it easy for testers to send feedback about your app (including screenshots). Learn how to display in-app alerts to your testers when new builds of your app are available to install. Visit the Android App Bundle codelab to learn how to distribute app bundle releases step by step. Learn best practices for distributing Android apps to QA testers using CI/CD .