Разница между версиями подписей - V1 (подпись Jar) и V2 (полная подпись APK) при создании подписанного apk в AndroidStudio?

Выберите хотя бы одну из версий подписи для Android Studio 2.3

Теперь, создавая подписанный apk в Android Studio, он показывает два варианта (CheckBox): 1. V1(Jar Signature) и 2. `V2 (Full APK Signature) 'как версии подписи на последнем этапе подписанный процесс генерации apk.

** Версии подписи ** опции

Итак, какова разница между этими V1 (Jar Signature) и V2 (Полная подпись APK) в новом обновлении Android Studio?

И какой я должен использовать (или оба) для подписания apk для выпуска в магазине воспроизведения?

Также я получаю сообщение об ошибке Установить Parse Failed No Certificates при установке apk, когда я использую второй вариант.

Ответ 1

Это новый механизм подписания, введенный в Android 7.0, с дополнительными функциями, предназначенными для повышения безопасности подписки APK.

Это не обязательно. Вы должны проверить оба эти флажка, если это возможно, но если новый механизм подписания V2 дает вам проблемы, вы можете опустить его.

Таким образом, вы можете просто оставить V2 непроверенным, если вы столкнулись с проблемами, но должны проверить его, если это возможно.

Ответ 2

Должен ли я использовать (или оба) для подписания apk для выпуска в магазине воспроизведения? Ответ ДА.

По https://source.android.com/security/apksigning/v2.html#verification

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

Я попытался создать сборку с проверкой V2 (Полная подпись Apk). Затем, когда я попытался установить выпускную версию ниже 7.0, и мне не удается установить сборку на устройстве.

После этого я попытался построить, установив флажок в обеих версиях и сгенерировал сборку релиза. Затем можно установить сборку.

Ответ 3

Здесь написано что "По умолчанию Android Studio 2.2 и Android-плагин для Gradle 2.2 подписывают ваше приложение, используя оба APK-подписи Scheme v2 и традиционная схема подписи, в которой используется JAR-подписка" .

Похоже, что эти новые флажки появились с Android 2.3, я понимаю, что мои предыдущие версии Android Studio (по крайней мере, 2.2) подписали оба подписи. Итак, чтобы продолжить, как и раньше, я думаю, что лучше проверить оба флажка.

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

Ответ 4

Я думаю, это является хорошим ответом.

Проверка подписей APK v2

  • Найдите APK Signing Block и убедитесь, что:
    • Два поля размера APK Signing Block содержат одно и то же значение.
    • ZIP Central Directory сразу же следует запись ZIP End of Central Directory.
    • ZIP End of Central Directory не следует больше данных.
  • Найдите первый APK Signature Scheme v2 Block внутри APK Signing Block. Если блок v2, если он присутствует, перейдите к шагу 3. В противном случае вернитесь к проверке APK с помощью схемы v1.
  • Для каждого подписывающего лица в APK Signature Scheme v2 Block:
    • Выберите самый сильный поддерживаемый идентификатор алгоритма подписи из подписей. Порядок прочности зависит от каждой версии реализации/платформы.
    • Подтвердить соответствующую подпись от подписей против подписанных данных с помощью открытого ключа. (Теперь можно безопасно анализировать подписанные данные.)
    • Убедитесь, что упорядоченный список идентификаторов алгоритма сигнатуры в дайджестах и ​​подписях идентичен. (Это делается для предотвращения зачистки/добавления подписей.)
    • Вычислить дайджест содержимого APK, используя тот же алгоритм дайджеста, что и алгоритм дайджеста, используемый алгоритмом подписи.
    • Убедитесь, что вычисленный дайджест идентичен соответствующему дайджесту из дайджестов.
    • Убедитесь, что SubjectPublicKeyInfo первого сертификата сертификатов идентичен открытому ключу.
  • Проверка завершается успешно, если хотя бы один подписчик был найден, а шаг 3 - для каждого найденного подписчика.

Примечание. APK не должен проверяться с использованием схемы v1, если сбой происходит на шаге 3 или 4.

JAR-подписанная проверка APK (схема v1)

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

  • Каждый подписант представлен записью META-INF/<signer>.SF и META-INF/<signer>.(RSA|DSA|EC) JAR.
  • <signer>.(RSA|DSA|EC) - это PKCS #7 CMS ContentInfo со структурой SignedData, чья подпись проверяется в файле <signer>.SF.
  • <signer>.SF файл содержит полный файл дайджеста META-INF/MANIFEST.MF и дайджесты каждого раздела META-INF/MANIFEST.MF. Проверяется общий файл файла MANIFEST.MF. Если это не удается, дайджест каждого раздела MANIFEST.MF проверяется вместо этого.
  • META-INF/MANIFEST.MF содержит для каждой записи JAR, защищенной целостностью, соответствующую именованную секцию, содержащую дайджест несвязанного содержимого записей. Все эти дайджесты проверены.
  • Проверка APK завершается с ошибкой, если APK содержит записи JAR, которые не указаны в MANIFEST.MF и не являются частью JAR-подписи. Таким образом, цепь защиты <signer>.(RSA|DSA|EC)<signer>.SFMANIFEST.MF → содержимое каждой записи JAR, защищенной целостностью.

Ответ 5

По этой ссылке: подпись

Схема подписки APK v2 предлагает:

  • Более быстрое время установки приложения
  • Дополнительная защита от несанкционированных изменений файлов APK.

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

рекомендуется использовать APK Signature Scheme v2, но не обязательно.

Хотя мы рекомендуем применять APK Signature Scheme v2 для вашего приложения, эта новая схема не является обязательной. Если ваше приложение не построено должным образом при использовании APK Signature Scheme v2 вы можете отключить новую схему.