【问题标题】:Signing application with Jenkins使用 Jenkins 签署应用程序
【发布时间】:2014-01-15 00:01:01
【问题描述】:

通常我通过 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 时,我可以复制并粘贴我的密码,一切都按预期工作。但是对于 Jenkins,它每次都失败了。

目前尝试过:

我尝试通过命令行(在 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: *Ä*

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

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

    来自Wikipedia

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

    【讨论】:

    • 谢谢小费。最后我下载了 KeyStore explorer,我用它来更改我的密码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-17
    • 1970-01-01
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多