个人见解,不喜绕道
在build.gradle中的android下写下包信息
productFlavors{
api{}//对于src下的文件夹名字
api1{}
api2{}
api3{}
}
编译了之后在Build variants中会多出几个选项
下面开始正式的干活:
这里我创建了四个:
这些就是我们要得到的版本,也就是在gradle中设置的文件名.Build variants中选中的是哪个,哪个就可以创建类,运行的也就是选中的这个,否则只能创建文件File,比如
选中api3中的java文件夹是变成蓝色的
未选中的是这样的:
在各个版本中定义Api类,像上图,
Api1 中的Api类:
public class Api {
public static final String ENDPOINT = “http://api1.baidu.com“;
}
测试是否更改了显示内容
TextView tv_info = (TextView) findViewById(R.id.tv_info);
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(“Endpoint:”);
stringBuilder.append(Api.ENDPOINT);
stringBuilder.append(“\n”);
stringBuilder.append(“Build type:”);
if (BuildConfig.DEBUG) {
stringBuilder.append(“debug”);
} else {
stringBuilder.append(“release”);
}
stringBuilder.append(“\n”);
tv_info.setText(stringBuilder.toString());
设置各个版本的文件名
第一种方法:
配置文件
"true"
android:icon="@mipmap/ic_launcher"
android:label="${app_name}"
然后在项目的build.grade的productFlavors里替换项目变量
productFlavors {
api1 {
applicationId "com.zdl.test11"
manifestPlaceholders = [app_name: "api1版本"]
}
api2 {
applicationId "com.zdl.test2"
manifestPlaceholders = [app_name: "api2版本"]
}
api {
applicationId "com.zdl.test0"
manifestPlaceholders = [app_name: "@string/app_name"]
}
}
第二种方法:
配置文件在最初的状态下,需要把string.xml中的app_name去掉
1. <resources>
2.
3. resources>
applicationId分别修改了它们的applicationId,resValue分别修改了它们定义在string.xml中的app_name,所以也会修改app的应用名称。
api {
applicationId "com.zdl.test0"
resValue "string","app_name","api0版本"
// manifestPlaceholders = [app_name: "@string/app_name"]
}
api1 {
applicationId "com.zdl.test11"
resValue "string","app_name","api1版本"
// manifestPlaceholders = [app_name: "api1版本"]
}
api2 {
applicationId "com.zdl.test2"
resValue "string","app_name","api2版本"
// manifestPlaceholders = [app_name: "api2版本"]
}
,接下来替换各版本的图标.
替换图标
在报名下创建res/drawable文件夹将图片放入,最好放入不同的图片,但图片的名字一定要一样,
在配置文件中icon要设置成@drawable/b_head 你的图片文件名
如果设置好了后图标没有更换:
android {
........
sourceSets {
main {
manifest.srcFile 'src/main/AndroidManifest.xml'
java.srcDirs = ['src/main/java']
resources.srcDirs = ['src/main/java']
aidl.srcDirs = ['src/main/java']
renderscript.srcDirs = ['src/main/java']
res.srcDirs = ['src/main/res']
assets.srcDirs = ['src/main/assets']
jniLibs.srcDirs = ['libs']
}
version2.java.srcDirs = ['src/version2/java']
version2.res.srcDirs = ['src/version2/res']
}
}
现在基本上完事了,看下结果: