为了规范化发版逻辑,Boss对不同版本进行了细分,分了3个类型,内测T版,公测GM版,正式OFFICIAL版,为各个渠道单独配置appName,icon,applicationId,接口地址,之前的渠道做的不清晰,于是参照https://blog.csdn.net/z2wenfa/article/details/55684298 的文章 根据自己项目的需求做了一下分类。贴了一部分代码。部分涉及到公司的内容,以***替代
productFlavors {
***_test {
def PRODUCTION_MODEL = false
resValue "string", "app_name", "***"
applicationId = "***"
buildConfigField("String", "API_URL", "***")
manifestPlaceholders = [ENVIRONMENT: "***_t",
app_icon : "@mipmap/ic_launcher_t"]
dimension "App"
}
***_gm {
def PRODUCTION_MODEL = true
resValue "string", "app_name", "***"
applicationId = "***"
buildConfigField("String", "API_URL", "***")
manifestPlaceholders = [ENVIRONMENT: "***_gm",
app_icon : "@mipmap/ic_launcher_gm"]
dimension "App"
}
***_official {
resValue "string", "app_name", "***"
applicationId = "***"
buildConfigField("String", "API_URL", "***")
manifestPlaceholders = [ENVIRONMENT: "***_release",
app_icon : "@mipmap/ic_launcher"]
dimension "App"
}
}
主要就是在productFlavors 的各个渠道里面单独配置了app_name, applicationId,api, ENVIRONMENT,和icon。
注意几点,
1 strings.xml 不在在有app_name字段。
2 清单文件里面的写法
<application
android:allowBackup="true"
android:icon="${app_icon}"
android:label="@string/app_name"
android:name=".app.App"
android:supportsRtl="true"
android:theme="@style/AppTheme">
3 ENVIRONMENT目前版本用的友盟统计渠道
<meta-data android:value="${ENVIRONMENT}" android:name="UMENG_CHANNEL"/>
4 默认选项,根据测试结果,Android Studio直接运行的时候会选择渠道名字字母靠前的渠道配置,不过这个不影响,在Build Variants里面可以自己选择需要的配置。如下图。