我有一个cordova应用程序,正在使用cmd进行构建,并且需要对其发布apk进行签名。
首先,我在没有-tsa选项的情况下执行了此操作,因此在运行命令时询问了pwd,然后使用警告进行了签名:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1
-keystore my.keystore "apk\release\app-release-unsigned.apk" myaliasofkeystore
没有提供-tsa或-tsacert,并且此jar没有时间戳记。
因此,我添加了-tsa timestamp.digicert.com选项:
jarsigner -tsa timestamp.digicert.com -verbose -sigalg SHA1withRSA -digestalg SHA1
-keystore my.keystore "apk\release\app-release-unsigned.apk" myaliasofkeystore
现在,在运行此命令时,要求输入密码
但之后产生此错误:
jarsigner错误:java.lang.NullPointerException
最佳答案
您无需添加-tsa。只需忽略有关时间戳的警告即可。
根据docs:
建议给签名打上时间戳,如果签名没有打上时间戳,则会显示警告。时间戳用于验证用于签名JAR文件的证书在签名时是否有效。
这意味着证书过期后,用户可以放心,您已在到期日之前签署了APK。但是根据google docs:
如果您打算在Google Play上发布应用,则用于签署这些APK的密钥的有效期必须在2033年10月22日之后结束。GooglePlay强制执行此要求,以确保用户可以在有新版本可用时无缝升级应用。
如果您的用户无法在2033年10月23日验证证书,我认为这没什么大不了的:)