我试图签署我的apk,所以我可以使用此命令发布我的应用程序的更新:jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myrelease-key.keystore CordovaAppreleaseunsigned.apk alias_name
但是收到此错误:
jarsigner: Certificate chain not found for: ¡sigalg. ¡sigalg must reference a valid KeyStore key entry containing a private key and corresponding public key certificate chain.
我刚搬到新电脑,所以我将.keystore文件复制到了它。当我keytool -list -v
时,它似乎包含私钥,所以我不明白什么是错的。公钥是否丢失?
答案 0 :(得分:4)
显然这是一个编码问题。该命令包含类似于减号(ASCII代码0x2D)的字符,但实际上是多个破折号或连字符(http://en.wikipedia.org/wiki/Dash)之一。
由于错误的字符代码,第一个参数" -verbose
"被jarsigner认为不是一个选项,而是作为jar文件的名称和" -sigalg
"被认为是别名:
Usage: jarsigner [options] jar-file alias
这解释了为什么错误消息中的别名是" ¡sigalg
"而不是命令的实际别名,并在开头包含一个倒置的感叹号(这曾经是" - "在另一个字符集中)。