通常我通过Eclipse使用Android工具 - >签署我的应用程序导出已签名的应用程序。
现在,我想使用Jenkins自动构建和签署我的应用程序。
因此,我在Mac Mini上安装了Jenkins,并使用我的密钥库凭据创建了一个文件ant.properties
。但是用Jenkins签署我的申请失败了:
BUILD FAILED
The following error occurred while executing this line:
Keystore was tampered with, or password was incorrect: Password verification failed
目前我有2个问题可能导致签名失败:
1)我的别名包含空格
但是因为我使用“”(引号)我不认为这应该是问题。
2)我的Keystorepass包含非utf8字符
这是我的ant.properties
文件,用于与Jenkins签名
ant.properties
:
key.store=mykey.store
key.alias="My Alias"
key.store.password=*€*
key.alias.password=***
正如您所看到的,我有一个非utf8字符,我认为这会导致签名过程失败。使用Eclipse时,我只需复制并粘贴我的密码,一切都按预期工作。但是詹金斯每次都失败了。
到目前为止已经尝试过:
我尝试通过命令行(在Windows 7上)和jarsigner手动签署我的应用程序(注意,当我粘贴密码时,我的Windows 7 cmd行上的?符号被替换为?):
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore mykey.store MyApp.apk "My Alias" -storepass *?* -keypass ***
这很有效。
但是,我的Jenkins安装在mac mini上运行,同样的命令要求我输入我的密钥库传递。当我输入我的通行证或复制/粘贴它时,它会给我以下错误:
RuntimeException: keystore load: keystore was tampered with, or password was incorrect
奇怪
由于密码具有非utf8字符,因此在复制和粘贴时,每个平台上的密码都不同。例如。目前我见过以下字符:
WINDOWS TXT FILE (ORIGINAL): *€*
WINDOWS PASTE IN CMD: *?*
MACMINI OPEN ORIGINAL FILE: *Ä*
有什么建议吗?
答案 0 :(得分:2)
.properties文件需要进行ISO-8859-1编码,因此值得仔细检查文件中没有UTF-8(或其他)编码字符,并确保使用正确的转义码。 / p>
来自Wikipedia:
.properties
文件的编码是ISO-8859-1,也称为Latin-1。必须使用Unicode转义字符输入所有非Latin-1字符,例如\uHHHH
其中HHHH
是Unicode字符集中字符的十六进制索引。