Як підписати Android файл apk


111

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



2
Ви можете знайти чудовий посібник про це тут на androidcookers.co.cc/2012/06/…
Братин

1
Я використав цей повний підручник від створення власного сховища ключів до експорту підписаного APK в Eclipse. mahadera.com/export-signed-android-apk-in-eclipse-ide
Jayson Tamayo

Відповіді:


84

Посібник досить зрозумілий. Вкажіть, будь ласка, до якої частини ви застряєте після роботи над нею, я пропоную:

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

Гаразд, невеликий огляд без посилань чи затемнення навколо, тому залиште трохи місця для помилок, але він працює так

  • Відкрийте свій проект у затемненні
  • Натисніть правою мишкою -> інструменти (інструменти для android?) -> експорт підписаної програми (apk?)
  • Перейдіть через майстра:
  • Зробіть новий магазин ключів. запам'ятайте цей пароль
  • Підпишіться на додаток
  • Збережіть його і т.д.

Також за посиланням:

Складіть і підпишіть за допомогою Eclipse ADT

Якщо ви використовуєте Eclipse з плагіном ADT, ви можете скористатися майстром експорту для експорту підписаного .apk (і навіть створити нову сховище ключів, якщо потрібно). Майстер експорту виконує всю взаємодію з Keytool і Jarsigner для вас, що дозволяє підписувати пакет за допомогою GUI замість виконання вручну процедур збирання, підписання та вирівнювання, як обговорювалося вище. Після того, як майстер складе і підпише ваш пакунок, він також виконає вирівнювання пакету з вирівнюванням на блискавці. Оскільки майстер експорту використовує і Keytool, і Jarsigner, ви повинні переконатися, що вони доступні на вашому комп’ютері, як описано вище в базовій програмі для підписання.

Щоб створити підписаний і вирівняний .apk в Eclipse:

  1. Виберіть проект у Провіднику пакунків та виберіть Файл> Експорт.
  2. Відкрийте папку Android, виберіть Експорт програми Android та натисніть кнопку Далі.

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

  3. Заповніть майстер експорту, і ваша заявка буде складена, підписана, вирівняна та готова до розповсюдження.

Я не розумію, як почати. Я використовую версію затемнення: Helios Service Release 1
chriss

2
але, будь ласка, прочитайте ЦІЛІ речі. є кілька
підсумків

1
у створенні ключа, що мені потрібно ввести для псевдоніма?
Христя

9
Ви читали посібник? -alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.Це просто псевдонім. Ім'я, якщо хочете. Я б запропонував "першу клавішу" :-)
Нанна

1
Вибачте, я досі не розумію. Як би я використовував цей псевдонім. Яке його призначення?
користувач462990

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 який інструмент надається в SDK для Android, наприклад, %ANDROID_HOME%/sdk/build-tools/24.0.2/є обов'язковим кроком оптимізації, якщо ви хочете завантажити apk в Play Store.

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

Примітка: при використанні старого jarsignerпотрібно зрівняти ПІСЛЯ підписання. Використовуючи новий apksignerметод, ви робите це ДО ПІД підписання (я знаю, що я плутаю). Викликати zipalign перед apksigner працює добре, оскільки apksigner зберігає вирівнювання та стиснення APK (на відміну від jarsigner).

Ви можете перевірити вирівнювання за допомогою

zipalign -c 4 my-aligned.apk

Крок 3: Підпишіть і підтвердьте

Використання інструментів build 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

Використання інструментів build 24.0.3 та новіших версій

Android 7.0 представляє APK Signature Scheme v2, нову схему підписання додатків, яка пропонує швидший час встановлення додатків та більш високий захист від несанкціонованих змін файлів APK (див. Тут і тут для отримання більш детальної інформації). Тому Google реалізував власного підписувача apk під назвоюapksigner (duh!) Файл сценарію можна знайти в %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 -> Експорт непідписаного пакету додатків (наприклад, ми експортуємо наш 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 \ Desktop \ GoogleDriveApp.apk my_keystore_alias

Він попросить вас ввести свій пароль: Введіть пароль для зберігання ключів: він підпише ваш apk. Щоб переконатися в тому, що підпис вдався, можна виконати:

jarsigner -перевірити c: \ users \ pir fahim \ Настільні ПК \ GoogleDriveApp.apk

Він повинен повертатися з: підтверджена банка.

Спосіб 2

Якщо ви використовуєте затемнення з ADT, то його складати, підписувати, вирівнювати та готовий файл до розповсюдження просто.

  • Файл> Експорт.
  • Експорт програми для Android
  • Огляд -> виберіть проект
  • Далі -> Далі

Ці кроки будуть складені, підписані та поштові, вирівняні вашим проектом, і тепер ви готові розповсюджувати свій проект або завантажувати його в магазин Google Play.


Саме те, що мені було потрібно, використовував новий інструмент побудови в Інтернеті, і мені довелося використовувати мою попередню сховище ключів, а не їх новостворену. Єдине , що я не вистачало ZIP поєднавши APK, так що якщо у кого -то є така ж проблема, йди сюди stackoverflow.com/a/22682132/826194
Larzan

5

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

Щоб вручну підписати файл Android APK, запустіть ці три команди:

  1. Створити файл Keystore

    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 -величі 2048 -валістість 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 SHA1wRSRSA -digestalg SHA1 -магазин 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 YOUR_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

Я зіткнувся з цією проблемою і був вирішений, перевіривши версію min sdk в маніфесті. Він був встановлений на 15 (ICS), але мій телефон працював 10 (пряник)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.