Как настроить подписание приложения
Перед тем как опубликовать своё приложение, настройте подписание его релизных версий. Это важный этап разработки и распространения, который обеспечивает безопасность, целостность и доверие пользователей.
Что даёт подпись приложения?
- Гарантирует подлинность. Подпись подтверждает, что приложение создано и подписано разработчиком, указанным в манифесте. Это защищает от подделок и даёт пользователям уверенность в том, что приложение является оригинальным и безопасным.
- Обеспечивает целостность. Подпись включает в себя цифровую метку, которая гарантирует, что приложение не было изменено после подписания. Это помогает предотвратить внесение нежелательных изменений, например, внедрение вредоносного кода или модификацию функциональности.
- Обеспечивает безопасную установку и обновление. Для магазинов приложений, так их как RuStore, Google Play и Huawei AppGallery, обязательно, чтобы все приложения были подписаны перед публикацией. Это помогает обеспечить безопасность при установке и обновлении приложений, так как магазины могут проверить подпись перед предоставлением доступа к приложению.
- Предотвращает изменения. Подписание приложения помогает предотвратить изменение его содержимого после релиза. Даже если приложение загружено из магазина и установлено на устройстве пользователя, подпись остаётся прикреплённой к приложению и её можно использовать для проверки его целостности в любое время.
- Обеспечивает соблюдение требований платформы Android. Все приложения должны быть подписаны перед установкой на устройства. Несоблюдение этого требования может привести к отклонению приложения магазином приложений или невозможности его установки на устройства пользователей.
Чтобы подписать приложение:
Шаг 1. Создай те хранилище ключей с ключом подписи
Если у вас уже есть ключ подписи приложения, перейдите к следующему шагу.
Вы можете создать подпись с помощью инструмента keytool
, входящего в состав JDK (Java Development Kit), или через интерфейс Android Studio.
Оба способа равнозначны, выберите более удобный для себя.
- keytool
- Android Studio
Для генерации подписи на вашем компьютере должна быть установлена 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
— псевдоним ключа подписи, уникальный идентификатор для ключа подписи в хранилище ключей.
с. Введите пароль для хранилища ключей, параметры владельца (имя, департамент, организация, город, страна — часть можно пропустить) и пароль для ключа подписи.
Сохраните пароли. Их нужно будет вводить каждый раз при работе с хранилищем ключей и ключом подписи.
Можно использовать Android Studio для создания хранилища с ключом подписи.
-
Откройте Android Studio и перейдите в меню Build — Generate Signed Bundle/APK.
-
Выберите формат вашего приложения APK или Android App Bundle.
-
Нажмите Create new, чтобы создать ключ подписи и хранилище ключей.
-
Выберите каталог, в котором вы хотите создать хранилище ключей, и введите имя его имя в поле File name снизу.
-
Нажмите ОК.
-
Укажите параметры ключа и хранилища:
- Password и Confirm — пароль хранилища ключей.
- Alias — псевдоним ключа подписи, уникальный идентификатор для ключа подписи в хранилище ключей.
- Password и Confirm — пароль ключа подписи.
- Certificate — параметры владельца ключа (имя, департамент, организация, город, страна — часть можно пропустить).
предупреждениеСохраните пароли и псевдоним ключа. Их нужно будет вводить каждый раз при работе с хранилищем ключей и ключом подписи.
-
Нажмите ОК.
-
Перейдите к подписанию приложения, нажав Next или нажмите Cancel, если планируете подписать приложение позже.
Шаг 2. Настройте подписание релизной версии приложения
Вы можете настроить подписание приложения через файл build.gradle
или через интерфейс Android Studio.
Оба способа равнозначны, выберите более удобный для себя.
- Gradle
- Android Studio
Чтобы подписать APK- или AAB-файл вашего приложения с помощью Gradle, настройте Android-проект для использования ключа подписи.
Создание файла конфигурации Gradle
Создайте файл конфигурации Gradle, например 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
вашего приложения, указав ключ подписи для сборки релизной версии приложения:
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
}
}
}
Чтобы подписать APK- или AAB-файл вашего приложения через интерфейс Android Studio, выберите ключ подписи и укажите его параметры.
-
Откройте Android Studio и перейдите в меню Build — Generate Signed Bundle/APK.
-
Выберите формат вашего приложения APK или Android App Bundle.
-
Убедитесь, что в поле Module указано ваше приложение.
-
Укажите путь до ключа, нажав Choose existing, и заполните параметры ключа и хранилища:
- Key store password — пароль для хранилища ключей.
- Key alias — псевдоним ключа подписи
- Key password — пароль ключа подписи.
примечаниеПуть и параметры будут заполнены автоматически, если перед этим вы создавали новый ключ. В этом случае сразу перейдите к следующему шагу.
-
Нажмите Next.
-
В Build Variants выберите Release и нажмите Create.
-
Дождитесь окончания генерации подписанного приложения. Когда процесс завершится, снизу справа появится сообщение «Generate Signed APK» или «Generate Signed Bundle».
Результат
После выполнения этих шагов ваше приложение будет подписываться с использованием указанного ключа при сборке релизной версии.
Проверка подписи при работе SDK RuStore
В некоторых SDK от RuStore, таких как SDK платежей и SDK отзывов и оценок, есть верификация. Подпись приложения, установленного на устройстве, сверяется с подписью приложения, загруженного в RuStore Консоль. Если они не совпадают, появляется ошибка верификации SDK.
Чтобы убедиться, что подписи приложения совпадают, заранее проверьте их.
Следующие шаги
После регистрации в RuStore Консоль вы можете опубликовать подписанное приложение.
При публикации приложений в формате Android App Bundle подпись дополнительно нужно загрузить в RuStore Консоль. Подробнее об этом можно узнать в статье Загрузка приложений в формате AAB.