Автоматизований процес:
Скористайтеся цим інструментом (використовує нову програму apksigner від Google):
https://github.com/patrickfav/uber-apk-signer
Відмова: Я розробник :)
Ручний процес:
Крок 1: Створення магазину брелоків (лише один раз)
Вам потрібно генерувати сховище ключів один раз і використовувати його для підписання unsigned
apk. Використовуйте надані 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
Офіційну документацію можна знайти тут.