[TOC]
Gradle
基于Groovy脚本语言进行构建的。Google选用它作为默认的Android编译工具。
分类
全局build.gradle
可以为项目整体配置一些属性。
1 | buildscript { |
Module build.gradle
1 | //描述Gradle所引入的插件,如果该模块是Library,则将application改为library |
local.properties
1 | ndk.dir=G\:\\android-ndk-r10 |
可选配置
在android领域中
1 | //java编译版本 |
gradle.properties
进行一些动态配置,将一些键、值写在SystemProp中
1 | //1. 配置到SystemProp中 |
flavor
测试代码和实际代码可以使用flavor进行配置。
然后从AS的build variants可以选择自己需要运行的配置参数即可运行。
1 | productFlavors{ |
多渠道打包
实际上就是在代码层面上标记不同的渠道名
创建渠道占位符(比如${CHANNEL_VALUE}就是渠道占位符)
1
2
3<meta-data
android:name="PRODUCT"
android:value="${CHANNEL_VALUE}"/>配置Gradle脚本,一般在android领域中添加productFlavors
1
2
3
4
5
6
7
8
9
10
11
12
13
14productFlavors{
product1{
manifestPlaceholders = [CHANNEL_VALUE:"PRODUCT 1"]
}
product2{
manifestPlaceholders = [CHANNEL_VALUE:"PRODUCT 2"]
}
}
// 可以这样优化,即不在productX中定义,直接统一定义在外部
productFlavors.all{
flavor-> flavor.manifestPlaceholders = [CHANNEL_VALUE:name]
}
重命名包
包的默认命名是 app-渠道名-buildType.apk
1 | applicationVariants.all{ |
为不同版本添加不同代码
buildTypes下的具体领域中,通过buildConfigField的三个参数,类型、名称、值,可以将一个变量设置到不同的buildType中去。
这些变量会生成在系统的BuildConfig中
1 | buildConfigField "boolean" "apkFlag" "true" |
上传aar到Maven库
普通libriay的aar文件会存放在build/outputs/aar中
如果要上传aar到Maven库的话,是通过gradle脚本进行提交
具体脚本可以上网查询。
常用命令
- check
- assemble
- 组合项目的所有输出,包含assembleDebug和assembleRelease两个Task
- build
- 相当于check和assemble
- clean
- 清理所有的中间编译结果
Gradle依赖
1 | // 检查依赖关系 |
Gradle编译加速
Gradle本身已经内置了性能分析工具profile
build的时候只需要增加profile参数即可执行以下脚本
执行后在根目录的build/reports目录下会生成profile文件,里面有各项耗时
1 | gradle build --profile |
关闭Lint
1 | // 命令行 |
Gradle加速
1 | //gradle.properties,开启多线程和多核心支持 |
自定义插件
创建自定义插件的三种方式:
- 在build.gradle脚本中直接使用
- buildSrc中使用
- 独立Module中使用