实际开发过程中,公版针对不同的客户,需要做定制化处理,下面介绍通过渠道包的方式进行定制化打包:
productFlavors添加不同渠道
productFlavors{
base{
}
test1{
}
test2{
}
}
配置不同签名
signingConfigs {
base {
storeFile file('../base.jks')
storePassword '123456'
keyAlias 'base'
keyPassword '123456'
}
test1 {
storeFile file('../test1.keystore')
storePassword '123456'
keyAlias = 'test1'
keyPassword '123456'
}
test2 {
storeFile file('../test2.keystore')
storePassword '123456'
keyAlias = 'test2'
keyPassword '123456'
}
}
配置渠道包不同签名
productFlavors{
base{
signingConfig signingConfigs.base
}
test1{
signingConfig signingConfigs.test1
}
test2{
signingConfig signingConfigs.test2
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
debug.init(release.signingConfig)
}
}
新建不同渠道文件夹
配置渠道包加载不同资源、lib、Manifest
sourceSets {
base {
java.srcDirs = ['src/base/java']
jniLibs.srcDirs = ['libs_base']
assets.srcDirs = ['src/main/assets_base']
res.srcDirs = ['src/main/res-base']
}
test1 {
java.srcDirs = ['src/test1/java']
jniLibs.srcDirs = ['libs_test1']
assets.srcDirs = ['src/main/assets_test1']
res.srcDirs = ['src/main/res-test1']
}
test2 {
java.srcDirs = ['src/test2/java']
jniLibs.srcDirs = ['libs_test2']
assets.srcDirs = ['src/main/assets_test2']
res.srcDirs = ['src/main/res-test2']
}
}
添加渠道自定义配置
productFlavors{
base{
buildConfigField("String", "SERVER_URL", "\"tcp://192.168.166.1\"")
}
test1{
buildConfigField("String", "SERVER_URL", "\"tcp://192.168.166.2\"")
}
test2{
buildConfigField("String", "SERVER_URL", "\"tcp://192.168.166.3\"")
}
}
代码中使用:
String DEFAULT_SERVER_URL = BuildConfig.SERVER_URL;
String FLAVOR = BuildConfig.FLAVOR;