Ошибка при подписании apk с помощью jarsigner: невозможно подписать jar неверная запись сжатый размер

Jarsigner — это утилита Java, которая использует информацию о ключах и сертификатах из хранилища ключей для создания цифровых подписей для файлов JAR. Хранилище ключей — это база данных закрытых ключей и связанных с ними цепочек сертификатов X.509, которые аутентифицируют соответствующие открытые ключи. Чтобы опубликовать приложение в Play Store, ваш apk должен быть подписан.

Следующей команды должно быть достаточно, чтобы подписать APK с хранилищем ключей:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore mykey.keystore myfile.apk alias_name

Однако некоторые разработчики (нативные приложения или гибриды, такие как Cordova) столкнулись со следующим исключением:

jarsigner: не может подписать jar: java.util.zip.ZipException: неверный сжатый размер записи (ожидалось 463, но получено 465 байт)

Решение

Эта ошибка возникает, когда ваш apk уже подписан (используя jarsigner, вероятно, подписанный автоматически), zipaligned (с zipalign) или APK, который вы пытаетесь сгенерировать, был создан в режиме отладки. Поэтому убедитесь, что вы предоставляете неподписанный или не zipaligned apk-файл, и все должно работать как положено.

Если по какой-то причине вы не можете собрать свой apk с нуля (потому что вы получили только APK и не можете скомпилировать новый с исходным кодом), вы можете попытаться удалить текущую подпись с помощью zip из командной строки:

zip -d your-file.apk META-INF/\*

Помните, что вы можете подписать APK несколько раз, если ключи разные.

Ссылка на основную публикацию