AndroidStudio里使用Gradle的一些小知识
管理工程和资源
改变默认源集
修改sourceSets
块
1 | android { |
配置工程范围的属性
在顶级build.gradle
中添加ext
块
1 | buildscript {...} |
使用rootProject.ext.property_name
访问这些属性
1 | android { |
管理库和依赖
使用依赖配置的特定目标构建
1 | android {...} |
发布库的非默认变体
改变默认构建变体
1 | android { |
发布所有库的可用构建变体
1 | android { |
配置应用模块的构建变体,使他们只使用对应的库的构建变体
1 | android {...} |
创建应用的不同版本
配置多APK支持
配置每个分辨率一个单独APK
添加android.splits.density
块
1 | android { |
配置每个ABI一个单独APK
添加android.splits.abi
块
1 | android { |
配置动态版本号
默认每个APK都会有同样的版本信息,谷歌商店不支持同一个应用的不同APK有同样的版本信息,你需要确保每个APK有自己独特的versionCode
1 | android { |
配置多个产品风味
通过flavorDimensions
来创建产品风味组,按优先级由高到低排列
1 | android { |
过滤器
通过variantFilter
配置不希望构建的变体
1 | android { |
测试应用
配置Lint
使用lintOptions
配置Lint
1 | android { |
配置测试manifest
1 | android { |
改变测试构建类型
1 | android { |
配置Gradle测试选项
通过testOptions
配置
1 | android { |
通过testOptions.unitTests
块仅配置单元测试
1 | android { |
优化构建
裁剪代码
1 | android { |
为不同的构建提供裁剪的`proguar
1 | android { |
配置DEX
1 | android { |
发布应用
签名
1 | android { |
从工程中移除私人签名信息
- 创建
keystore.properties
目录
1 | storePassword=[myStorePassword] |
- 在
build.gradle
中加载keystore.properties
文件
1 | // Creates a variable called keystorePropertiesFile, and initializes it to the |
简化应用开发
与代码共享自定义域和资源值
编译时,生成BuildConfig
类,所以代码可以获得当前构建的信息,可以在buildConfigField()
方法中添加自定义域,在运行时访问,也可以通过resValue()
添加资源
1 | android { |
可以这样访问他们
1 | Log.i(TAG, BuildConfig.BUILD_TIME); |
与Manifest共享属性
有时需要在代码和Manifest中声明同样的属性值,在build.gradle
中定义一份多处使用最好
1 | android { |
Manifest中使用
1 | <manifest> |
代码中使用
1 | Uri contentUri = FileProvider.getUriForFile(getContext(), BuildConfig.FILES_AUTHORITY, myFile); |