Різниця між версіями підписів - V1 (Jar Signature) і V2 (Full APK Signature) під час створення підписаного APK в Android Studio?


234

Виберіть щонайменше одну з версій підпису, яку використовуватимете в Android Studio 2.3

Під час генерації підписаного APK в Android Studio, він показує два варіанти (CheckBox), а саме 1. V1 (Jar Signature)та 2. V2 (Full APK Signature)як версії підписів на останньому кроці підписаного процесу генерації APK.

** Параметри версій підпису **

Отже, яка різниця між V1 (Jar Signature) та V2 (Full APK Signature) у новому оновлення Android Studio?

І що я повинен використовувати (або обидва) для підписання apk для релізу Play Store?

Крім того, я отримую помилку Під час встановлення APK, коли я використовую другий параметр, встановіть Парзамент не вдалося отримати сертифікати .

Відповіді:


219

Це новий механізм підписання, представлений в Android 7.0, з додатковими функціями, розробленими для підвищення безпеки підпису APK.

Це не є обов'язковим. Потрібно встановити БОТИ цих прапорців, якщо це можливо, але якщо новий механізм підписання V2 створює проблеми, ви можете його опустити.

Таким чином, ви можете просто залишити V2 без нагляду, якщо у вас виникли проблеми, але слід перевірити його, якщо це можливо.


Ви повинні переформулювати своє запитання, але, схоже, ви навіть не прочитали пов'язану документацію ... корисно знати, що ви можете залишити цей прапорець без позначення. Можливо, якщо ви додасте "повідомлення про помилку та проблему, з якою ви зіткнулися), тоді це питання стане більш цінним у майбутньому
Booger

Я завантажив додаток підписаним додатком за допомогою V1 та V2. Після цього я завантажую програму з google play і запускаю ту саму версію з Android Studio, вона показує мені діалогове вікно "Установка не вдалася, оскільки на пристрої є додаток з тим же пакетом, але іншою підписом ...". Чи можете ви запропонувати мені, що я мені неправильно потрібно оновлювати build.gradle?
Usman Afzal

@UsmanAfzal, очікується поведінка, оскільки ви підписали додаток на playstore з випуском, а тепер ви хочете налагоджувати або запускати його через Android Studio з налагодженням. Зауважте, що випуск та налагодження відрізняються підписом
Parama Dharmika

44

Чи варто використовувати (або обидва) для підписання apk для випуску магазину Play Store? Відповідь ТАК .

Відповідно до https://source.android.com/security/apksigning/v2.html#verification :

В Android 7.0 APK можна перевірити відповідно до схеми підпису APK v2 (схема v2) або підписання JAR (схема v1). Старіші платформи ігнорують підписи v2 та лише перевіряють підписи v1.

Я спробував створити збірку, перевіривши параметр V2 (Full Apk Signature) . Потім, коли я спробував встановити збірку версій у пристрій нижче 7.0, і я не можу встановити збірку на пристрої.

Після цього я спробував скласти, встановивши прапорець і версії версії, і створити збірку релізів. Потім зможете встановити збірку.


24

Це написано тут , що «за замовчуванням Android Studio 2.2 і Android плагін для Gradle 2.2 підписати додаток , використовуючи як APK Signature Scheme v2 і традиційну схему підпису, яка використовує підписання JAR.»

Оскільки здається, що ці нові прапорці з’явилися на Android 2.3, я розумію, що мої попередні версії Android Studio (принаймні 2.2) підписувались обома підписами. Отже, щоб продовжити так, як я робив раніше, я вважаю, що краще позначити обидва прапорці.

EDIT 31 березня 2017 року: надіслано кілька додатків з обома підписами => без проблем :)


7

Я думаю, що це хороша відповідь.

Перевірка схеми підпису APK v2

  1. Знайдіть APK Signing Blockі переконайтеся, що:
    1. Два поля розміру APK Signing Blockмістять однакове значення.
    2. ZIP Central Directoryодразу слідує ZIP End of Central Directoryзапис.
    3. ZIP End of Central Directory більше даних не супроводжується.
  2. Знайдіть першого APK Signature Scheme v2 Blockвсередині APK Signing Block. Якщо блок v2, якщо він є, перейдіть до кроку 3. В іншому випадку поверніться до перевірки APK за допомогою схеми v1.
  3. Для кожного, хто підписує APK Signature Scheme v2 Block:
    1. Виберіть найсильніший підтримуваний ідентифікатор алгоритму підпису з підписів. Потужність замовлення залежить від кожної версії для впровадження / платформи.
    2. Перевірте відповідний підпис від підписів проти підписаних даних за допомогою відкритого ключа. (Тепер безпечно розбирати підписані дані.)
    3. Переконайтесь, що упорядкований список ідентифікаторів алгоритму підпису в дайджестах та підписах однаковий. (Це для запобігання зняття / додавання підпису.)
    4. Обчисліть дайджест вмісту APK, використовуючи той самий алгоритм дайджесту, що і алгоритм дайджесту, який використовується алгоритмом підпису.
    5. Переконайтесь, що обчислений дайджест ідентичний відповідного дайджесту з дайджестів.
    6. Переконайтеся, що SubjectPublicKeyInfoперший сертифікат сертифікатів ідентичний відкритому ключу.
  4. Перевірка проходить успішно, якщо принаймні один підписувач був знайдений, а крок 3 вдався для кожного знайденого підписувача.

Примітка: APK не слід перевіряти, використовуючи схему v1, якщо в кроці 3 або 4 сталася помилка.

Підтвердження APK, підписане JAR (схема v1)

APK з підписом JAR - це стандартний JAR з підписом, який повинен містити саме записи, перелічені в META-INF/MANIFEST.MFі де всі записи повинні бути підписані одним і тим же набором підписувачів. Його цілісність перевіряється наступним чином:

  1. Кожен підписант представлений записом META-INF/<signer>.SFа та META-INF/<signer>.(RSA|DSA|EC)JAR.
  2. <signer>.(RSA|DSA|EC)це структура PKCS #7 CMS ContentInfoз SignedData, підпис якої підтверджено у <signer>.SFфайлі.
  3. <signer>.SFФайл містить цілий файл дайджесту META-INF/MANIFEST.MFта дайджестів кожного розділу META-INF/MANIFEST.MF. MANIFEST.MFПеревірено цілофайл дайджест . Якщо це не вдається, MANIFEST.MFзамість цього перевіряється дайджест кожного розділу.
  4. META-INF/MANIFEST.MFмістить, для кожного запису JAR, захищеного цілісністю, відповідно названий розділ, що містить дайджест нестисненого вмісту запису. Всі ці дайджести перевірені.
  5. Підтвердження APK не вдається, якщо APK містить записи JAR, які не вказані у MANIFEST.MFпідписі та не є частиною підпису JAR. Ланцюг захисту таким чином <signer>.(RSA|DSA|EC)<signer>.SFMANIFEST.MF→ Вміст кожної цілісності захищеного входу JAR.

де зазначено "Примітка. APK не слід перевіряти за допомогою схеми v1, якщо в кроці 3 або 4 сталася помилка", крок 3 або 4 на схемі 2 або схемі 1? також якщо помилка трапляється на кроці 3 або 4 в v2, і тоді її висловлювання не може бути підтверджено за допомогою схеми v1, тоді вона не буде перевірена в v1 або v2, як це буде перевірено?
isJulian00

7

За цим посиланням: довідка про підпис

Схема підпису APK v2 пропонує:

  1. Швидше час установки програми
  2. Більш захищений від несанкціонованих змін файлів APK.

Android 7.0 представляє APK Signature Scheme v2, нову схему підписання додатків, яка пропонує швидший час встановлення програми та більш високий захист від несанкціонованих змін файлів APK. За замовчуванням Android Studio 2.2 та плагін Android для Gradle 2.2 підписують ваш додаток, використовуючи схему підпису APK v2 та традиційну схему підписання, яка використовує підписання JAR.

Він рекомендується використовувати APK Signature Scheme v2 , але НЕ є обов'язковим .

Хоча ми рекомендуємо застосувати схему підписів APK v2 до свого додатка, ця нова схема не є обов’язковою. Якщо ваш додаток не працює належним чином при використанні схеми APK Signature v2, ви можете відключити нову схему.


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