注:本文章参考了某位大神的博客,由于时间过久没找到大神的原博客,如有侵权请联系删除
在 build.gradle(:app)里做 以下操作:
defaultConfig {
applicationId "com.***.**"
minSdkVersion 21
targetSdkVersion 28
versionCode 14
versionName "1.2.0"
multiDexEnabled true
// -------------------------- 注意这里 ! ! ! --------------------------
// 版本名后面添加一句话,意思就是flavor dimension 它的维度就是该版本号,这样维度就是都是统一的了
flavorDimensions "versionCode"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
android 结构里,和 defaultConfig 同级
productFlavors {
// 通用app 可以随便定义
sharelive {
// 设置applicationId(这里很重要,两个相同applicationId的apk不同同时安装在同一台Android手机中)
applicationId "你想要的包名"
// 自动生成@string/app_name为 app1的名称
// 注意,这里是添加,在 string.xml 不能有这个字段,会重名!!!
resValue "string", "app_name", "应用名字"
// 定义app_icon等字段,在AndroidManifest.xml文件中用到
manifestPlaceholders = [app_icon : "图标",
app_roundicon: "图标",
// 因为每个APP包名不同,所以需要单独配置每个APP的第三方key 可以随便定义
map_appkey : "sharelive"]
}
}
然后在清单文件里更改:label 和 roundIcon
<application
android:icon="${app_icon}"
android:label="@string/app_name"
android:roundIcon="${app_roundicon}"
然后在打包的时候会出现两个版本:
自己选择就好了
如果需要更多的包名的话,就像下面这样 以此类推就好了:
productFlavors {
// 通用app
sharelive {
// 设置applicationId(这里很重要,两个相同applicationId的apk不同同时安装在同一台Android手机中)
applicationId "你想要的包名"
// 自动生成@string/app_name为 app1的名称
// 注意,这里是添加,在 string.xml 不能有这个字段,会重名!!!
resValue "string", "app_name", "应用名字"
// 定义app_icon等字段,在AndroidManifest.xml文件中用到
manifestPlaceholders = [app_icon : "图标",
app_roundicon: "图标",
// 因为每个APP包名不同,所以需要单独配置每个APP的第三方key
map_appkey : "sharelive"]
}
// 通用app
sharelive1 {
// 设置applicationId(这里很重要,两个相同applicationId的apk不同同时安装在同一台Android手机中)
applicationId "你想要的包名"
// 自动生成@string/app_name为 app1的名称
// 注意,这里是添加,在 string.xml 不能有这个字段,会重名!!!
resValue "string", "app_name", "应用名字"
// 定义app_icon等字段,在AndroidManifest.xml文件中用到
manifestPlaceholders = [app_icon : "图标",
app_roundicon: "图标",
// 因为每个APP包名不同,所以需要单独配置每个APP的第三方key
map_appkey : "sharelive1"]
}
}