例如,要生成应用的“完全调试”版本,构建系统需要合并来自以下源集的代码、设置和资源。比如:百度的开发环境包:src/baiduDebug
构建类型的依赖配置
很多时候我们会把sdk或者api接口单独做成一个库,一般会有生产环境和测试环境之分,但在依赖的时候往往我们会像这样去引用:compile project(':sdk') ,这样依赖的环境就是release ,在开发调试的时候测试环境的时候就不行了。我们得换另外一种方式:
<buildType> Compile project()
这样会根据不同的构建类型去依赖不同的包,比如我们测试环境的依赖包:debugCompile project(':sdk') ,再比如上面的jnidebug :jnidebugCompile project(':sdk')
那么问题来了,我当前的构建类型怎么对应到其他的module 去呢?比如你的app要依赖sdk module 的debug 环境,那么你可以这么做:
configuration :目标module 的<buildType> ,比如你sdk 中<buildType> 的debug 构建类型
debugCompile project(path: ':sdk', configuration: 'debug')
综合示例
1、先看app这边的build.gradle 配置:
apply plugin: ‘com.android.application’
android { buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } debug { applicationIdSuffix ‘.debug’ minifyEnabled false }
// 自定义的构建类型,名字随便取,一定要有意义 raedebug { initWith debug applicationIdSuffix ‘.r aedebug’ } } }
dependencies { // 生成环境依赖 releaseCompile project(path: ‘:sdk’, configuration: ‘release’) // 测试环境依赖 debugCompile project(path: ‘:sdk’, configuration: ‘debug’) // 自定义构建类型依赖 raedebugCompile project(path: ‘:sdk’, configuration: ‘uutest’) }
2、sdk module的build.gradle 配置:
apply plugin: ‘com.android.library’
android { buildTypes { debug { debuggable true minifyEnabled false } release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ }
// 注意这里,跟第一点的 raedebugCompile project的configuration要匹配。 uutest { initWith debug } } }
多渠道打包 productFlavors
先看看build.gradle 配置你就懂了
android{
// 渠道包定义,默认定义的名称就是渠道名称 productFlavors {
dev {} // 测试 baidu {} // 百度手机助手 yinyongbao {} // 应用宝 m360 {} // 360手机助手 pp {} // PP助手 anzhi{} // 安智市场 xiaomi {} // 小米商店 letv {} // 乐视商店 huawei {} // 华为商店 lenovomm {} // 联想乐商店 other {} // 其他市场 official{} // 官方版本
}
// 批量渠道包值替换 productFlavors.all { flavor -> // 友盟、极光推送渠道包, UMENG_CHANNEL 是根据你AndroidManifest.xml来配置的,请看下面。 flavor.manifestPlaceholders = [UMENG_CHANNEL: name, JPUSH_CHANNEL: name] } }
AndroidManifest.xml 配置: <?xml version="1.0" encoding="utf-8"?>
sync gradle之后看看gradle projects 面板列表就多出了好到渠道的任务了,Build Variants 面板也相对应多了这些构建类型。
APK输出配置
在结合到多渠道打包后,运营的那边希望我们给的渠道包是这种格式的app-{版本号}-{渠道名称}.apk ,那我们来看看怎么来满足这个多渠道打包输出apk文件名修改的。
android{ 了,Build Variants 面板也相对应多了这些构建类型。
APK输出配置
在结合到多渠道打包后,运营的那边希望我们给的渠道包是这种格式的app-{版本号}-{渠道名称}.apk ,那我们来看看怎么来满足这个多渠道打包输出apk文件名修改的。
android{
|