Распространяйте приложения 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. Свяжите свое приложение Firebase Android с учетной записью разработчика 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.2" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.1.1" apply false
    }

    Groovy

    plugins {
        // ...
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.4.2' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.1.1' apply false
    }
  2. В файле Gradle вашего модуля (уровня приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте плагин App Distribution Gradle:

    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 на странице General Settings . Значение в вашем файле 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 рядом с тестировщиком в релизе появляется уведомление об истечении срока действия. Приглашение можно продлить, отправив его повторно с помощью раскрывающегося меню в строке тестировщика.

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