Подписывание кода для Android
В этой статье вы узнаете, как подписывать код для Android (APK). Вам нужно будет подписать свое приложение для Android, если вы выбрали Android как одну из платформ при создании и сборки своего проекта упаковки.
Внимание!
Если вместо этого вы хотите подписать приложение AAB для распространения в Google Play, см. статью Подписывание своего приложения.
Подготовьте свой компьютер
Для начала вам потребуется предоставить следующую информацию:
- Установка Android Studio
- Установите OpenSSL
Создание ключей
Заметка
Пропустите и перейдите к подписыванию пакета APK, если вы уже сгенерировали ключи и хэш подписи при создании регистрации приложения.
Мы будем использовать keytool.exe (доступный после установки Android Studio, из расположения папки "Drive:\Program Files\Android\Android Studio\jre\bin\keytool.exe"), чтобы создать сертификат для подписи пакета приложения. Keytool используется для управления хранилищем ключей (базой данных) криптографических ключей, цепочек сертификатов X.509 и доверенных сертификатов.
Чтобы сгенерировать ключ, откройте командную строку и выполните следующую команду:
keytool -genkey -alias SIGNATURE_ALIAS -keyalg RSA -keystore PATH_TO_KEYSTORE -keysize 2048 -validity 10000
Параметры:
- genkey — команда для генерации ключа.
- alias — псевдоним, который будет использоваться в будущем для ссылки на запись хранилища ключей, содержащую ключи, которые будут сгенерированы.
- keyalg — имя алгоритма ключа.
- keystore — имя хранилища ключей, которое вы используете.
- keysize — размер каждого генерируемого ключа.
- validity — срок действия ключа как количество дней.
Пример:
При подготовке Key Vault параметр PATH_TO_KEYSTORE должен иметь расширение .pfx.
keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000
При подготовке к ручной подписи PATH_TO_KEYSTORE должен иметь расширение .jks.
keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.jks -keysize 2048 -validity 10000
Генерирование хэша подписи
Заметка
Пропустите и перейдите к подписыванию пакета APK, если вы уже сгенерировали ключи и хэш подписи при создании регистрации приложения.
После генерации ключа мы будем использовать команду exportcert в keytool для экспорта сертификата хранилища ключей.
keytool -exportcert -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE | openssl sha1 -binary | openssl base64
Параметры:
- exportcert — считывает из хранилища ключей сертификат, связанный с псевдонимом, и сохраняет его в файле cert_file. Если файл не указан, сертификат выводится в StdOut.
- alias — псевдоним, используемый при генерации ключей ранее.
- keystore — имя хранилища ключей, которое вы используете.
- openssl — генерирует ключ SHA1 для Android.
Добавьте сгенерированный хэш подписи в URI перенаправления во время регистрации приложения.
Преобразование шестнадцатеричного SHA1 в хэш подписи в кодировке Base64 вручную
Вы можете увидеть следующую ошибку, если ваш хэш подписи неправильно закодирован или неприемлем на портале Azure:
"Хэш подписи должен быть SHA1 в кодировке base64".
При появлении этой ошибки попробуйте сгенерировать хэш подписи, выполнив следующие действия:
- Выполните
keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE
, чтобы просмотреть информацию о сертификате в подробном режиме. - Скопируйте значение SHA1 в разделе Отпечатки сертификатов из вывода. Убедитесь, что вы копируете только шестнадцатеричное значение.
Например:EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
- Используйте любой доступный конвертер "Шестнадцатеричное значение в Base64", чтобы преобразовать скопированное шестнадцатеричное значение отпечатка сертификата в кодированное значение Base64.
Пример значения в кодировке Base64:8CPPeLaz9etdqQyaQubcqsy2Tw=
- Скопируйте сгенерированное значение в кодировке Base64 в качестве Хэша подписи на портале Azure во время регистрации приложения.
Подписывание пакета APK
Чтобы подписать пакет APK, мы будем использовать средство apksigner. Это средство позволяет подписывать APK и гарантирует, что подпись пакета APK будет успешно проходить проверку на всех платформах Android, поддерживаемых APK.
Найдите свой apksigner
Проверьте путь SDK Android в Android Studio.
Выберите Инструмент>Диспетчер пакетов SDK>Расположение пакета SDK Android.
Если вы используете iOS, проверьте файл apksigner в каталоге buildTools Version:
Перейдите в каталог SDK>build-tools>buildToolsVersion>lib и проверьте файл apksigner.jar
Используйте файл apksigner
Выполните следующую команду, чтобы использовать apksigner и подписать пакет:
apksigner.bat sign --ks PATH_TO_KEYSTORE --ks-key-alias KEY_ALIAS PATH_TO_APK
Параметры:
- ks — путь к хранилищу ключей.
- ks-key-alias — путь псевдонима ключа к файлу APK.
При появлении запроса введите пароль.
Дополнительная информация: Средства командной строки Android Studio: apksigner
Распространение приложения
Вы можете разместить пакет в службе распространения, такой как Центр приложений. Для распространения с помощью Microsoft Intune см. Добавление бизнес-приложения Android в Microsoft Intune. Чтобы узнать, как предоставить приложению доступ к службе защиты приложений Intune, см. Предоставить вашему приложению доступ к службе защиты приложений Intune.