转至:http://blog.csdn.net/heqiangflytosky/article/details/50853268
Gradle是一种构建工具,它抛弃了基于XML的构建脚本,取而代之的是采用一种基于Groovy的内部领域特定语言,建议可以先熟悉一下Groovy脚本。
gradle明明一般是./gradlew +参数,gradlew代表gradle wrapper,意思是gradle的一层包装,大家可以理解为在这个项目本地就封装了gradle,即gradle wrapper, 在gradle/wrapper/gralde-wrapper.properties文件中声明了它指向的目录和版本。只要下载成功即可用grdlew wrapper的命令代替全局的gradle命令。
./gradlew -v版本号
./gradlew clean清除app目录下的build文件夹
./gradlew build检查依赖并编译打包
这里注意的是./gradlew build命令把debug、release环境的包都打出来,如果正式发布只需要打Release的包,该怎么办呢,下面介绍一个很有用的命令assemble, 如:
./gradlew assembleDebug编译并打Debug包
./gradlew assembleRelease编译并打Release的包
除此之外,assemble还可以和productFlavors结合使用:
./gradlew installReleaseRelease模式打包并安装
./gradlew uninstallRelease卸载Release模式包
比如我们想根据不同的参数来进行不用的编译配置,可以在./gradlew中加入自定义参数。
./gradlew assembleDebug -Pcustom=true
就可以在build.gradle中使用下面代码来判断:
if(project.hasProperty('custom')){
}
1
2
3
1
2
3
assemble还能和Product Flavor结合创建新的任务,其实assemble是和Build Variants一起结合使用的,而Build Variants = Build Type + Product Flavor,举个例子大家就明白了:
如果我们想打包 wandoujia 渠道的release版本,执行如下命令就好了:
./gradlew assembleWandoujiaRelease
如果我们只打wandoujia渠道版本,则:
./gradlew assembleWandoujia
此命令会生成wandoujia渠道的Release和Debug版本
同理我想打全部Release版本:
./gradlew assembleRelease
这条命令会把Product Flavor下的所有渠道的Release版本都打出来。
总之,assemble命令创建task有如下用法:
assemble: 允许直接构建一个Variant版本,例如assembleFlavor1Debug。
assemble: 允许构建指定Build Type的所有APK,例如assembleDebug将会构建Flavor1Debug和Flavor2Debug两个Variant版本。
assemble: 允许构建指定flavor的所有APK,例如assembleFlavor1将会构建Flavor1Debug和Flavor1Release两个Variant版本。
Gradle构建脚本 build.gradle:
Gradle属性文件 gradle.properties
Gradle设置文件 settings.gradle
先看整个项目的gradle配置文件:
buildscript { repositories { jcenter() } dependencies { classpath'com.android.tools.build:gradle:1.3.0'// NOTE: Donotplace your application dependencies here; they belong //inthe individualmodulebuild.gradle files }}allprojects { repositories { jcenter() }}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
内容主要包含了两个方面:一个是声明仓库的源,这里可以看到是指明的jcenter(), 之前版本则是mavenCentral(),jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。
另一个是声明了Androidgradle plugin的版本,android studio 1.0正式版必须要求支持gradle plugin 1.0的版本
某个Moudle的gradle配置文件:
buildscript{ repositories { maven { url'http://*********'}} dependencies{ classpath'com.android.tools.build:gradle:1.3.1'}}
1