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


Вы можете интегрировать App Distribution в процесс сборки Android с помощью плагина App Distribution Gradle. Плагин позволяет указать тестировщиков и примечания к выпуску в файле 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) добавьте плагин 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.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 ищет учетные данные в CLI 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. Требуется, только если у вас не установлен плагин 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

Группы тестировщиков, которым вы хотите распространить сборки (см. раздел Управление тестировщиками). Группы указываются с помощью псевдонимов, которые можно найти на вкладке Тестировщики в консоли 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 и не указали учетные данные в файле build.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. Это тот же аргумент, который используется для действия upload.

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

  • firebase_console_uri – ссылка на консоль Firebase, в которой показан один выпуск. Вы можете поделиться этой ссылкой с другими разработчиками в вашей организации.
  • testing_uri – ссылка на выпуск в приложении для тестировщиков (встроенное приложение Android), которая позволяет тестировщикам просматривать примечания к выпуску и устанавливать приложение на свои устройства. Чтобы воспользоваться ссылкой, тестировщику нужен доступ к выпуску.
  • binary_download_uri – подписанная ссылка, которая напрямую скачивает и устанавливает двоичный файл приложения (APK или AAB). Ссылка действительна в течение одного часа.

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

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

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

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