Firebase is back at Google I/O on May 10! Register now

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

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

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

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

  • Выявляйте и устраняйте проблемы, связанные с устройством.

  • Протестируйте функции набора приложений, такие как доставка функций Play и доставка объектов Play .

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

Требуемые разрешения

Чтобы загрузить AAB в App Distribution, вы должны связать свое приложение Firebase с приложением в Google Play . Для выполнения этих действий у вас должен быть необходимый уровень доступа.

Если у вас нет необходимого доступа к Firebase, вы можете попросить владельца проекта Firebase назначить вам соответствующую роль в настройках IAM консоли Firebase . Если у вас есть вопросы о доступе к проекту Firebase, в том числе о поиске или назначении владельца, ознакомьтесь с часто задаваемыми вопросами «Разрешения и доступ к проектам Firebase» .

Следующая таблица относится к связыванию приложения Firebase с приложением в Google Play, а также к загрузке AAB.

Действие в консоли Firebase Требуется разрешение IAM Роли IAM, которые по умолчанию включают необходимые разрешения Дополнительные необходимые роли
Свяжите приложение Firebase с приложением в Google Play firebase.playLinks.update Одна из следующих ролей: Доступ к учетной записи разработчика Google Play в качестве администратора
Загрузить AAB для распространения приложений firebaseappdistro.releases.update Одна из следующих ролей: ––

Прежде чем вы начнете

  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 перейдите в Project settings и выберите вкладку Integrations .

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

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

    Узнайте больше о привязке к Google Play .

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

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

    заводной

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath 'com.android.tools.build:gradle:7.2.0'
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath 'com.google.gms:google-services:4.3.15'
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath 'com.google.firebase:firebase-appdistribution-gradle:4.0.0'
      }
    }
    

    Котлин

    buildscript {
      repositories {
        // Make sure that you have the following two repositories
        google()  // Google's Maven repository
        mavenCentral()  // Maven Central repository
      }
    
      dependencies {
          ...
          classpath("com.android.tools.build:gradle:7.2.0")
    
          // Make sure that you have the Google services Gradle plugin dependency
          classpath("com.google.gms:google-services:4.3.15")
    
          // Add the dependency for the App Distribution Gradle plugin
          classpath("com.google.firebase:firebase-appdistribution-gradle:4.0.0")
      }
    }
    
  2. В файле Gradle вашего модуля (на уровне приложения) (обычно <project>/<app-module>/build.gradle или <project>/<app-module>/build.gradle.kts ) добавьте плагин 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")
    }
    
  3. Если вы находитесь за корпоративным прокси-сервером или брандмауэром, добавьте следующее системное свойство Java , которое позволяет службе распространения приложений загружать ваши дистрибутивы в Firebase:

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

Шаг 2. Авторизуйтесь в Firebase

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

Шаг 3. Настройте свойства дистрибутива

В файле Gradle вашего модуля (на уровне приложения) (обычно <project>/<app-module>/build.gradle или <project>/<app-module>/build.gradle.kts ) настройте распространение приложений, добавив как минимум один раздел firebaseAppDistribution .

Например, чтобы раздать сборку release тестерам, следуйте этим инструкциям:

заводной

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType="AAB"
              releaseNotesFile="/path/to/releasenotes.txt"
              testers="ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Котлин

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      release {
          firebaseAppDistribution {
              artifactType = "AAB"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

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

Например, чтобы распространять debug и release сборки в «демонстрационном» и «полном» вариантах продукта, следуйте этим инструкциям:

заводной

android {

  // ...

  buildTypes {
      debug {...}
      release {...}
  }

  flavorDimensions "version"
  productFlavors {
      demo {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for demo version"
              testers="demo@testers.com"
          }
      }
      full {
          dimension "version"
          firebaseAppDistribution {
              releaseNotes="Release notes for full version"
              testers="full@testers.com"
          }
      }
  }

  // ...
}

Котлин

import com.google.firebase.appdistribution.gradle.firebaseAppDistribution

android {

  // ...

  buildTypes {
      getByName("debug") {...}
      getByName("release") {...}
  }

  flavorDimensions += "version"
  productFlavors {
      create("demo") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for demo version"
              testers = "demo@testers.com"
          }
      }
      create("full") {
          dimension = "version"
          firebaseAppDistribution {
              releaseNotes = "Release notes for full version"
              testers = "full@testers.com"
          }
      }
  }

  // ...
}

Используйте следующие параметры для настройки раздачи:

Параметры сборки распространения приложений
appId

Идентификатор приложения Firebase вашего приложения. Требуется, только если у вас не установлен подключаемый модуль Google Services Gradle. Идентификатор приложения можно найти в файле 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

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

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

groups="qa-team, android-testers"

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

groupsFile="/path/to/tester-groups.txt"
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). Ссылка действительна через час.

Как только вы распространяете свою сборку, она становится доступной на панели управления распространением приложений консоли Firebase в течение 150 дней (пять месяцев). Когда срок действия сборки истекает через 30 дней, уведомление об истечении срока действия появляется как в консоли, так и в списке сборок тестировщика на его тестовом устройстве.

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

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

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