app的build.gradle中
android{
//默认配置,所有 productFlavors 都会继承 defaultConfig 中配置的属性
defaultConfig {
applicationId "com.myapp.ics"
minSdkVersion rootProject.ext.android["minSdkVersion"]
targetSdkVersion rootProject.ext.android["targetSdkVersion"]
versionCode 3
versionName "2.0"
testInstrumentationRunner rootProject.ext.dependencies["androidJUnitRunner"]
flavorDimensions "versionCode"
javaCompileOptions {
annotationProcessorOptions {
includeCompileClasspath true
}
}
}
//配置多版本的apk
// productFlavors 定义了一个应用的自定义构建版本
//一个单一的项目可以同时定义多个不同的 flavor 来改变应用的输出。
// productFlavors 这个概念是为了解决不同的版本之间的差异非常小的情况,通常用于区分同一个应用的不同渠道/客户等,可包含少量业务功能差别。
// productFlavors 中的 flavor 不能跟 buildType 中的一样,否则会报: "ProductFlavor names cannot collide with BuildType names"
productFlavors {
releases {
applicationId "com.yhmsi.ics.release"
manifestPlaceholders = [app_name: "MyApp", icon: "@drawable/ic_launcher"]
//在java代码中具体的使用方式为:context.getResources().getString(R.string.strKey);
resValue("string", "strKey", "release版本")
// versionName "1.0.0"
// versionCode 1
}
outtest {
applicationId "com.yhmsi.ics.test"
manifestPlaceholders = [app_name: "MyApp2", icon: "@drawable/ic_launcher_play"]
resValue("string", "strKey", "test版本")
}
}
}
在app/src目录中,创建与main同级的文件(文件名与productFlavors里的命名一样),里面可放不同环境的不同资源文件等
在代码中判断版本
if(BuildConfig.FLAVOR.equals("external")){//用于判断打包的是哪个版本
}