我正在尝试签署我的 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
时,它似乎包含私钥,所以我不明白怎么了。公钥丢失了吗?
显然这是一个编码问题。该命令包含看起来类似于减号(ASCII 代码 0x2D)的字符,但实际上是许多破折号或连字符之一(http://en.wikipedia.org/wiki/Dash)。
由于错误的字符代码,第一个参数“-verbose
”被 jarsigner 识别为 jar 文件和“-sigalg
的名称而不是一个选项"被识别为别名:
Usage: jarsigner [options] jar-file alias
这解释了为什么错误消息中的别名是“¡sigalg
”而不是命令的实际别名,并且在开头包含一个倒置的感叹号(以前是“-”在另一个字符集中)。
我是一名优秀的程序员,十分优秀!