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。