Jarsigner是一个Java实用程序, 它使用来自密钥库的密钥和证书信息来生成JAR文件的数字签名。密钥库是专用密钥及其关联的X.509证书链的数据库, 这些证书对相应的公用密钥进行身份验证。为了在Play商店中发布应用, 你需要对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, 并且无法使用源代码编译新的APK), 则可以尝试从命令行使用zip删除当前签名:
zip -d your-file.apk META-INF/\*
请记住, 只要密钥不同, 就可以多次对APK签名。
编码愉快!