Настройка подписывания кода Android в Центре приложений

Важно!

Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio до полного прекращения его использования, существует несколько рекомендуемых вариантов, на которые можно перейти.

Узнайте больше о сроках поддержки и альтернативных вариантах.

Совет

Для пользователей Xamarin.Android процесс немного отличается. Дополнительные сведения см . в руководстве по подписывке кода Xamarin.Android .

Подписывание приложения — это требование для запуска приложения на реальных устройствах в процессе разработки или его распространения через бета-версию программы или в Магазине Play. Без подписывания кода приложение может выполняться только в эмуляторе.

Когда Центр приложений создает приложение Android с типом сборки отладки, хранилище ключей для разработчика не требуется, но может быть отправлено. Эти сборки будут автоматически подписаны с помощью ключа отладки. Для сборки выпуска, которая будет развернута, отправьте хранилище ключей в Центр приложений.

Создание хранилища ключей

Если у вас нет хранилища ключей, его можно создать в Android Studio. Инструкции по созданию хранилища ключей для подписания пакетов APK см. в официальном руководстве пользователя Android Studio.

Настройка подписывания кода

Центр приложений поддерживает три различных способа настройки подписывания кода для приложений Android. Для всех трех методов сначала необходимо перейти к конфигурации сборки и включить подписывание кода:

  1. Перейдите к приложению в Центре приложений.
  2. Перейдите в раздел Сборка.
  3. Перейдите в ветвь, которую нужно настроить, выбрав ее из списка.
  4. Используйте меню "Параметры" в правом верхнем углу или выберите Настроить , если ветвь еще не настроена для сборки.
  5. Включение подписи сборок.
  6. Выберите Сохранить.

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

В Android 11 обязательно использовать подписывателя APK (если вы используете API уровня 30), так как он установит некоторые дополнительные схемы "Схема подписи APK версии 2 теперь требуется". Центр приложений теперь (с 17 декабря 2020 г.) подписывает приложения Android с помощью подписывателя APK, а не jar signer, который использовался ранее. В рамках функции, позволяющей включить функцию подписывания APK в Центре приложений, была реализована задача подписывания Android версии 3, а требования к новой задаче подписывания — изменение способа сохранения файла хранилища ключей для хранения файла хранилища ключей в безопасном файле AzDO (задача сборки и выпуска подписывания Android — Azure Pipelines | Документация Майкрософт).

Предупреждение

Все конфигурации сборки, в которые были отправлены файлы хранилища ключей до 17 декабря 2020 г., по-прежнему используют метод подписывания схемы подписи APK версии 2 (jarsigner). Чтобы использовать поток подписывания схемы подписи APK версии 3, пользователям просто нужно повторно отправить файлы хранилища ключей и сохранить конфигурацию ветви.

Примечание

Использование подключаемого модуля Android Gradle версии 4.1.x поддерживается не полностью. Чтобы использовать эту версию, необходимо добавить следующий параметр в gradle.properties файл:

 android.useNewApkCreator = false

A. Хранение всего содержимого в конфигурации Gradle

Сведения о подписи можно указать в build.gradle файле (уровень приложения). Сведения о подписи, а также все учетные данные и сведения о хранилище ключей будут отображаться в репозитории. Сначала добавьте все необходимые элементы в код и проверка их в репозиторий. Затем в конфигурации сборки в Центре приложений включите параметры My Gradle полностью настроены для автоматической обработки подписывания.

Б. Отправка всего содержимого в Центр приложений

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

Примечание

Сборка может быть подписана только один раз. Убедитесь, что у вас нет конфликтов с конфигурациями подписывания в конфигурации Gradle для выбранного варианта сборки. Если параметры подписывания есть как в Центре приложений, так и в файле Gradle, сборка может быть подписана дважды, что приведет к конфликтам.

Настройте конфигурацию сборки в Центре приложений следующим образом:

  1. Отключить параметры My Gradle полностью настроены для автоматической обработки подписывания.
  2. Отправьте файл хранилища ключей в раскрывающееся меню Отправка файла хранилища ключей . Вы можете перетащить файл в поле или щелкнуть его и найти файл. Файлы хранилища ключей имеют расширение .keystore или .jks.
  3. Введите пароль хранилища ключей, псевдоним ключа и пароль ключа в соответствующих полях. Эти значения совпадают с значениями, которые можно было бы ввести в Android Studio при подписании сборки.

В. Хранение сведений о подписи в репозитории с помощью переменных среды

Используйте этот метод, если репозиторий уже содержит хранилище ключей, но вы не хотите хранить в нем учетные данные. Во время сборки учетные данные будут предоставлены в виде свойств системы для сборки Gradle. Ознакомьтесь со следующим примером кода, чтобы узнать, как их использовать:

android {
    signingConfigs {
        releaseSigningConfig {
            storeFile rootProject.file("app/testapp.jks")
            storePassword System.getProperty("APPCENTER_KEYSTORE_PASSWORD")
            keyAlias System.getProperty("APPCENTER_KEY_ALIAS")
            keyPassword System.getProperty("APPCENTER_KEY_PASSWORD")
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.releaseSigningConfig
        }
    }
}

В приведенном выше коде защита значений за системными свойствами, внедренными в сборку, обеспечивает безопасность учетных данных для подписывания — значения шифруются и доступны только агентам сборки во время сборки. Эти значения можно указать в Центре приложений. Вы также можете жестко задать любое из значений и проверка их в репозиторий. Чтобы использовать Центр приложений для защиты значений, выполните следующие действия.

  1. Перейдите к конфигурации сборки.
  2. Убедитесь, что флажок My Gradle settings (Параметры my Gradle) полностью установлен для автоматической обработки подписывания .
  3. Введите пароль хранилища ключей, псевдоним ключа и пароль ключа в соответствующих полях. Эти значения совпадают с значениями, которые можно было бы ввести в Android Studio при подписании сборки.

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

Примечание

Если вы используете signingConfig параметр в buildTypes разделе в build.gradle файле (уровень приложения), во время сборки Центра приложений могут возникнуть ошибки подписывания кода. Это особенно актуально для приложений, использующих React Native для Android версии 0.60.x и более поздних версий:

 Execution failed for task ':app:validateSigningRelease'.
 Keystore file '.../android/app/debug.keystore' not found for signing config 'debug'

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

Если вы отправили хранилище ключей в конфигурацию сборки на портале Центра приложений, учтите, что при таком подходе потребуется удалить signingConfig параметр из buildTypes раздела build.gradle файла (уровня приложения), если вы не обновили его из состояния по умолчанию шаблона проекта React Native.