Автоматизований процес:
Скористайтеся цим інструментом (використовує нову програму 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
Офіційну документацію можна знайти тут.