我使用CLI创建了一个名为myApp的Cordova应用程序,然后立即运行:
keytool -genkey -v -keystore myApp.keystore -alias myApp -keyalg RSA -keysize 2048 -validity 10000
我把keystore和apk文件放在同一个文件夹中。当我试图用jarsigner签名:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myApp.keystore myApp.apk myApp
......我得到了输出:
jarsigner: unable to sign jar: java.util.zip.ZipException: invalid entry compressed size (expected 814 but got 818 bytes)
当我这样做时:
jarsigner -verify -verbose -certs myApp.apk
...输出结束于:
jar verified.
这意味着apk已经签名。在此过程中,将创建“2,048位RSA密钥对和自签名证书(SHA1withRSA),其有效期为10,000天”。 这是否意味着现在的myApp.apk不需要应用单独的jarsigner流程,并且已经为Play商店做好准备(假设它符合所有Google Play规则)?
我对整个过程中的jarsigner部分感到困惑,每次使用它时都会出现崩溃停止。 (“jarsigner部分”我的意思是在keytool代码之后实现 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myApp.keystore myApp.apk myApp 。)
我的开发环境:
问题源于3.6.3版本中存在一个错误,该版本的代码尚未完整记录和实施。提交了有关Jira的错误报告。
答案 0 :(得分:1)
我假设您正在关注这些instructions。在构建你的apk时你是否在release mode编译,以便生成一个未签名的apk?看到你如何使用jarsigner无法签名,但确认它已经签名,我觉得你的apk可能存在问题。