Распространяйте приложения Android среди тестировщиков с помощью Gradle


Вы можете интегрировать App Distribution в процесс сборки Android-приложений с помощью плагина App Distribution Gradle. Плагин позволяет указывать тестировщиков и примечания к релизу в файле Gradle вашего приложения, что позволяет настраивать дистрибуцию для различных типов сборок и вариантов вашего приложения.

В этом руководстве описывается, как распространять пакеты приложений Android (AAB) среди тестировщиков с помощью плагина App Distribution Gradle.

App Distribution интегрируется с внутренней службой обмена приложениями Google Play для обработки загружаемых вами файлов AAB и предоставления APK-файлов, оптимизированных для конфигураций устройств ваших тестировщиков. Распространение файлов AAB позволяет выполнять следующие действия:

  • Запускайте оптимизированные APK-файлы (доступные в Google Play), оптимизированные для устройств ваших тестировщиков.

  • Выявление и устранение проблем, специфичных для конкретного устройства.

  • Протестируйте функции пакета приложения, такие как Play Feature Delivery и Play Asset Delivery .

  • Уменьшите размер загружаемых файлов для ваших тестировщиков.

Необходимые разрешения

Для загрузки 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 Одна из следующих ролей: ––

Прежде чем начать

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android . В результате выполнения этого процесса у вас будет приложение Firebase для Android в вашем проекте Firebase.

    Если вы не используете другие продукты Firebase, вам нужно только создать проект и зарегистрировать приложение. Если вы решите использовать дополнительные продукты, обязательно выполните все шаги, описанные в разделе «Добавление Firebase в ваш проект Android» .

  2. Для создания ссылки Firebase на Google Play и загрузки файлов AAB убедитесь, что ваше приложение соответствует следующим требованиям:

    • И приложение в Google Play, и приложение Firebase для Android зарегистрированы с использованием одного и того же имени пакета.

    • Приложение в Google Play устанавливается на панели управления приложениями и распространяется по одному из направлений Google Play (внутреннее тестирование, закрытое тестирование, открытое тестирование или производственная среда).

    • Проверка приложения в Google Play завершена, и приложение опубликовано. Ваше приложение опубликовано, если в столбце «Статус приложения» отображается один из следующих статусов: Внутреннее тестирование (не черновик внутреннего тестирования), Закрытое тестирование, Открытое тестирование или Производственная версия.

  3. Свяжите ваше Android-приложение Firebase с вашей учетной записью разработчика Google Play:

    1. В консоли Firebase перейдите в свой настройках проекта выберите вкладку «Интеграции» .

    2. На карточке Google Play нажмите «Ссылка» .
      Если у вас уже есть ссылки на Google Play, нажмите «Управление» .

    3. Следуйте инструкциям на экране, чтобы включить интеграцию App Distribution и выбрать, какие приложения Firebase для Android следует связать с Google Play.

    Узнайте больше о создании ссылок на Google Play .

Шаг 1. Настройте свой проект Android.

  1. В корневом (проектном) файле Gradle ( <project>/build.gradle.kts или <project>/build.gradle ) добавьте плагин App Distribution Gradle в качестве зависимости:

    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.2.0" apply false
    }

    Groovy

    plugins {
        // ...
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.4.4' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.2.0' apply false
    }
  2. В файл 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'
    }
  3. Если вы используете корпоративный прокси-сервер или брандмауэр, добавьте следующее системное свойство Java , которое позволит App Distribution загружать ваши дистрибутивы в Firebase:

    -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password
    

Шаг 2. Аутентификация с помощью Firebase.

Прежде чем использовать плагин Gradle, необходимо пройти аутентификацию в вашем проекте Firebase одним из следующих способов. По умолчанию плагин 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 = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              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 (App ID). Требуется только в том случае, если у вас не установлен плагин Google Services Gradle. Вы можете найти App ID в файле google-services.json или в консоли Firebase на странице «Общие настройки» . Значение в файле build.gradle переопределяет значение, выводимое плагином google-services .

appId="1:1234567890:android:321abc456def7890"
serviceCredentialsFile

Путь к JSON-файлу закрытого ключа вашей учетной записи службы. Требуется только в том случае, если вы используете аутентификацию по учетной записи службы.

artifactType

Указывает тип файла вашего приложения. Может быть установлено значение "AAB" или "APK" .

artifactPath

Укажите абсолютный путь к файлу APK или AAB, который вы хотите загрузить.

releaseNotes или releaseNotesFile

Примечания к выпуску этой сборки.

Вы можете указать либо непосредственно примечания к выпуску, либо путь к текстовому файлу.

testers или testersFile

Адреса электронной почты тестировщиков, которым вы хотите распространить сборки.

Список тестировщиков можно указать в виде списка адресов электронной почты, разделенных запятыми:

testers="ali@example.com, bri@example.com, cal@example.com"

Или же вы можете указать путь к файлу, содержащему список адресов электронной почты, разделенных запятыми:

testersFile="/path/to/testers.txt"
groups или groupsFile

Группы тестировщиков, которым вы хотите распределить сборки (см. раздел «Управление тестировщиками »). Группы указываются с помощью... псевдонимы групп который вы можете найти на вкладке «Тестировщики» в консоли Firebase App Distribution .

Группы можно указать в виде списка псевдонимов групп, разделенных запятыми:

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. Распространите ваше приложение среди тестировщиков.

  1. Наконец, чтобы упаковать тестовое приложение и пригласить тестировщиков, соберите целевые объекты. 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
    
  2. Вы также можете переопределить значения, заданные в файле 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). Ссылка действительна в течение одного часа.

После распространения вашей сборки она становится доступной на панели App Distribution в консоли Firebase в течение 150 дней (пяти месяцев). Когда до истечения срока действия сборки останется 30 дней, уведомление об истечении срока действия появится как в консоли, так и в списке сборок вашего тестировщика на его тестовом устройстве.

Тестировщики, не получившие приглашение к тестированию приложения, получают приглашения по электронной почте для начала работы, а существующие тестировщики получают уведомления по электронной почте о готовности новой сборки к тестированию (инструкции по установке тестового приложения см. в руководстве по настройке тестировщика ). Вы можете отслеживать статус каждого тестировщика — принял ли он приглашение и скачал ли приложение — в консоли Firebase .

У тестировщиков есть 30 дней, чтобы принять приглашение на тестирование приложения, после чего оно истекает. За 5 дней до истечения срока действия приглашения в консоли Firebase рядом с именем тестировщика в релизе появляется уведомление об истечении срока действия. Приглашение можно продлить, отправив его повторно с помощью выпадающего меню в строке с именем тестировщика.

Следующие шаги