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


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

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

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

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

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

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 Firebase.

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

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

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

,


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

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

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

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

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

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

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

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

groups="qa-team, android-testers"

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

groupsFile="/path/to/tester-groups.txt"
testDevices или testDevicesFile

Следующие типы распределения являются частью функции Beta Automated Tester .

Тестовые устройства, на которые вы хотите распределить сборки (см. Автоматизированные тесты ).

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

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

Отпечатает Stacktrace для исключений пользователей. Это полезно при отладке.

Шаг 4. Распределите ваше приложение на тестеров

  1. Наконец, чтобы упаковать ваше тестовое приложение и пригласить тестеров, построить цели BUILD-VARIANT и appDistributionUpload BUILD-VARIANT с Gradle Wrapper вашего проекта, где 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 - Ссылка на выпуск в опыте Tester (Android Native), которая позволяет тестировщикам просматривать заметки о выпуске и устанавливать приложение на их устройство. Тестер нуждается в доступе к выпуску, чтобы использовать ссылку.
  • binary_download_uri - подписанная ссылка, которая напрямую загружает и устанавливает приложение Binary (APK или AAB -файл). Ссылка истекает через час.

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

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

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

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

,


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

В этом руководстве описывается, как распространять APK для тестеров, используя плагин App Distribution Gradle.

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

Если вы еще этого не сделали, добавьте Firebase в свой Android Project .

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

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

  1. В вашем файле Gradle на уровне корневого уровня ( <project>/build.gradle.kts или <project>/build.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.4.2" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.0.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.2' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.0.0' apply false
    }
  2. В вашем модуле (на уровне приложения) Gradle File (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.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 File (обычно <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 для типов сборки и ароматов продукта .

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

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

Идентификатор приложения вашего приложения. Требуется только в том случае, если у вас установлен плагин Google Services Gradle. Вы можете найти идентификатор приложения в файле google-services.json или в консоли Firebase на странице общих настроек . Значение в вашем файле build.gradle переопределяет выходное значение из плагина google-services .

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

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

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 на консоли App Distribution Firebase.

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

groups="qa-team, android-testers"

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

groupsFile="/path/to/tester-groups.txt"
testDevices или testDevicesFile

Следующие типы распределения являются частью функции Beta Automated Tester .

Тестовые устройства, на которые вы хотите распределить сборки (см. Автоматизированные тесты ).

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

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

Отпечатает Stacktrace для исключений пользователей. Это полезно при отладке.

Шаг 4. Распределите ваше приложение на тестеров

  1. Наконец, чтобы упаковать ваше тестовое приложение и пригласить тестеров, построить цели BUILD-VARIANT и appDistributionUpload BUILD-VARIANT с Gradle Wrapper вашего проекта, где 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 - Ссылка на выпуск в опыте Tester (Android Native), которая позволяет тестировщикам просматривать заметки о выпуске и устанавливать приложение на их устройство. Тестер нуждается в доступе к выпуску, чтобы использовать ссылку.
  • binary_download_uri - подписанная ссылка, которая напрямую загружает и устанавливает приложение Binary (APK или AAB -файл). Ссылка истекает через час.

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

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

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

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

,


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

В этом руководстве описывается, как распространять APK для тестеров, используя плагин App Distribution Gradle.

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

Если вы еще этого не сделали, добавьте Firebase в свой Android Project .

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

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

  1. В вашем файле Gradle на уровне корневого уровня ( <project>/build.gradle.kts или <project>/build.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.4.2" apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id("com.google.firebase.appdistribution") version "5.0.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.2' apply false
    
        // Add the dependency for the App Distribution Gradle plugin
        id 'com.google.firebase.appdistribution' version '5.0.0' apply false
    }
  2. В вашем модуле (на уровне приложения) Gradle File (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.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. If you're behind a corporate proxy or firewall, add the following Java system property that enables App Distribution to upload your distributions to Firebase:

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

Step 2. Authenticate with Firebase

Before you can use the Gradle plugin, you must first authenticate with your Firebase project in one of the following ways. By default, the Gradle plugin looks for credentials from the Firebase CLI if no other authentication method is used.

Step 3. Configure your distribution properties

In your module (app-level) Gradle file (usually <project>/<app-module>/build.gradle.kts or <project>/<app-module>/build.gradle ), configure App Distribution by adding at least one firebaseAppDistribution section.

For example, to distribute the release build to testers, follow these instructions::

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"
          }
      }
  }

  // ...
}

You can configure App Distribution for build types and product flavors .

For example, to distribute debug and release builds in "demo" and "full" product flavors, follow these instructions:

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"
          }
      }
  }

  // ...
}

Use the following parameters to configure the distribution:

App Distribution Build Parameters
appId

Your app's Firebase App ID. Required only if you don't have the Google Services Gradle plugin installed. You can find the App ID in the google-services.json file or in the Firebase console on the General Settings page . The value in your build.gradle file overrides the value output from the google-services plugin.

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

The path to your service account private key JSON file. Required only if you use service account authentication.

artifactType

Specifies your app's file type. Can be set to "AAB" or "APK" .

artifactPath

Absolute path to the APK or AAB file you want to upload.

releaseNotes or releaseNotesFile

Release notes for this build.

You can either specify the release notes directly or the path to a plain text file.

testers or testersFile

The email addresses of the testers you want to distribute builds to.

You can specify the testers as a comma-separated list of email addresses:

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

Or, you can specify the path to a file containing a comma-separated list of email addresses:

testersFile="/path/to/testers.txt"
groups or groupsFile

The tester groups you want to distribute builds to (see Manage testers ). Groups are specified using group aliases , which you can find in the Testers tab in the Firebase App Distribution console.

You can specify the groups as a comma-separated list of group aliases:

groups="qa-team, android-testers"

Or, you can specify the path to a file containing a comma-separated list of group aliases:

groupsFile="/path/to/tester-groups.txt"
testDevices or testDevicesFile

The following distribution types are part of the Automated tester beta feature .

The test devices you want to distribute builds to (see Automated tests ).

You can specify the test devices as a semicolon-separated list of device specifications:

testDevices="model=shiba,version=34,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

Or, you can specify the path to a file containing a semicolon-separated list of device specifications:

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

The username for automatic login to be used during automated tests .

testPassword or testPasswordFile

The password for automatic login to be used during automated tests .

Or, you can specify the path to a plain text file containing a password:

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

Resource name for the username field for automatic login to be used during automated tests .

testPasswordResource

Resource name for the password field for automatic login to be used during automated tests .

testNonBlocking

Run automated tests asynchronously. Visit the Firebase console for the automatic test results.

stacktrace

Prints out the stacktrace for user exceptions. This is helpful when debugging issues.

Step 4. Distribute your app to testers

  1. Finally, to package your test app and invite testers, build the targets BUILD-VARIANT and appDistributionUpload BUILD-VARIANT with your project's Gradle wrapper, where BUILD-VARIANT is the optional product flavor and build type you configured in the previous step. For more information about product flavors, see Configure build variants .

    For example, to distribute your app using the release build variant, run the following command:

    ./gradlew assembleRelease appDistributionUploadRelease
    

    Or, if you authenticated with your Google Account and didn't provide credentials in your Gradle build file, include the FIREBASE_TOKEN variable:

    export FIREBASE_TOKEN=1/a1b2c3d4e5f67890
    ./gradlew --stop // Only needed for environment variable changes
    ./gradlew assembleRelease appDistributionUploadRelease
    
  2. You can also override the values set in your build.gradle file by passing command line arguments in the form of --<property-name>=<property-value> . Например:

    • To upload a debug build to App Distribution :

      ./gradlew bundleDebug appDistributionUploadDebug
          --artifactType="APK"
    • To invite additional testers or remove existing testers from your Firebase project:

      ./gradlew appDistributionAddTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"
      ./gradlew appDistributionRemoveTesters
          --projectNumber=<project_number>
          --emails="anothertester@email.com, moretesters@email.com"

      Once a tester has been added to your Firebase project, you can add them to individual releases. Testers who are removed will no longer have access to releases in your project, but may still retain access to your releases for a window of time.

    You can also specify testers using --file="/path/to/testers.txt" instead of --emails .

    The appDistributionAddTesters and appDistributionRemoveTesters tasks also accept the following arguments:

    • projectNumber : Your Firebase project number.

    • serviceCredentialsFile : The path to your Google service credentials file. This is the same argument used by the upload action.

The Gradle plugin outputs the following links after the release upload. These links help you manage binaries and ensure that testers and other developers have the right release:

  • firebase_console_uri - A link to the Firebase console displaying a single release. You can share this link with other developers in your org.
  • testing_uri - A link to the release in the tester experience (Android native app) that lets testers view release notes and install the app onto their device. The tester needs access to the release in order to use the link.
  • binary_download_uri - A signed link that directly downloads and installs the app binary (APK or AAB file). The link expires after one hour.

Once you distribute your build, it becomes available in the App Distribution dashboard of the Firebase console for 150 days (five months). When the build is 30 days from expiring, an expiration notice appears in both the console and your tester's list of builds on their test device.

Testers who haven't been invited to test the app receive email invitations to get started, and existing testers receive email notifications that a new build is ready to test (read the tester set up guide for instructions on how to install the test app). You can monitor the status of each tester-whether they accepted the invitation and whether they downloaded the app-in the Firebase console.

Testers have 30 days to accept an invitation to test the app before it expires. When an invitation is 5 days from expiring, an expiration notice appears in the Firebase console next to the tester on a release. An invitation can be renewed by resending it using the drop-down menu on the tester row.

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