【问题标题】:Cordova / Ionic build android Gradle error: Minimum supported Gradle version is 2.14.1. Current version is 2.13Cordova / Ionic build android Gradle 错误:支持的最低 Gradle 版本为 2.14.1。当前版本是 2.13
【发布时间】:2017-01-14 05:14:49
【问题描述】:

这是我要记录的上述错误的解决方案。我发现了其他类似的帖子,但没有人描述此错误如何与 Cordova 或 Ionic 相关联。

如果您不小心,Android Studio 使用的 Gradle 版本可能与 Cordova / cordova-android 在其自动生成的应用程序代码中指定的 Gradle 版本不匹配。如你所知,跑步

$ cordova platform add android

(或$ ionic platform add android,如果您正在构建 Ionic 应用程序)在-project/platforms/android 中创建本机应用程序代码。

在该文件夹中,文件:/the-project/platforms/android/cordova/lib/builders/GradleBuilder.js 导出一个变量,如下所示:

var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-x.y-all.zip';

x 和 y 取决于用于构建本机应用程序代码的 Cordova / cordova-android 版本。

当你跑步时

$ cordova build android

distributionUrl var 中指定的 Gradle 版本是用于构建的版本。

现在棘手的部分来了。当您将项目导入 Android Studio 时,您很可能会收到一条强烈建议您将 Gradle 升级到更新版本的消息,如下所示:

如果这样做,Android Studio 将下载一个新版本的 Gradle 并将其存储在本地,并将项目配置为使用新下载的本地 Gradle 发行版,这是选中的“使用默认等级包装器”下方的单选选项,我结束了取消选择,因为这会导致错误。

这将导致问题,因为 Android Studio 和 Cordova 现在将尝试使用不同版本的 Gradle 构建应用程序,您将在 Android Studio 和使用

时遇到构建错误
$ cordova build android

在命令行中。 Cordova 应用程序的解决方案是始终将 Android Studio 项目设置为“使用默认 gradle 包装器”,并忽略升级的诱人消息。如果您确实想使用更新版本的 Gradle,您可以随时更改上述文件中的 distributionUrl var(但是 Cordova 强烈反对修改平台文件夹中的代码,因为它很容易被覆盖)。在写这篇文章的时候,我不知道有没有办法在

$ cordova platform add android

步骤,这是您想要这样做的时候,因此您永远不会直接修改项目/平台内的代码

【问题讨论】:

    标签: android cordova android-studio gradle ionic-framework


    【解决方案1】:

    在跟进 Chuck Holbrooks 的回答后,通过以下解决方案,我在尝试再次添加 android 平台时出现错误,说它已经添加。

    ionic cordova platform remove android
    ionic cordova platform add android
    

    我的工作解决方案:

    ionic cordova platform remove android
    ionic cordova platform check android
    ionic cordova platform add android 
    

    【讨论】:

      【解决方案2】:

      对于跟随错误:

      支持的最低 Gradle 版本为 4.1。当前版本是 3.3。如果 使用 gradle 包装器,尝试编辑 distributionUrl E:\ionic\MyIonicProject\gr adle\wrapper\gradle-wrapper.properties 到 gradle-4.1-all.zip 用于 gradle 4.1

      这个命令对我有用:

      ionic cordova platform update android
      

      【讨论】:

      • 那个命令为我做了!感谢 EmRa228。比其他解决方案容易得多。
      【解决方案3】:

      我想扩展@bungler 的答案。

      我对 gradle 的版本和 gradle 的 android 插件的兼容版本感到困惑。以下链接有兼容版本映射列表:

      Gradle vs Android plugin for gradle - Compatible version list

      对于当前版本的gradle 3.3+,兼容的android插件版本是2.3.3

      所以最终设置如下所示:

      对于 Mac

      第 1 步:在环境变量中添加以下内容:

      选项 a) 更新环境变量:

      export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-3.3-all.zip"
      

      选项 b )您可以下载 gradle file 并将其放入 <project>/platforms/android/gradle/ 并更新 env 变量:

      export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="../gradle-3.3-all.zip"
      

      第2步:更新<project>/platforms/android/CordovaLib/build.gradle中的关注

      buildscript {
        ...
        dependencies {
          classpath 'com.android.tools.build:gradle:2.3.3'
        }
      }
      

      这对我有用。

      【讨论】:

      • 适用于 Mac 和 Linux
      【解决方案4】:

      对我来说,以下命令解决了这个问题:

      cordova platform remove android
      
      cordova platform add android
      
      ionic build android
      

      【讨论】:

      • 如果可以的话,我会添加到“不要再次在 Android Studio 中打开项目”。 :)
      • 截至 2020 年 3 月,这仍然可以解决问题。
      【解决方案5】:

      您可以更改 platform/android/cordova/lib/builders/GradleBuilder.js 中的值

      你改变的值,当你重新安装android平台时,它会被最新的gradle zip替换,所以你不用担心改变它

      var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-2.14.1-all.zip';
      

      或像其他人一样

      export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.zip"
      

      【讨论】:

      • 先生的意思是..更改版本并删除平台然后再次添加平台对吗?
      【解决方案6】:

      在我的 ionic 1 项目中切换回“使用默认 gradle 包装器”对我不起作用,但正在运行

      ionic platform remove android
      ionic platform add android
      

      为我工作

      【讨论】:

      • 仍然适用于 Ionic 3/4:支持的最低 Gradle 版本为 4.4。当前版本是 4.1。如果使用 gradle 包装器,请尝试将 E:\ionic\MyIonicProject\gradle\wrapper\gradle-wrapper.properties 中的 distributionUrl 编辑为 gradle-4.4-all.zip for gradle 4.4
      【解决方案7】:

      另一种解决问题的方法,也适用于 Windows:

      cordova build android --release --CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
      

      【讨论】:

        【解决方案8】:

        我很想留下这个作为评论,但我显然不够有名...

        阅读您的文档后,我无法解决您关于将 Android Studio 保持为“使用默认 gradle 包装器”的建议的问题。我确实发现,在构建之前设置会话变量 CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL 让我更进一步:

        root@dev:$ export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.zip"
        root@dev:$ cordova build android
        

        接下来我要做的是编辑 <project>/platforms/android/build.gradle<project>/platforms/android/CordovaLib/build.gradle 并确保它们都指向有效的 gradle 插件版本。

        dependencies {
            classpath 'com.android.tools.build:gradle:2.2.0'
        }
        

        ...在<project>/platforms/android/CordovaLib/build.gradle 中,我在存储库中添加了 jcenter(因为 maven.org 似乎没有 2.2.0)

        repositories {
            mavenCentral();
            jcenter()
        }
        

        那时我能够建造。

        【讨论】:

        • 你是我的英雄,指向 CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL 并指向 2.2.0 是关键!
        • 从 CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.zip" 中删除双引号,因为它在 gradle-wrapper.properties 文件中添加了双引号在 distributionUrl 值中并在构建中生成错误(java.net.URISyntaxException:索引 0 处方案名称中的非法字符:“services.gradle.org/distributions/…
        • 是的,不要忘记使用“set”而不是“export”。即设置 CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
        • 不应建议对平台文件夹中的文件进行任何更新。如果您需要更新或删除和添加 android 或 iOS 平台,对这些文件的更新将被覆盖。这意味着您永远无法在不丢失这些更新的情况下更新 Cordova 解决方案。
        猜你喜欢
        • 1970-01-01
        • 2018-05-26
        • 1970-01-01
        • 2017-08-21
        • 2020-09-15
        • 2018-08-25
        • 2020-09-20
        相关资源
        最近更新 更多