當我簽署apk時,我得到「jarsigner:無法簽名jar:java.util .zip.ZipException:無效輸入壓縮大小(預期463但得到465字節)「此錯誤消息。 apk的大小差不多是1MB。當我縮小到500KB時,簽署成功。爲什麼這樣?任何想法?jarsigner:無法簽名jar:java.util.zip.ZipException:無效輸入壓縮大小(預計463但得到465字節)
回答
您正在嘗試簽署已經簽署的.apk
。 您需要導出未簽名的.apk
文件,然後使用jarsigner
對其進行簽名。
POM中的錯誤 - 實際上該文件被簽署了兩次。 – Martin 2013-06-21 11:58:20
或者您可以使用單個命令從現有的apk中移除簽名。請參閱:http://stackoverflow.com/a/30722523/117471 – 2015-06-09 03:30:10
我真的很失望,這仍然是一個實際的解決方案後2年被接受的答案。 – 2017-09-06 15:00:34
根據谷歌文件,你可以多次登錄apk http://developer.android.com/guide/publishing/app-signing.html#signapp。如果您無法獲得未簽名的版本,雖然您只需對apk進行膨脹然後重新生成它,那麼您就可以對其進行簽名。
你肯定是able to sign an already signed apk multiple times using different keys:
注意,您可以使用不同的密鑰簽署的APK多次。
例如,我完成了使用發佈密鑰簽署Debug-Apk,以便我能夠測試發佈版本的升級。另外,我能夠用調試密鑰來簽署一個已經發布的apk來再現錯誤。
這是你應該做的
- 的
.apk
文件重命名爲.zip
- 拆開
.zip
文件並刪除META-INF
文件夾 - 再次拉鍊的文件夾並將其重命名爲
.apk
- 註冊apk:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \
-keystore my-release-key.keystore my_application.apk alias_name
對於調試密鑰,別名應該是androiddebugkey
,密碼android
。調試密鑰庫默認爲$HOME/.android/debug.keystore
。另見Signing in Debug Mode。
你節省了我的一天,並可能我的應用程序!每次嘗試導出我的應用程序時,Eclipse都崩潰了,所以唯一的辦法就是命令行,然後我有這個錯誤,只有解決方案有效!再次感謝 – Guillaume 2012-06-12 07:05:39
@Guillaume,避免日食崩潰 - 關閉「自動生成」(項目 - >自動生成) – Luten 2014-08-04 09:08:34
持有簽名的CERT.RSA文件存儲在您建議刪除的META-INF文件夾中。這實際上與刪除簽名相同。所以這就是爲什麼您可以使用調試密鑰對其進行簽名的原因。所以這並不意味着你已經用兩個不同的密鑰簽署了apk。 – Rajesh 2014-12-26 10:29:15
就我所面臨的這個錯誤而言,它發生在您嘗試簽署zipaligned .apk文件時。
看起來像jarsigner無法忍受一些zipalign變化。 這不會經常發生。
Zipaligning apk不會阻止它被簽名。簽名後您必須再次運行zipalign才能將其恢復到對齊狀態。 – dmdrummond 2014-07-30 19:49:01
@dmdrummond它不會阻止,但它應該。對齊修改zip。簽署有時無法簽署對齊的zip與此錯誤。 爲什麼downvote? – Luten 2014-07-31 09:31:07
你現在已經改變了你的答案的含義。您之前的回答強烈建議您無法簽署一個zip對齊的文件。這是不正確的。 – dmdrummond 2014-08-05 10:11:26
這是1班輪/ 1檔版@約爾格的回答以上:
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
請小心使用_zip -d foo.apk META-INF/\ * _ - 它可以刪除比需要更多的文件。 – 2016-07-20 09:53:54
@DannySchoemann含義是什麼?我在* META-INF/gdata/kinds/com.google.schemas.contact.2008 *和 META-INF/services/com.fasterxml.jackson.core.JsonFactory中看到3個文件。所以如果只有清單和證書文件被刪除,我會安全嗎? – kaay 2016-10-05 08:55:31
@ kaay-看起來不錯,但我不確定,你可能需要試驗一下你需要刪除的東西。 – 2016-10-06 11:45:47
- 1. java.util.zip.ZipException:無效輸入壓縮大小(預計449但得到455字節)
- 2. 無效的條目壓縮大小
- 3. 無法解析搜索源,預計字段名,但得到[START_OBJECT]
- 4. 如何計算字節大小deflater壓縮輸出的Android
- 5. Sencha CMD YUICompressor [ERR]無法壓縮輸入
- 6. py2neo.database.status.CypherSyntaxError:無效輸入'O':預計't/T'
- 7. 將zip文件解壓縮到文件夾中會引發「無效的項大小(預期的46284但得到46285字節)」條目
- 8. 無效的分配大小:4294967295字節
- 9. 無效的分配大小:4294967295字節
- 10. Range頭是壓縮或未壓縮字節的大小(以字節爲單位)?
- 11. 無效字符,同時壓縮在C#
- 12. java.util.zip.ZipException:無效的壓縮方法
- 13. Neo4j的輸入無效「(」:預計標識字符,空格,NodeLabel
- 14. 無法壓縮dSyms
- 15. 使用預先計算好的字典的小塊無損壓縮
- 16. 無效類型爲關鍵用戶,預計* _user,但得到的字符串
- 17. 無效類型的密鑰expires_on,預計日期,但得到字符串php
- 18. Git - 無法提交,請求輸入用戶名,但無法輸入用戶名
- 19. Java壓縮字節數組和基礎64編碼到基礎64解碼和解壓縮字節數組錯誤:不同大小的輸入/輸出數組
- 20. 帶名稱輸入的語法無效
- 21. 簽名無效
- 22. 塊輸入流無法接收有效塊大小:<?xmlversion =「1.0」
- 23. 無法訪問smtp.gmail.com 465
- 24. AWS Lambda錯誤:解壓縮大小必須小於262144000字節
- 25. 無法縮小分區大小
- 26. 的fsockopen():無法連接到SSL://smtp.gmail.com:465
- 27. 無法連接到SMTP端口號465
- 28. 壓縮UIImage但保持大小
- 29. Last.fm API無效的方法簽名,但獲得會話密鑰時有效
- 30. 無法將壓縮項目導入NetBeans
http://stackoverflow.com/questions/3267216/can-i-使用 – kreker 2016-01-18 00:07:09
重新簽署一個不同於證書的文件,但它有時會發生在您嘗試簽署調試apk時 – KrIsHnA 2016-04-03 16:33:52