5.0+的Cordova是使用gradle來編譯項目而不是ant,按講配置好gradle環境(GRADLE_HOME和PATH)的話應該沒有問題的,但實際編譯過程中會報如下錯誤。
分析上面的截圖可知實在下載Gradle的時候報錯,但直接通過下載鏈接下載確實OK的,十分不解。經過一番Search還是在萬能的Stackoverflow中找到了類似問題(不得不說,度娘搜索真不咋地):http://stackoverflow.com/questions/29874564/ionic-build-android-error-when-download-gradle、stackoverflow.com/questions/31260967/gradle-2-2-1-error-when-run-cordova-build-command-on-cli和http://stackoverflow.com/questions/30413485/install-gradle-for-using-in-cordova-build-android。
上述三個Question和筆者遇到的問題一樣,原因基本都解釋為Proxy問題,但又都沒有給出直接的解決辦法,看來這個問題確實很復雜。在Answer里面大概給出了三個間接解決方法:
1、強制使用ant編譯(Binggo!!!)
2、直接修改源文件中的下載鏈接
3、把Gradle下載到本地后再修改源文件下載鏈接
1、強制使用ant
在編譯和運行時分別鍵入如下命令
cordova build android -- --ant
cordova run android -- --ant
實踐證明,該方案可行,可以解決編譯錯誤問題且不需要修改源文件。
若出現類似于Unable to resolve target 'android-XX’的錯誤,解決辦法進入你的android project跟目錄,找到此文件 project.properties(或default.properties),找到target=android-XX出現此錯是因為你的android環境跟此處不對應,那么,你只需要將此處的android版本改成你機器上配置的android版本即可。
2、直接修改源文件下載鏈接
在D:gitdemoplatformsandroidcordovalib?uild.js文件的第345和346行分別定義了distributionUrl,如下所示:
var distributionUrlRegex = /distributionUrl.*zip/;
var distributionUrl = 'distributionUrl=http\://services.gradle.org/distributions/gradle-2.2.1-all.zip';
方法二把
http\://services.gradle.org/distributions/gradle-2.2.1-all.zip
修改為
http://services.gradle.org/distributions/gradle-2.2.1-all.zip
經實踐,該方法不可行。
3、先下載到本地再修改下載鏈接
通過http://services.gradle.org/distributions/gradle-2.2.1-all.zip把gradle.zip下載的本地并復制到D:gitdemoplatformsandroidgradle目錄中并把源文件中的disributionUrl修改為
var distributionUrl = '../gradle-2.2.1-all.zip';
方法三比方法二靠譜點,但仍然會報如下錯誤,還需要再研究研究。
4、下集預告
目前看來,還是強制使用ant編譯比較靠譜,在天朝GFW的威懾下,gradle貌似不太給力(Android Studio老編譯不成功十有八九也是這個問題)。
在初步解決編譯問題后下一節將介紹如何使用Cordova開發WebAPP。