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

когда я подписываю apk, я получаю «jarsigner: невозможно подписать jar: java.util.zip.ZipException: недопустимый размер записи в сжатом виде (ожидается 463, но получил 465 байт)» это сообщение об ошибке. Размер apk составляет почти 1 МБ. Когда я уменьшаю размер до 500 КБ, подписывая успех. Почему это так? .. Любая идея?

Вы пытаетесь подписать уже подписанный .apk . Вам нужно экспортировать неподписанный файл .apk а затем подписать его с помощью jarsigner .

Вы определенно можете подписывать уже подписанный apk несколько раз, используя разные ключи :

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

Например, я выполнил подписание Debug-Apk с ключом release, чтобы я смог протестировать обновления выпущенных версий. Кроме того, я смог подписать уже выпущенный apk с отладочным ключом для воспроизведения ошибок.

Это то, что вы должны делать

  1. Переименуйте файл .apk в .zip
  2. Распакуйте .zip файл и удалите папку META-INF
  3. Обновите папку и переименуйте ее в .apk
  4. Подпишите apk:
  jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \ -keystore my-release-key.keystore my_application.apk alias_name 

Для ключа отладки, псевдоним должен быть androiddebugkey и паролем android . $HOME/.android/debug.keystore отладки по умолчанию – $HOME/.android/debug.keystore . См. Также « Включение режима отладки» .

Это 1 Liner / 1 Step версия ответа @ Joerg выше:

 zip -d foo.apk META-INF/\* 

Это использует встроенную функцию «удалить из существующего архива» команды zip . Когда вы запустите эту команду, вы увидите:

 deleting: META-INF/MANIFEST.MF deleting: META-INF/CERT.SF deleting: META-INF/CERT.RSA 

… как результат. Эти файлы являются существующей подписью. Удаление их позволяет вам подписать его снова.

Я также хотел бы подтвердить, что вы должны обязательно передать -sigalg SHA1withRSA и -digestalg SHA1 для jarsigner чтобы избежать этой проблемы: https://code.google.com/p/android/issues/detail?id= 19567

Согласно документам googles вы можете подписать apk несколько раз http://developer.android.com/guide/publishing/app-signing.html#signapp . Если вы не можете получить сборку без знака, хотя вы можете просто надуть apk, а затем перекрасить ее, вы сможете ее подписать.

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

  • Что более эффективно? Статические данные, передача данных, общие настройки, firebase database ...?
  • UserRecoverableAuthException: NeedPermission
  • Приложение для Android в Eclipse: редактирование текста, не отображаемого на графическом макете
  • Как открыть второе действие при нажатии кнопки в приложении для Android
  • getResources (). getColor () устарел
  • Как сжать размер изображения?
  • java.lang.NoClassDefFoundError: com.google.firebase.FirebaseOptions
  • Android: не удалось преобразовать @ drawable / picture в drawable
  • Как мы отличаемся от требований, не требующих ответа, в разрешениях Runtime Android M?
  • Показать диалог из fragmentа?
  • Удаление старого fragmentа из диспетчера fragmentов
  • Давайте будем гением компьютера.