定义区别:
Gradlew是包装器,自动下载包装器里定义好的gradle 版本,保证编译环境统一,gradle 是用本地的gradle版本。
对于gradlew,其在Android studio的指定是在gradle/wrapper/gradle-wrapper.properties 中完成的,例如下面的代码即指定app编译的gradle版本为4.1。
#Wed Mar 07 14:24:26 CST 2018distributionBase=GRADLE_USER_HOMEdistributionPath=wrapper/distszipStoreBase=GRADLE_USER_HOMEzipStorePath=wrapper/distsdistributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip复制代码
存放路径不同
对于系统gradle其存放在 ~/.gradle 下面。本系统可在该文件夹下面找到gradle2.12相关的内容。对于gradlew其存放在 ~/.gradlew/wrapper/dists 下面。这个下面有着许多版本的gradle。这些就是gradlew下载下来的gradle版本。
使用gradle版本不同
若你在命令行使用gradlew 那么你使用的是存放在~/.gradlew/wrapper/dists路径下面的,通过在gradle/wrapper/gradle-wrapper.properties文件指定的gradle脚本。而你若使用gradle命令行,那么你使用的是~/.gradle下面的gradle脚本。
验证测试
我在AS 的build.gradle下面放入如下代码。
task hello1 << { println 'hello1' println GradleVersion.current().toString()}复制代码
使用gradlew命令运行task
./gradlew hello1复制代码
得到
> Task :hello1hello1Gradle 4.1复制代码
而使用gradle命令运行task
gradle hello1复制代码
得到
> Minimum supported Gradle version is 3.3. Current version is 2.12. 复制代码
这个和我之前分析的一样。说明上面的分析没有问题。
参考资料
- https://docs.gradle.org/current/userguide/gradle_wrapper.html
- http://saiwei.me/?p=3747