Cordova / Ionic构建android Gradle错误:支持的最低Gradle版本是2.14.1。当前版本是2.13

时间:2016-09-06 16:56:25

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

这是我要记录的上述错误的解决方案。我发现了其他类似的帖子,但都没有描述这个错误如何与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升级到更新版本,如下所示:

enter image description here 如果您这样做,Android Studio将下载新版本的Gradle并将其存储在本地并配置项目以使用新下载的本地Gradle分发,这是所选“使用默认等级包装”下方的无线电选项,我最终取消选择,因为这会导致错误。

enter image description here

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

中获得构建错误
$ cordova build android

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

设置Gradle版本
$ cordova platform add android

步骤,这是你想要的时候,所以你永远不会直接修改项目/平台内的代码

8 个答案:

答案 0 :(得分:18)

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

cordova platform remove android

cordova platform add android

ionic build android

答案 1 :(得分:13)

我很乐意将此作为评论,但我显然不够信誉......

阅读完您的文档后,我无法解决我的问题,建议您将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()
}

我当时能够建造。

答案 2 :(得分:8)

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

View rootView = LayoutInflater.from(getContext()).inflate(android.R.layout.abc_activity_chooser_view);
View x = rootView.findViewById(android.R.id.<name>);

为我工作

答案 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"

答案 4 :(得分:3)

修复问题的另一种方法,也适用于Windows:

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

答案 5 :(得分:2)

我想延长@bungler的答案。

我对gradle&amp;的版本感到困惑兼容的gradle安卓插件版本。以下链接具有兼容版本映射列表:

Gradle vs Android plugin for gradle - Compatible version list

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

所以最终设置如下:

  

适用于Mac

步骤1:在env变量中添加以下内容:

选项a)更新env变量:

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'
  }
}

这对我有用。

答案 6 :(得分:1)

以下错误:

  

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

这个命令对我有用:

ionic cordova platform update android

答案 7 :(得分:0)

在查克·霍尔布鲁克(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