渠道打包的基本配置:
android {
compileSdkVersion 23buildToolsVersion '23.0.3'
defaultConfig {
applicationId "com.ztapps.lockermaster"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName '1'
multiDexEnabled true
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
signingConfigs {
lockerConfig {
storeFile file('keystore.key')//秘钥文件地址,相对路径
storePassword ""
keyAlias ""
keyPassword ""
}
}
buildTypes {
release {
signingConfig signingConfigs.lockerConfig
zipAlignEnabled true
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
repositories {
flatDir {
dirs 'libs'
}
}
dexOptions {
javaMaxHeapSize "4g"
}
productFlavors {
aLocker {
applicationId ""
versionCode 1
versionName '1'
manifestPlaceholders = [EXTRA: "EXTRA"]
buildConfigField "String", "EXTRA_STATUSBAR", '"EXTRA_a"'
}
bLocker {
applicationId "com.ztapps.lockermaster"
versionCode 6020
versionName '6.0.2.0'
manifestPlaceholders = [EXTRA : "EXTRA"]
buildConfigField "String", "EXTRA_STATUSBAR", '"EXTRA_b"
}
}
}
网上说打渠道包的好处一大堆,实际上渠道包的缺陷还是蛮多的
1.我经历了6个项目合六为一的过程,虽然说这几个包功能差不多,但是还是有区别的,而且当有依赖不同的时候,打出来的包,比之前的包的体积会增大。(不过想想,渠道包初衷也许就不是让干这个功能的)
2.当app中有如下功能(我知道的就这两个):向桌面生成快捷图标;接受消息。如果通过渠道包来实现,老用户肯定受影响,之前已经桌面生成快捷图标,开启消息权限的都会默认为否。这是因为在AndroidManifest.xml中, package="com.example.haipingguo.demo"这个你更改不成原来的包名,即类的包名
4.当打渠道包的时候,打包出来的包无法同在一台设备上安装,可能是数据库同名冲突问题及其权限重复问题,使用linux命令行安装app发现问题:adb install ~/下载,会有提示
5.两个包区别太大不要强行和并为一个包,不然既费时间,也做无用功
3.题外话,,一开始产品就该想好,干嘛做那么多无聊的包,只有个别区别却要分别建立project呢。。一开始打渠道包,就没有这么麻烦了