用Jenkins签名申请

时间:2013-12-27 11:31:14

标签: android ant utf-8 character-encoding jenkins

通常我通过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: *Ä*

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

.properties文件需要进行ISO-8859-1编码,因此值得仔细检查文件中没有UTF-8(或其他)编码字符,并确保使用正确的转义码。 / p>

来自Wikipedia

  

.properties文件的编码是ISO-8859-1,也称为Latin-1。必须使用Unicode转义字符输入所有非Latin-1字符,例如\uHHHH其中HHHH是Unicode字符集中字符的十六进制索引。