【问题标题】:Ant fails to build signed apk after updating to android v20Ant 更新到 android v20 后无法构建签名的 apk
【发布时间】:2012-07-22 10:34:04
【问题描述】:

在我将 android 和 eclipse 工具升级到 v20 后发生了一些奇怪的错误

通过 Ant 构建在创建签名的 apk 时停止工作并出现以下错误

 BUILD FAILED
 C:\Programs\Android\tools\ant\build.xml:1097: The following error occurred while executing this line:
 C:\Programs\Android\tools\ant\build.xml:1109: Cannot recover key

知道升级到 android JB 组件时会发生什么变化吗?如何纠正?

感谢您的帮助...

【问题讨论】:

    标签: android ant android-4.2-jelly-bean


    【解决方案1】:

    看起来你的调试密钥没有被 ant 看到。

    【讨论】:

    • 感谢您的回复,构建 xml 已配置为使用发布密钥对应用进行签名。该设置在 ant.properties 文件中指定,路径在 build.xml 文件中指定。请注意,在将 Android 和 eclipse 工具升级到 v20(果冻豆)之前一切正常
    【解决方案2】:

    我们遇到了同样的问题,我们有解决方案,但没有真正的解释!

    我们现有的构建在属性文件中有以下内容:

    • key.store=COMPANY_NAME-key.keystore
    • key.alias=COMPANY_NAME
    • key.store.password=KEY_STORE_PASSWORD
    • key.alias.password=KEY_ALIAS_PASSWORD

    但这已经停止工作 - 但是当我们更改 key.alias.password 以匹配商店密码时,它正在工作,例如:

    • key.store=COMPANY_NAME-key.keystore
    • key.alias=COMPANY_NAME
    • key.store.password=KEY_STORE_PASSWORD
    • key.alias.password=KEY_STORE_PASSWORD

    Alias 不知道为什么,也许有人搞砸了 ant 库?

    【讨论】:

    • 感谢 uesr1556185 的回复。你的回复实际上提出了更多的问题。问题是我的商店和别名密码从一开始就相同......顺便说一句,我可以使用 eclipse android 工具很好地导出签名的 apk - 右键单击​​项目 > Android 工具 > 导出签名的应用程序包。 ..
    • 很高兴它对你有用 HefferWold,很抱歉它不适用于 Nar Gar。我有点不知所措,我已经查看了 SignApk ant 目标的 Git 源代码,但看不到任何明显错误的地方。它确实提到了签名过程中的一些变化 - 签到在这里:android.googlesource.com/platform/sdk/+/… 不明白为什么会出现问题。您使用的是哪个 JDK?也许 SDK 7 可以工作?
    【解决方案3】:

    我刚刚在这个话题上花了大约 5 小时......这一切都归结为密码后面的一个空格。

    显然在以前的版本中它正在修剪密码,而在当前版本中它没有。

    因此,确保行尾没有空格可能会有所不同。这为我们解决了问题 - 无需使用 JDK7(尽管无论如何它似乎构建和工作都很好,至少来自 ant)。

    【讨论】:

    • 你是救生员@Roberto C Serrano。 ant.properties 文件末尾也没有多余的空行。
    【解决方案4】:

    在 SDK v20 之前,我使用 bash 脚本构建了一个项目,输入密码如下:

    build_v1.sh

    ant release
    p@ssw0rd
    p@ssw0rd
    

    在 v20 中失败是因为密码未被接受。它似乎与行尾字符有关,但我不确定。为了防止构建过程要求输入密码,您可以在 ant.properties 文件中添加密码属性:

    ant.properties

    key.store=company-key.keystore
    key.alias=company
    key.store.password=p@ssw0rd
    key.alias.password=p@ssw0rd
    

    对于我的特定项目,一个假的密钥库密码保存在 ant.properties 中,我在构建时将其替换为发布密钥库密码:

    build_v2.sh

    keyPass=p@ssw0rd
    sed -i "s|key.store.password=.*|key.store.password=${keyPass}|g" ant.properties
    sed -i "s|key.alias.password=.*|key.alias.password=${keyPass}|g" ant.properties
    ant release
    

    这允许我们的发布密钥库密码隐藏在其他地方。祝你好运!

    【讨论】:

      【解决方案5】:

      注意错误信息:

      错误的key.store.password 导致:

      密钥库被篡改或密码不正确:密码 验证失败

      而错误的key.alias.password 会导致:

      无法恢复密钥

      对于只检查了keytool -v -list mykeystore.keystore 的商店密码并且从未验证过 alias.password 的人。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-25
        • 1970-01-01
        相关资源
        最近更新 更多