Споделяне чрез


Знак за код за Android

В тази статия ще научите как да кодирате знак за Android (APK). Трябва да подпишете приложението си, ако сте избрали Android като една от платформите Android , докато създавате и изграждате своя проект за опаковане.

Важно

Ако вместо това искате да подпишете AAB приложение за разпространение в Google Play, вижте Подпишете приложението си.

Подготовка на вашия настолен компютър

Имате нужда от следната информация, за да започнете:

Генериране на ключове

Бележка

Пропуснете, за да подпишете 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

Екранна снимка с команда keytool, използваща параметрите в горния пример.

Генериране на хеш подпис

Бележка

Пропуснете, за да подпишете 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 hex в Base64-кодиран хеш на подписа

Може да видите следната грешка, ако хеширането на подписа ви не е правилно кодирано или неприемливо в портала на Azure:

„Хешът на подписа трябва да бъде кодиран с base64 SHA1.“

Когато се появи тази грешка, опитайте вместо това да генерирате хеша на подписа, като използвате следните стъпки:

  1. Изпълнете keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE за изброяване на информацията за сертификата в подробен режим.
  2. Копирайте SHA1 стойност под Сертификат пръстови отпечатъци раздел от изхода. Уверете се, че копирате само шестнадесетичната стойност.
    Например: EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  3. Използвайте всеки наличен конвертор „Шестнадесетичен към Base64“, за да преобразувате шестнадесетичната стойност на копирания пръстов отпечатък на сертификата в кодирана стойност на Base64.
    Пример за стойността, кодирана в Base64: 8CPPeLaz9etdqQyaQubcqsy2Tw=
  4. Копирайте генерираната кодирана стойност на Base64 като хеш на подпис в портала на Azure, докато регистрирате приложението.

Подпишете APK пакета

За да подпишем APK пакета, ще използваме инструмент apksigner. Този инструмент ви позволява да подписвате APK и да гарантирате, че подписът на APK пакета се проверява успешно на всички Android платформи, поддържани от APK.

Намерете своя apksigner

  1. Проверете пътя Android SDK в Android Studio.

  2. Изберете Инструмент > SDK мениджър > Местоположение на Android SDK.

    Ако използвате iOS, проверете файла apksigner от директорията buildTools Version :

    Отидете на SDK директория > инструменти за изграждане > 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

Разпространение на приложението

Можете да хоствате пакета в услуга за разпространение, като например App Center. За да разпространявате с помощта на Microsoft Intune, вижте Добавяне на Android line-of-business приложение към Microsoft Intune. За да научите относно предоставянето на достъп на приложение до услугата за защита на приложения Intune, вижте Дайте на приложението си достъп до услугата за защита на приложения Intune.

Вижте също