1、要是build.gradle声明为application的项目,要配置不同资源代码出包,可以设置如下
publishNonDefault true
flavorDimensions "company"
productFlavors{
ay{
//不设置会报错
dimension "company"
// 设置applicationId(这里很重要,两个相同applicationId的apk不同同时安装在同一台Android手机中)
applicationId "com.johan.demo"
// 自动生成@string/app_name为demo
resValue "string","app_name","demo"
// 定义app_icon字段,在AndroidManifest.xml文件中用到
manifestPlaceholders = [app_icon : "@mipmap/ic_launcher"]
}
sswl{
//不设置会报错
dimension "company"
// 设置applicationId(这里很重要,两个相同applicationId的apk不同同时安装在同一台Android手机中)
applicationId "com.johan.demo"
// 自动生成@string/app_name为demo
resValue "string","app_name","demo"
// 定义app_icon字段,在AndroidManifest.xml文件中用到
manifestPlaceholders = [app_icon : "@mipmap/ic_launcher"]
}
ft{
//不设置会报错
dimension "company"
// 设置applicationId(这里很重要,两个相同applicationId的apk不同同时安装在同一台Android手机中)
applicationId "com.johan.demo"
// 自动生成@string/app_name为demo
resValue "string","app_name","demo"
// 定义app_icon字段,在AndroidManifest.xml文件中用到
manifestPlaceholders = [app_icon : "@mipmap/ic_launcher"]
}
}
注意:
1)publishNonDefault true
一定不能少,要不打出的apk是默认main的资源代码
2)其中,‘ay’、‘sswl’、‘ft’是跟main目录同级别的目录名称,可以自定义,跟main目录一样可以放置java、res、assets等
3) flavorDimensions "company"
这个“company”也是自己随意定义即可
4)需要打哪个资源的包就选择哪个build variants即可
2、若是build.gradle声明为library的项目,要配置不同资源代码出包,也是像上述代码一样配置,不过要是哪个application要引用到这个library项目的话,也得配置一样productFlavors
3、假如libs目录下的某个jar或者aar依赖库仅仅是某个flavor依赖到,那么可以在dependencies
下配置上flavor名+Compile
,例如:
dependencies {
api files('libs\\alicloud-android-sdk-beacon-1.0.3.jar')
api files('libs\\alicloud-android-ut-5.4.3.jar')
api files('libs\\alicloud-android-utdid-1.1.5.3.jar')
api files('libs\\sdk_gism-1.3.2-confused.aar')
ftCompile files('libs\\msg_client_1.1.2.jar')
}