Как подписать уже собранный Apk

Я декодировал APK с apktool (поскольку исходный исходный код был потерян), поэтому я мог исправить некоторые проблемы с файлами xml-макета. Затем я восстановил его с помощью apktool, и когда я попытался установить его на свое устройство (используя adb: adb install appname.apk), он дал мне эту ошибку:

[INSTALL_PARSE_FAILED_NO_CERTIFICATES]

исходный apk, однако, был подписан хранилищем ключей (на eclipse IDE), этого нет, как я могу его правильно подписать с помощью оригинального файла трапецеидального искажения вне Eclipse!?

Ответ 1

создать ключ, используя

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

затем подпишите apk, используя:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name

проверьте здесь дополнительную информацию

Ответ 2

Автоматизированный процесс:

Используйте этот инструмент (использует новый apksigner из Google):

https://github.com/patrickfav/uber-apk-signer

Отказ от ответственности: Im разработчик:)

Ручной процесс:

Шаг 1: Генерация Keystore (только один раз)

Вам нужно создать хранилище ключей один раз и использовать его для подписи unsigned apk. Используйте keytool предоставленный JDK, найденный в %JAVA_HOME%/bin/

keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app

Шаг 2 или 4: Zipalign

zipalign который является инструментом, предоставляемым Android SDK, найденным в например %ANDROID_HOME%/sdk/build-tools/24.0.2/ является обязательным этапом оптимизации, если вы хотите загрузить apk в Play Store.

zipalign -p 4 my.apk my-aligned.apk

Примечание: при использовании старого jarsigner вам необходимо выполнить zipalign ПОСЛЕ подписания. При использовании нового метода apksigner вы делаете это перед тем, как подписываться (запутываю, я знаю). Вызов zipalign перед тем, как apksigner отлично работает, потому что apksigner сохраняет выравнивание и сжатие APK (в отличие от jarsigner).

Вы можете проверить выравнивание с помощью

zipalign -c 4 my-aligned.apk

Шаг 3: Подпишите и подтвердите

Использование встроенных инструментов 24.0.2 и старше

Используйте jarsigner, который, как и keytool, поставляется с дистрибутивом JDK найти в %JAVA_HOME%/bin/ и использовать его так:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name

и может быть проверено с помощью

jarsigner -verify -verbose my_application.apk

Использование встроенных инструментов 24.0.3 и более новых

Android 7.0 представляет схему подписки APK v2, новую схему подписки на приложения, которая предлагает более быстрое время установки приложений и большую защиту от несанкционированных изменений в файлах APK (см. здесь и здесь для получения дополнительной информации). Поэтому Google внедрил свой собственный подписчик apk под названием apksigner (duh!) Файл script можно найти в %ANDROID_HOME%/sdk/build-tools/24.0.3/ (.jar находится в подпапке /lib). Используйте его так:

apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name

и может быть проверено с помощью

apksigner verify my-app.apk

Официальную документацию можно найти здесь.

Ответ 3

Самый быстрый способ - подписаться с хранилищем отладки:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore app.apk androiddebugkey -storepass android

или в Windows:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore %USERPROFILE%/.android/debug.keystore test.apk androiddebugkey -storepass android

Ответ 4

Вы используете jarsigner для подписания APK. Вам не нужно подписываться с оригинальным хранилищем ключей, просто создайте новый. Читайте подробности: http://developer.android.com/guide/publishing/app-signing.html

Ответ 6

Для тех из вас, кто не хочет создавать файл bat для редактирования для каждого проекта, или не хотите запоминать все команды, связанные с программами keytools и jarsigner, и просто хотите сделать это в одном процессе, используйте это программа:

http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx

Я построил его, потому что мне надоело длительный процесс ввода всех файлов в каждый раз.

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

Не требуется установка, он полностью переносится и сохраняет свои конфигурации в CSV в той же папке.