Skip to main content

Как настроить подписание приложения

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

Что даёт подпись приложения?
  • Гарантирует подлинность. Подпись подтверждает, что приложение создано и подписано разработчиком, указанным в манифесте. Это защищает от подделок и даёт пользователям уверенность в том, что приложение является оригинальным и безопасным.
  • Обеспечивает целостность. Подпись включает в себя цифровую метку, которая гарантирует, что приложение не было изменено после подписания. Это помогает предотвратить внесение нежелательных изменений, например, внедрение вредоносного кода или модификацию функциональности.
  • Обеспечивает безопасную установку и обновление. Для магазинов приложений, таких как RuStore, Google Play и Huawei AppGallery, обязательно, чтобы все приложения были подписаны перед публикацией. Это помогает обеспечить безопасность при установке и обновлении приложений, так как магазины могут проверить подпись перед предоставлением доступа к приложению.
  • Предотвращает изменения. Подписание приложения помогает предотвратить изменение его содержимого после релиза. Даже если приложение загружено из магазина и установлено на устройстве пользователя, подпись остаётся прикреплённой к приложению и её можно использовать для проверки его целостности в любое время.
  • Обеспечивает соблюдение требований платформы Android. Все приложения должны быть подписаны перед установкой на устройства. Несоблюдение этого требования может привести к отклонению приложения магазином приложений или невозможности его установки на устройства пользователей.

Чтобы подписать приложение:

  1. Создайте хранилище ключей с ключом подписи.
  2. Настройте подписание релизной версии приложения.

Шаг 1. Создайте хранилище ключей с ключом подписи

note

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

Вы можете создать подпись с помощью инструмента keytool, входящего в состав JDK (Java Development Kit), или через интерфейс Android Studio. Оба способа равнозначны, выберите более удобный для себя.

caution

Для генерации подписи на вашем компьютере должна быть установлена Java.

a. (Для Windows) Перед использованием утилиты keytool предварительно перейдите в каталог bin установленной Java. Ваш путь и версия Java могут отличаться:

cd "C:\Program Files (x86)\Java\jre1.8.0_201\bin"

b. Запустите генерацию подписи командой:

keytool -genkeypair -storetype JKS -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias

В команде укажите свои значения вместо:

  • my-release-key.jks — название хранилища ключей.

    Хранилище ключей рекомендуется размещать в надёжном месте. Если нужно создать хранилище в определённом каталоге, а не в текущем, укажите полный путь. Например, С:\Users\user\keys\my-release-key.jks или /Users/user/keys/my-release-key.jks.

  • my-key-alias — псевдоним ключа подписи, уникальный идентификатор для ключа подписи в хранилище ключей.

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

caution

Сохраните пароли. Их нужно будет вводить каждый раз при работе с хранилищем ключей и ключом подписи.

Шаг 2. Настройте подписание релизной версии приложения

Вы можете настроить подписание приложения через файл build.gradle или через интерфейс Android Studio. Оба способа равнозначны, выберите более удобный для себя.

Чтобы подписать APK- или AAB-файл вашего приложения с помощью Gradle, настройте Android-проект для использования ключа подписи.

Создание файла конфигурации Gradle

Создайте файл конфигурации Gradle, например release-signing.properties, и определите в нем параметры ключа:

release-signing.properties
storeFile=my-release-key.jks
storePassword=my_store_password
keyAlias=my-key-alias
keyPassword=my_key_password
  • my-release-key.jks — путь к файлу хранилища ключей.
  • my_store_password — пароль от хранилища ключей.
  • my-key-alias — псевдоним ключа подписи.
  • my_key_password — пароль от ключа подписи.

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

Отредактируйте файл build.gradle вашего приложения, указав ключ подписи для сборки релизной версии приложения:

build.gradle
android {
...
signingConfigs {
release {
// Путь к файлу конфигурации Gradle
def keystorePropertiesFile = rootProject.file("release-signing.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
}
}
...
buildTypes {
release {
...
// Применение подписи для релизной сборки
signingConfig signingConfigs.release
}
}
}

Результат

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

Проверка подписи при работе SDK RuStore

В некоторых SDK от RuStore, таких как SDK платежей и SDK отзывов и оценок, есть верификация. Подпись приложения, установленного на устройстве, сверяется с подписью приложения, загруженного в RuStore Консоль. Если они не совпадают, появляется ошибка верификации SDK.

Чтобы убедиться, что подписи приложения совпадают, заранее проверьте их.

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

После регистрации в RuStore Консоль вы можете опубликовать подписанное приложение.

note

При публикации приложений в формате Android App Bundle подпись дополнительно нужно загрузить в RuStore Консоль. Подробнее об этом можно узнать в статье Загрузка приложений в формате AAB.