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


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

Из этого руководства вы узнаете, как распространять APK-файлы среди тестировщиков с помощью плагина Gradle App Distribution.

Подготовка

  1. Если вы ещё этого не сделали, добавьте Firebase в проект Android.

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

  2. Откройте страницу App Distribution консоли Firebase. Выберите проект Firebase, когда появится запрос, выберите приложение с помощью переключателя приложений и нажмите Начать.

1. Как настроить проект для Android

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

    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.5.0" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.3.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.5.0' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.3.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, если не используется другой способ аутентификации.

Шаг 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 = "APK"
              releaseNotesFile = "/path/to/releasenotes.txt"
              testers = "ali@example.com, bri@example.com, cal@example.com"
          }
      }
  }

  // ...
}

Groovy

android {

  // ...

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

  // ...
}

В App Distribution можно настроить типы сборки и варианты продукта.

Например, чтобы распространять сборки debug и release в вариантах продукта demo и full, выполните следующие действия:

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. Требуется, только если у вас не установлен плагин Gradle для сервисов Google. Идентификатор приложения можно найти в файле google-services.json или в консоли Firebase на странице Общие настройки. Значение в файле build.gradle переопределяет значение, полученное от плагина google-services.

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

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

artifactType

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

artifactPath

Абсолютный путь к APK-файлу или набору Android App Bundle, который вы хотите загрузить.

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"

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

testDevicesFile="/path/to/testDevices.txt"
testUsername

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

testPassword или testPasswordFile

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

Вы также можете указать путь к текстовому файлу с паролем:

testPasswordFile="/path/to/testPassword.txt"
testUsernameResource

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

testPasswordResource

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

testNonBlocking

Если задать этот параметр при выполнении тестов агента тестирования приложений, команда запустит тесты и сразу же вернет результат, не дожидаясь их завершения. Чтобы посмотреть результаты тестирования, откройте консоль Firebase. Если этот флаг не задан, команда будет заблокирована до завершения тестов и выйдет с кодом ошибки, если какой-либо из тестов не пройдет.

resultsBucket

Специальный сегмент Google Cloud Storage (GCS), в котором хранятся результаты тестирования. Если оставить поле пустым, будет использоваться корзина по умолчанию. Сегмент должен принадлежать проекту с включенным платежным аккаунтом. При указании сегмента взимается плата за использованное хранилище.

stacktrace

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

Шаг 4. Как распространять приложение среди тестировщиков

  1. Чтобы упаковать тестовое приложение и пригласить тестировщиков, создайте цели BUILD-VARIANT и appDistributionUploadBUILD-VARIANT с помощью оболочки Gradle проекта, где BUILD-VARIANT – это необязательный вариант продукта и тип сборки, настроенные на предыдущем шаге. Подробнее о конфигурациях сборки…

    Например, чтобы распространить приложение, используя вариант сборки release, выполните следующую команду:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    Если вы прошли аутентификацию с помощью аккаунта Google и не указали учетные данные в файле сборки Gradle, добавьте переменную FIREBASE_TOKEN:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. Вы также можете переопределить значения, заданные в файле build.gradle, передав аргументы командной строки в форме --<property-name>=<property-value>. Пример:

    • Чтобы загрузить отладочную сборку в App Distribution:

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • Чтобы пригласить дополнительных тестировщиков или удалить существующих из проекта 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 дней, чтобы принять приглашение. Когда до истечения срока действия приглашения остается пять дней, в консоли Firebase рядом с тестировщиком в выпуске появляется уведомление об истечении срока действия. Приглашение можно обновить, отправив его повторно с помощью раскрывающегося меню в строке тестировщика.

Дальнейшие действия