Я намагаюся підписати свій файл apk. Я не можу зрозуміти, як це зробити. Я не можу знайти гарні глибокі вказівки. У мене дуже мало досвіду програмування, тому будь-яка допомога буде вдячна.
Я намагаюся підписати свій файл apk. Я не можу зрозуміти, як це зробити. Я не можу знайти гарні глибокі вказівки. У мене дуже мало досвіду програмування, тому будь-яка допомога буде вдячна.
Відповіді:
Посібник досить зрозумілий. Вкажіть, будь ласка, до якої частини ви застряєте після роботи над нею, я пропоную:
https://developer.android.com/studio/publish/app-signing.html
Гаразд, невеликий огляд без посилань чи затемнення навколо, тому залиште трохи місця для помилок, але він працює так
Також за посиланням:
Складіть і підпишіть за допомогою Eclipse ADT
Якщо ви використовуєте Eclipse з плагіном ADT, ви можете скористатися майстром експорту для експорту підписаного .apk (і навіть створити нову сховище ключів, якщо потрібно). Майстер експорту виконує всю взаємодію з Keytool і Jarsigner для вас, що дозволяє підписувати пакет за допомогою GUI замість виконання вручну процедур збирання, підписання та вирівнювання, як обговорювалося вище. Після того, як майстер складе і підпише ваш пакунок, він також виконає вирівнювання пакету з вирівнюванням на блискавці. Оскільки майстер експорту використовує і Keytool, і Jarsigner, ви повинні переконатися, що вони доступні на вашому комп’ютері, як описано вище в базовій програмі для підписання.
Щоб створити підписаний і вирівняний .apk в Eclipse:
- Виберіть проект у Провіднику пакунків та виберіть Файл> Експорт.
Відкрийте папку Android, виберіть Експорт програми Android та натисніть кнопку Далі.
Зараз запускається майстер експорту додатків для Android, який допоможе вам пройти процес підписання вашої заявки, включаючи кроки для вибору приватного ключа, за допомогою якого слід підписати .apk (або створити нову сховище ключів та приватний ключ).
- Заповніть майстер експорту, і ваша заявка буде складена, підписана, вирівняна та готова до розповсюдження.
-alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.
Це просто псевдонім. Ім'я, якщо хочете. Я б запропонував "першу клавішу" :-)
Ось посібник про те, як вручну підписати APK. Він містить інформацію про нове, що було apk-signer
представлено build-tools 24.0.3
(10/2016)
Скористайтеся цим інструментом (використовує новий apksigner від Google):
https://github.com/patrickfav/uber-apk-signer
Відмова: Я розробник :)
Вам потрібно генерувати сховище ключів один раз і використовувати його для підписання unsigned
apk. Використовуйте надані JDK, знайдені вkeytool
%JAVA_HOME%/bin/
keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app
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
Використовуйте, 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
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
Для користувачів IntelliJ IDEA або Android Studio зробіть наступні кроки:
* У меню Build/Generate signed APK
* Вам потрібно створити шлях до магазину ключів. У діалоговому вікні клацніть Create new
. Ви створите файл jks, який включає ваші ключі. Виберіть папку, визначте пароль. Так що ваш магазин із брелоками добре.
* Створіть новий ключ для вашої програми, використовуючи псевдонім, пароль ключа, своє ім’я тощо.
* Клацніть далі.
* У діалоговому вікні виберіть пункт Proguard чи ні.
Ваш підписаний файл APK готовий.
Файл довідки: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html
Не хвилюйтесь ...! Виконайте наступні кроки, і ви отримаєте підписаний файл .apk. Я також хвилювався з цього приводу, але ці кроки позбавлять мене від розчарування. Кроки для підписання вашої заявки:
Клацніть правою кнопкою миші на проект у 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, то його складати, підписувати, вирівнювати та готовий файл до розповсюдження просто.
Ці кроки будуть складені, підписані та поштові, вирівняні вашим проектом, і тепер ви готові розповсюджувати свій проект або завантажувати його в магазин Google Play.
Щоб вручну підписати файл Android APK, запустіть ці три команди:
Створити файл Keystore
keytool -genkey -v -keystore YOUR_KEYSTORE_NAME.keystore -alias ALIAS_NAME -keyalg RSA -keysize 2048 -validity 10000
Підпишіть свій файл APK за допомогою jarsigner
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore KEYSTORE_FILE_PATH UNSIGNED_APK_PATH ALIAS_NAME
Вирівняти підписаний APK за допомогою інструменту zipalign
zipalign -v 4 JARSIGNED_APK_FILE_PATH ZIPALIGNED_SIGNED_APK_FILE_PATH
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
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>
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
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
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>
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
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
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!
Сподіваюся, що це допоможе всім :)