【问题标题】:Cordova 6.4.0 Android error when building release apk构建发布 apk 时出现 Cordova 6.4.0 Android 错误
【发布时间】:2017-03-13 23:43:53
【问题描述】:

我有一个项目在 cordova 6.3.1 上运行良好。

然后我将 cordova 和我的项目更新为 6.4.0 。在此之后,我第一次构建时,gradle 也自动更新了。

现在我遇到了一个重要问题:

我需要在 build.json 文件中包含密钥库和别名密码,否则发布 apk 生成失败并出现错误。

我使用这样的 build.json 文件:

{
"android": {
    "debug": {
        "keystore": "C:\\Path\\To\\Keystores\\debug.keystore",
        "storePassword": "debugpass",
        "alias": "thedebugalias",
        "password" : "debugpass",
        "keystoreType": ""
    },
    "release": {
        "keystore": "C:\\Path\\To\\Keystores\\theapp.keystore",
        "storePassword": "",
        "alias": "thealias",
        "password" : "",
        "keystoreType": ""
    }
}    

}

然后运行这个命令生成release apk:

cordova build android --release --buildConfig=build.json

到目前为止,这运行良好,它提示我输入密钥库和别名密码。然后构建apk ok。

升级到 Cordova 6.4.0 后,它不再工作了。它从不提示输入密码,然后构建过程失败,因为“密钥库已被篡改或密码不正确”。

如果我在 build.json 文件中包含密码,则可以正常生成发行版 apk,因为那里已经有密码并且不需要提示它们。

我不喜欢在 build.json 文件中使用纯文本形式的密钥库密码。有没有人遇到过同样的问题?有关如何解决此问题的任何想法?

谢谢。

编辑:我注意到另一个问题。它没有显示我的图标和闪屏。 编辑:关于不显示图标和启动画面的最后一个问题是新 Cordova 版本中的一个错误,正在解决https://issues.apache.org/jira/browse/CB-12077

【问题讨论】:

  • 为什么投反对票?这是一个重要的问题,我在网上找不到答案。我刚刚编辑了问题并添加了更多细节,以防它不够清楚。
  • 我遇到了完全相同的问题,我也不想在 build.json 文件中包含我的密码。不知道为什么有人投了反对票,但这是一个有效的问题。
  • 如果您在 config.xml 上强制使用 android 6.1.0,如该链接中所述,它可以解决第二个问题。
  • @Vero 似乎有关于这个问题的更新 - issues.apache.org/jira/browse/CB-12159。根据最新评论,将 build.gradle' if (task.name == 'validateReleaseSigning') 更改为 if (task.name == 'assembleRelease') 似乎可以解决问题。

标签: android cordova gradle build release


【解决方案1】:

此问题已解决:https://issues.apache.org/jira/browse/CB-12159

现在你可以使用cordova platform add android@6.2.0-nightly.2016.12.9.6c60dc5dcordova platform add https://github.com/apache/cordova-android

请记住,第二个命令添加了最新版本,它可能会引入其他错误....

将来您可能会使用cordova platform add android@6.2.0,但目前6.2.0 不存在。 (在这里查看:https://github.com/apache/cordova-android/releases

【讨论】:

    【解决方案2】:

    尝试将build.gradle'if (task.name == 'validateReleaseSigning') 更改为if (task.name == 'assembleRelease')
    这可能与最近cordova-android更新中的gradle版本更新有关。

    更新:在较新的 Gradle 版本中,validateReleaseSigning 任务名称似乎已更改为 validateSigningRelease:\

    所以,问题should be fixed 在下一个平台版本中(当前是 6.2.0-dev)。

    更新 #2:PR 已合并,因此您现在可以使用 cordova platform add https://github.com/apache/cordova-android(但请注意未发布的版本)。

    【讨论】:

    • 这可能会解决问题,但它只是本地和临时的,因为当您添加/更新平台时会重新创建 build.gradle...这不可靠...
    • 是的,这是一个临时解决方案,直到它(或其他东西)被推送到 repo。您现在可以使用 fork 进行此更改。
    【解决方案3】:

    你能把你的密码放到你的 build.json 中看看是否有效。

    {
       "android": {
         "release": {
             "keystore": "path\\to\\keystore.keystore",
             "storePassword": "password",
             "alias": "alias",
             "password" : "password",
             "keystoreType": ""
         }
       }
    }
    

    我和你在同一个版本,这是我的 build.json。

    然后我只是更改为发布并构建解决方案以获取 release.apk

    我知道cmd4life,如有冒犯请见谅!

    【讨论】:

    • 正如他所说,这可行,但这不是一个好的解决方案,因为您不应该将密码存储在该文件中......
    猜你喜欢
    • 2018-06-25
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    相关资源
    最近更新 更多