О каких мерах предосторожности и предупреждениях следует знать при использовании новой "Схемы подписки APK v2"?
Фон
Недавно, когда я собирался подписать APK для публикации в Play Store, у меня появился этот новый вариант:
![введите описание изображения здесь]()
Нажав на ссылку "Подпись подписи", откройте эту веб-страницу:
https://developer.android.com/about/versions/nougat/android-7.0.html#apk_signature_v2
Поиск более, я нашел это:
http://android-developers.blogspot.co.il/2016/11/understanding-apk-packaging-in-android-studio-2-2.html
Оказывается, это новая проверка на Android 7.x, которая может помочь сделать APK более безопасным, но также немного меньшим по размеру.
Я попытался использовать эту новую функцию, и, как было написано в блоге, это делает APK немного меньше. Кроме того, как было написано, это означало только на Android 7.x и выше (но вы можете фактически подписывать оба метода в одном APK, позволяя вам устанавливать приложение и в более ранних версиях Android).
Проблема
Я не понимаю, безопасно ли использовать новый механизм подписания и что именно они предупреждают о документах.
По крайней мере одно предупреждение, которое я прочитал, я не думаю, что для большинства разработчиков требуется особая забота:
Внимание: если вы подписываете свое приложение, используя APK Signature Scheme v2, и делаете дальнейшие изменения в приложении, подпись приложения недействительна. Для по этой причине, используйте такие инструменты, как zipalign, прежде чем подписывать свое приложение, используя APK Signature Scheme v2, а не после.
Я думаю, что могу игнорировать это предупреждение, потому что я просто позволяю самой IDE создавать APK, используя поведение по умолчанию.
Что я пробовал
Я попытался использовать все 3 способа подписать приложение:
- v1
- v2
- v1 и v2 (вместе в одном APK)
Похоже, что v2 не может быть установлен в версиях Android до 7.x, но все остальное может быть, и также кажется, что v2 меньше, чем v1, в то время как v1 & v2 на самом деле немного больше, чем v1.
Вопросы
-
Безопасно ли переключиться с старого подписи на новое (включение обоих подписание курса)?
-
У пользователей возникнут проблемы с обновлением? Будут ли пользователи обновляться с v1 до v2 или с v2 (или v1 и am2; v2) до v1 (в случае, если что-то пошло не так) - есть ли какие-либо проблемы?
-
Должен ли я знать о любых предупреждениях? Был ли я прав, что я могу игнорировать предупреждение, о котором я говорил?
-
Помимо лучшей безопасности, что подписывается с помощью v1 & v2 (вместе), что у меня нет на v1?
-
Мое предположение заключается в том, что только с Android 7 мы сможем использовать только v2, что дает возможность иметь меньшие APK. Это правда?
Ответы
Ответ 1
- Безопасно ли переключиться с старого подписи на новый (включение обоих подписание курса)?
Да. Пока вы не изменяете APK после подписания, вы хорошо.
- У пользователей возникнут проблемы с обновлением? Будут ли пользователи обновляться с v1 до v2 или с v2 (или v1 и am2; v2) до v1 (в случае, если что-то пошло не так) - есть ли какие-либо проблемы?
Нет проблем. Как только диспетчер пакетов Android проверяет APK-подпись (используя схему v1 или v2), он извлекает сертификат подписывания и затем основывает любую дальнейшую логику (например, разрешен ли этот APK как обновление для старого) на сертификат подписывания. Таким образом, до тех пор, пока ваш APK подписан с использованием того же сертификата (ов) подписки, вы должны быть хорошими.
- Должен ли я знать о любых предупреждениях? Был ли я прав, что я могу игнорировать предупреждение, о котором я упомянул?
Вы можете игнорировать это конкретное предупреждение, если вы используете только плагин Android для Gradle/Android Studio для создания и подписи APK. Предупреждение существует для разработчиков, которые используют настраиваемые конвейеры сборки, которые могут изменить APK после подписания.
Я не знаю никаких других предупреждений.
- Помимо лучшей безопасности, что подписывается с помощью v1 & v2 (вместе), что у меня нет на v1?
v2 подпись проверяет гораздо быстрее. Это означает, что AP2 с поддержкой V2 устанавливают/обновляют бит быстрее на Android Nougat (Android 7.0, API Level 24) и новее.
- Мое предположение заключается в том, что только с Android 7 мы сможем использовать только v2, что дает возможность иметь меньшие APK. Это правда?
Правильно. Однако сохранение размера APK никогда не было целью APK Signature Scheme v2. Экономия - это всего лишь небольшая цифра, пропорциональная количеству файлов в APK, а не их размеру. Что вы сохраняете, это дайджесты для каждого файла в META-INF/MANIFEST.MF
и META-INF/*.SF
. META-INF/*.(RSA|DSA|EC)
заменяется блоком Signature Scheme с аналогичным размером V2 в другом месте в APK.