2016-09-06 384 views
9

這是我想要記錄的上述錯誤的解決方案。我發現了其他類似的帖子,但都沒有描述這個錯誤如何與Cordova或Ionic相關聯。Cordova/Ionic構建android Gradle錯誤:支持的最小Gradle版本是2.14.1。當前版本是2.13

如果您不小心,Android Studio使用的Gradle版本與Cordova/cordova-android在其自動生成的應用程序代碼中指定的Gradle版本可能不匹配。如你所知,運行

$ cordova platform add android 

(或$ ionic platform add android,如果你正在構建一個應用程序離子)在項目/平臺/ 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 depened在其上Cordova/cordova-android版本正用於構建原生應用程序代碼。

當您運行

$ cordova build android 

搖籃的版本在distributionUrl VAR指定的是用於構建版本。

現在來棘手的部分。當您將項目導入Android Studio時,您很可能會收到強烈建議您將Gradle升級到更新版本的消息,如下所示:

enter image description here 如果您這樣做,Android Studio會下載新版本Gradle並將其存儲在本地,並將項目配置爲使用新下載的本地Gradle發行版,這是選定「使用默認等級包裝器」下的無線電選項,我最終取消選擇該選項,因爲這會導致錯誤。

enter image description here

這會導致問題,因爲Android的Studio和科爾多瓦現在將試圖建立與不同版本的搖籃的應用程序,你會得到構建Android Studio中的錯誤,並與

$ cordova build android 

在命令行中。 Cordova應用程序的解決方案是始終將Android Studio項目設置爲「使用默認的gradle wrapper」並忽略要升級的誘人消息。如果你確實想要使用更新版本的Gradle,你可以隨時更改上面提到的文件中的distributionUrl var(但是Cordova強烈不鼓勵修改platform文件夾中的代碼,因爲它很容易被覆蓋)。在撰寫本書的時候,我不能告訴是有一種方法來設置搖籃版本在

$ cordova platform add android 

一步,這是當你想做到這一點,所以你永遠不會直接modifiying的內部代碼 - 項目/平臺

回答

9

我很想剛剛離開這個作爲一個評論,但我顯然沒有足夠的信譽......

閱讀您的文件後,我沒能解決我的問題與你建議讓Android Studio保持「使用默認的Gradle包裝器」。我確實發現是,在構建之前設置會話變量CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL讓我遠一點:

[email protected]:$ export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.zip" 
[email protected]:$ 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() 
} 

我是能夠建立即可。

+0

你是我的英雄,指點CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL指着2.2.0是關鍵! – rubdottocom

2

另一種方式來解決問題,這也適用於Windows:

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

切換回「使用默認gradle這個包裝」我沒有工作,我的離子一期工程,但運行

ionic platform remove android 
ionic platform add android 

爲我工作

4

您可以在平臺/ Android的改變值/科爾多瓦/ lib中/建設者/ GradleBuilder.js

更改此值,將被最新的gradle這個拉鍊代替當您重新安裝Android平臺,所以你不必擔心它的變化

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" 
5

對於我來說,下面的命令解決了這個問題:

cordova platform remove android 

cordova platform add android 

ionic build android 
+1

我會加入這個「不要再次在Android Studio中打開項目」,如果這是一個選項。 :) –

1

我想延長@bungler答案。

我對gradle &版本的Android插件for gradle感到困惑。下面的鏈接已compatibale版本映射列表:

Gradle vs Android plugin for gradle - Compatible version list

對於gradle這個3.3+的當前版本,Android插件的兼容版本是2.3 。3

所以最終設置將類似於以下內容:

For Mac

第1步:添加以下的ENV變量:

選項)更新環境變量:

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

選項b)您可以下載gradle file並將其放置在<project>/platforms/android/gradle/和更新環境變量:

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

這爲我工作之後。

0

後續錯誤:

Minimum supported Gradle version is 4.1. Current version is 3.3. If using t he gradle wrapper, try editing the distributionUrl in E:\ionic\MyIonicProject\gr adle\wrapper\gradle-wrapper.properties to gradle-4.1-all.zip for gradle 4.1

此命令爲我工作:

ionic cordova platform update android 
相關問題