Как подписать файл apk android


112

Я пытаюсь подписать свой apk-файл. Я не могу понять, как это сделать. Я не могу найти хороших подробных инструкций. У меня очень небольшой опыт программирования, поэтому я буду благодарен за любую помощь.



2
Вы можете найти отличное руководство по этому поводу здесь, на androidcookers.co.cc/2012/06/…
Bratin,

1
Я использовал это полное руководство от создания собственного хранилища ключей до экспорта подписанного APK в Eclipse. mahadera.com/export-signed-android-apk-in-eclipse-ide
Джейсон Тамайо

Ответы:


84

Мануал достаточно ясный. Пожалуйста, укажите, с какой частью вы застряли после того, как проработаете ее, я бы предложил:

https://developer.android.com/studio/publish/app-signing.html

Хорошо, небольшой обзор без ссылки или затмения, так что оставьте немного места для ошибок, но он работает так

  • Откройте свой проект в eclipse
  • Нажмите правую кнопку мыши -> инструменты (инструменты Android?) -> экспортировать подписанное приложение (apk?)
  • Пройдите через мастера:
  • Сделайте новый склад ключей. запомни этот пароль
  • Подпишите свое приложение
  • Сохраните и т. Д.

Также по ссылке:

Скомпилируйте и подпишите с помощью Eclipse ADT

Если вы используете Eclipse с плагином ADT, вы можете использовать Мастер экспорта для экспорта подписанного .apk (и даже создать новое хранилище ключей, если необходимо). Мастер экспорта выполняет все взаимодействия с Keytool и Jarsigner за вас, что позволяет вам подписывать пакет с помощью графического интерфейса пользователя вместо выполнения ручных процедур компиляции, подписи и выравнивания, как описано выше. После того, как мастер скомпилировал и подписал ваш пакет, он также выполнит выравнивание пакета с помощью zip align. Поскольку мастер экспорта использует как Keytool, так и Jarsigner, вы должны убедиться, что они доступны на вашем компьютере, как описано выше в разделе «Базовая настройка для подписи».

Чтобы создать подписанный и выровненный .apk в Eclipse:

  1. Выберите проект в проводнике пакетов и выберите «Файл»> «Экспорт».
  2. Откройте папку Android, выберите «Экспорт приложения Android» и нажмите «Далее».

    Теперь запускается мастер экспорта Android-приложения, который проведет вас через процесс подписания вашего приложения, включая шаги по выбору закрытого ключа для подписи .apk (или созданию нового хранилища ключей и закрытого ключа).

  3. Завершите работу мастера экспорта, и ваше приложение будет скомпилировано, подписано, выровнено и готово к распространению.

Я не понимаю, с чего начать. Я использую версию eclipse: Helios Service Release 1
chriss,

2
но, пожалуйста, прочтите ВСЕ. есть несколько советов в конце для затмения
Nanne

1
при создании ключа что мне нужно ввести для псевдонима?
Крисс

9
Вы читали инструкцию? -alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.Это просто псевдоним. Имя, если хотите. я бы предложил "firstkey" :-)
Nanne

1
Извините, я все еще не понимаю. Как мне использовать этот псевдоним. Какова его цель?
user462990

37

Вот руководство о том, как вручную подписать APK. Включает информацию о нововведениях, apk-signerпредставленных в build-tools 24.0.3 (10/2016)

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

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

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

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

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

Шаг 1. Создайте хранилище ключей (только один раз)

Вам нужно один раз создать хранилище ключей и использовать его для подписи вашего unsignedapk. Используйте предоставленный JDK, найденный вkeytool %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 (да!). Файл сценария можно найти в %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

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


10

Для пользователей IntelliJ IDEA или Android Studio выполните следующие действия:
* Из меню Build/Generate signed APK
* Вам необходимо создать путь к хранилищу ключей. В диалоговом окне щелкните Create new. Вы создадите файл jks, содержащий ваши ключи. Выберите папку, задайте пароль. Итак, ваше хранилище ключей в порядке.
* Создайте новый ключ для вашего приложения, используя псевдоним, пароль ключа, ваше имя и т. Д.
* Нажмите "Далее".
* В диалоговом окне выберите Proguard или нет.

Ваш подписанный APK-файл готов.

Файл справки: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html


8

Не волнуйся ...! Выполните следующие действия, и вы получите подписанный файл .apk. Я тоже беспокоился об этом, но этот шаг избавил меня от разочарования. Шаги по подписанию заявки:

  1. Экспортируйте неподписанный пакет:

Щелкните правой кнопкой мыши проект в Eclipse -> Android Tools -> Export Unsigned Application Package (например, здесь мы экспортируем наш GoogleDriveApp.apk на рабочий стол)

Подпишите приложение, используя хранилище ключей и инструмент jarsigner (выполните следующие действия):

Откройте cmd -> смените каталог, в котором существует ваш "jarsigner.exe" (например, здесь, в моей системе, он находится в "C: \ Program Files \ Java \ jdk1.6.0_17 \ bin"

Теперь введите команду belwo в cmd:

jarsigner -verbose -keystore c: \ users \ android \ debug.keystore c: \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk my_keystore_alias

Он попросит вас ввести пароль: Введите кодовую фразу для хранилища ключей: он подпишет ваш apk. Чтобы убедиться, что подписание прошло успешно, вы можете запустить:

jarsigner -verify c: \ users \ pir fahim \ Desktops \ GoogleDriveApp.apk

Он должен вернуться с: jar Verified.

Способ 2

Если вы используете eclipse с ADT, то просто скомпилировать, подписать, выровнять и подготовить файл для распространения. Что вам нужно сделать, просто выполните следующие действия.

  • Файл> Экспорт.
  • Экспорт приложения для Android
  • Обзор -> выберите свой проект
  • Далее -> Далее

Эти шаги будут скомпилированы, подписаны и выровнены по zip-архиву вашего проекта, и теперь вы готовы распространять свой проект или загружать его в магазин Google Play.


Это именно то, что мне было нужно, я использовал новый инструмент онлайн-сборки и должен был использовать мое предыдущее хранилище ключей, а не их недавно созданное. Единственное, чего мне не хватало, это ZIP ALIGNING apk, поэтому, если у кого-то есть такая же проблема, перейдите сюда stackoverflow.com/a/22682132/826194
Ларзан

5

Процесс подписания APK

Чтобы вручную подписать файл Android APK, выполните следующие три команды:

  1. Создать файл хранилища ключей

    keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
  2. Подпишите свой APK-файл, используя jarsigner

    jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
  3. Выровняйте подписанный APK с помощью инструмента zipalign

    zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH

ШАГ 1


Generate Keystore file

keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000

Пример:

keytool -genkey -v -keystore id.keystore -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000

пароль хранилища ключей: yourApp @ 123 пароль ключа: yourApp @ 123

CMD O / P

D:\ru\SignedBuilds\MySignedApp>keytool -genkey -v -keystore id.keystore
 -alias MySignedApp -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password:
Re-enter new password:
What is your first and last name?
  [Unknown]:  MySignedApp Sample
What is the name of your organizational unit?
  [Unknown]:  Information Technology
What is the name of your organization?
  [Unknown]:  MySignedApp Demo
What is the name of your City or Locality?
  [Unknown]:  Mumbai
What is the name of your State or Province?
  [Unknown]:  Maharashtra
What is the two-letter country code for this unit?
  [Unknown]:  IN
Is CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra, C=IN corr
ect?
  [no]:  y

Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,
000 days
        for: CN=MySignedApp Demo, OU=Information Technology, O=MySignedApp Demo, L=Mumbai, ST=Maharashtra,
 C=IN
Enter key password for <MySignedApp>
        (RETURN if same as keystore password):
Re-enter new password:
[Storing id.keystore]

D:\ru\SignedBuilds\MySignedApp>

ШАГ 2


Sign your app with your private keystore using jarsigner

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME

пример

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id

CMD O / P

D:\ru\SignedBuilds\MySignedApp>jarsigner -verbose -sigalg SHA1withRSA -
digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id ---
ect
Enter Passphrase for keystore:
   adding: META-INF/MANIFEST.MF
   adding: META-INF/---.SF
   adding: META-INF/---.RSA
  signing: AndroidManifest.xml
  ..... 
    signing: classes.dex
  signing: lib/commons-codec-1.6.jar
  signing: lib/armeabi/libkonyjsvm.so
jar signed.

Warning:
No -tsa or -tsacert is provided and this jar is not timestamped. Without a timestamp, users may not
be able to validate this jar after the signer certificate's expiration date (2044-02-07) or after an
y future revocation date.

D:\ru\SignedBuilds\MySignedApp>

Verify that your APK is signed

jarsigner -verify -verbose -certs JARSIGNED_APK_FILE_PATH

пример

jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk

CMD O / P

D:\ru\SignedBuilds\MySignedApp>jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
 s = signature was verified
  m = entry is listed in manifest
  k = at least one certificate was found in keystore
  i = at least one certificate was found in identity scope

jar verified.

Warning:
This jar contains entries whose certificate chain is not validated.
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not b
e able to validate this jar after the signer certificate's expiration date (2044-02-09) or after any
 future revocation date.

D:\ru\SignedBuilds\MySignedApp>

ШАГ 3


Выровняйте окончательный пакет APK с помощью zipalign

zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH_WITH_NAME_ofSignedAPK

пример

zipalign -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

CMD O / P

D:\Android\android-sdk\build-tools\19.1.0>zipalign -v 4 D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16
_prod_playstore\MySignedAppS1-release-unsigned.apk D:\ru\ru_doc\Signed_apk\MySignedApp\28.09.16_prod
_playstore\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...

  4528613 classes.dex (OK - compressed)
 5656594 lib/commons-codec-1.6.jar (OK - compressed)
 5841869 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful

D:\Android\android-sdk\build-tools\19.1.0>

Verify that your APK is Aligned successfully

zipalign -c -v 4 ВАШ_APK_PATH

пример

zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk

CMD O / P

D:\Android\android-sdk\build-tools\19.1.0>zipalign -c -v 4 D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk
Verifying alignment of D:\ru\SignedBuilds\MySignedApp\MySignedApp.apk (
4)...

 4453984 res/drawable/zoomout.png (OK)
 4454772 res/layout/tabview.xml (OK - compressed)
 4455243 res/layout/wheel_item.xml (OK - compressed)
 4455608 resources.arsc (OK)
 4470161 classes.dex (OK - compressed)
 5597923 lib/commons-codec-1.6.jar (OK - compressed)
 5783198 lib/armeabi/libkonyjsvm.so (OK - compressed)
Verification succesful

D:\Android\android-sdk\build-tools\19.1.0>

Примечание:

Команда verify предназначена только для проверки правильности сборки и подписи APK!

Ссылки

Надеюсь, это поможет всем и каждому :)


2

Я столкнулся с этой проблемой и был решен проверкой минимальной версии sdk в манифесте. Было установлено 15 (ICS), но на моем телефоне было 10 (имбирный пряник).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.