这个还真就是因为国内网路的问题,有时还真就是很难下载下来。

我配置了GRADLE_HOME , path中也有gradle命令行地址,为什么还要下载?

因为ionic gradle编译android时,并没有使用机器全局的gradle,而是使用项目自带的gradle.

用android studio 开发过android的同学都知道,android studio可以选择使用项目自带的gradle(建议),还是本地某个地址下的gradle。


屏幕快照 2017-01-13 下午10.28.07.png

为啥会出现多个gradle这种问题呢?这个gradle自身的特性,每个工程决定自己使用的gradle版本,very nice!完美解决了不同工程使用不同版本的需求,不用担心版本兼容性啦~~~。当然,我怀疑这么设计的原因是gradle 0.X那个的时代,兼容性问题频发。经常升个级就编译不过了。

使用gradle编译的工程根目录下,都有如下结构

project
————gradlew
————gradlew.bat
————gradle
————————wrapper
————————————gradle-wrapper.jar
————————————gradle-wrapper.properties

当然,这个文件夹里并没有gradle的sdk,只是指明了使用使用gradle的版本下载地址。

//gradle-wrapper.propertiesdistributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distszipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/distsdistributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

在project下运行./gradlew后

1.检测本地某个地址有没有gradle
2.没有,那就下载吧,从distributionUrl
3.下载完后解压到步骤1中说的那个某个地址。
4.运行喽

上面步骤中的某个地址?where?

//下载到[zipStoreBase]/[zipStorePath]/[version eg:gradle-2.14.1-all]/[md5sha1]/[fileName eg:gradle-2.14.1-all.zip]//解压到[distributionBase]/[distributionPath]/[version eg:gradle-2.14.1-all]/[md5sha1]/[dir]

GRADLE_USER_HOME没有设置的话是用户根目录下的.gradle

知道了这个原理,那就简单了,我们可以用迅雷下载下来,放到相应的地址就可以喽。

  1. 到你的[zipStoreBase]/[zipStorePath]/[version eg:gradle-2.14.1-all]/文件夹下,可能有多个[md5]
  2. 检查每一个文件夹,把不完全的删除掉,即里面没有gradle-xxx.zip,gradle-xxx/的。
  3. 命令行进入你的工程根目录,运行 ionic build android . 到了下载gradle时,取消即可。
  4. 在gradle文件夹下,可以发现多了一个[md5]文件夹,进入后可以看到gradle-xxx.zip.lck,gradle-xxx.zip.part两个文件,这个文件夹是你刚才运行ionic命令新建的。
  5. 用迅雷把文件下载下来,地址在gradle-wrapper.properties中distributionUrl。这个还是很快的。
  6. 将下载的gradle-xxx.zip直接copy到步骤4中的那个文件夹。
  7. 命令行进入你的工程根目录,运行 ionic build android,可以看到,没有download gradle的步骤了。而步骤4中的[md5]文件夹里,多了一个gradle-xxx文件夹,里面有gradle整个程序。

每次运行 ionic build android ,ionic都会替换gradle-wrapper.properties中的distributionBase地址。

// ionicproject/platforms/android/cordova/lib/builders/GradleBuilder.js/*jshint -W069 */var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-2.14.1-all.zip';/*jshint +W069 */var gradleWrapperPropertiesPath = path.join(self.root, 'gradle', 'wrapper', 'gradle-wrapper.properties');shell.chmod('u+w', gradleWrapperPropertiesPath);shell.sed('-i', distributionUrlRegex, 'distributionUrl='+distributionUrl, gradleWrapperPropertiesPath);

从代码可以知道,他会用环境变量CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL的值或者http\://services.gradle.org/distributions/gradle-2.14.1-all.zip来替换gradle-wrapper.properties中的distributionUrl,从而达到影响工程使用的gradle版本的目的。

有些人通过改这个环境变量,或者更粗暴些,直接改上面的http地址为一个本地地址,但是我并不建议修改这里。
修改环境变量,会影响你电脑上所有ionic工程编译android时使用的版本。修改http地址,导致文件修改,一不小心提交了就完蛋了。

更多相关文章

  1. android 2.2 的新功能 ndk-gdb调试.
  2. Android(安卓)SDK2.2离线安装
  3. Android(安卓)开发环境下载地址 -- 百度网盘 adt-bundle android
  4. Android(安卓)Studio 使用技巧:修改默认build.gradle
  5. Android实现类似excel表格的方法整理
  6. 【Android性能优化】使用NDK进行Java和C++混编
  7. 在Android(安卓)studio中建立Java工程
  8. Android(安卓)访问GPS获取位置信息
  9. Android自定义TTF字体

随机推荐

  1. Java提高篇——equals()方法和“==”运算
  2. javascript 基础知识点
  3. 关于Javascript中声明变量、函数的笔记
  4. 如何在Spring Data(JPA)派生查询中按多个属
  5. Java设计模式-策略模式
  6. JavaScript框架是什么 (share)
  7. 黑马程序员-Java基础总结11——IO流(二)
  8. Java(Android)设计模式-单例模式
  9. Java applet中的drawImage在Safari中闪烁
  10. java笔记之java语言概述