Merge remote-tracking branch 'origin/dev_arch_opt_3.0' into dev_arch_opt_3.0

This commit is contained in:
donghongyu
2023-01-13 17:44:13 +08:00
5 changed files with 173 additions and 1 deletions

View File

@@ -1,4 +1,7 @@
import java.text.SimpleDateFormat
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
apply plugin: 'com.android.application'
apply plugin: 'com.alibaba.arouter'
@@ -193,7 +196,7 @@ android {
}
}
flavorDimensions "product", "basic", "env"
flavorDimensions "business","product", "basic", "env"
productFlavors {
// launcher app
@@ -208,18 +211,33 @@ android {
buildConfigField 'String', 'MAP_SDK_VERSION', "\"${MAP_SDK_VERSION}\""
buildConfigField 'String', 'MAP_SDK_OPT_VERSION', "\"${MAP_SDK_OPERATION_VERSION}\""
}
busbase {
dimension "business"
}
taxibase {
dimension "business"
}
sweeper {
dimension "business"
}
shuttle{
dimension "business"
}
// 配置网络环境QA、线上、演示
qa {
dimension "env"
buildConfigField 'int', 'NET_ENV', '2'
buildConfigField 'String', 'URLs', "\"${readFileToJson("qa").replace("\"","\\\"")}\""
}
online {
dimension "env"
buildConfigField 'int', 'NET_ENV', '3'
buildConfigField 'String', 'URLs', "\"${readFileToJson("online").replace("\"","\\\"")}\""
}
demo {
dimension "env"
buildConfigField 'int', 'NET_ENV', '4'
buildConfigField 'String', 'URLs', "\"${readFileToJson("demo").replace("\"","\\\"")}\""
}
}
@@ -233,6 +251,51 @@ android {
apply from: "./productFlavors/fMultiDisplayOchBus.gradle"
apply from: "./productFlavors/fMultiDisplayOchTaxi.gradle"
variantFilter { variant ->
def names = variant.flavors*.name
//要检查特定的构建类型请使用variant.buildType.name ==“ <buildType>”
// region 过滤sweper 的flavors
if (names.contains("sweeper")&&!names.contains("fPadLenovoOchSweeper")) {
//Gradle会忽略满足上述条件的所有变体
setIgnore(true)
}
// endregion
// region 过滤shuttle 的flavors
if (names.contains("shuttle")) {
//Gradle会忽略满足上述条件的所有变体
if(names.contains("fPadLenovoOchBus")){
}else if(names.contains("fPadLenovoOchBusPassenger")){
}else {
setIgnore(true)
}
}
// endregion
// region 过滤taxibase 的flavors
if (names.contains("taxibase")) {
//Gradle会忽略满足上述条件的所有变体
if(names.contains("fPadLenovoOchTaxi")){
}else if(names.contains("fPadLenovoOchTaxiPassenger")){
}else if(names.contains("fPadLenovo")){
}else if(names.contains("fMultiDisplayOchTaxi")){
}else {
setIgnore(true)
}
}
// endregion
// region 过滤taxibase 的flavors
if (names.contains("busbase")) {
//Gradle会忽略满足上述条件的所有变体
if(names.contains("fPadLenovoOchBus")){
}else if(names.contains("fPadLenovoOchBusPassenger")){
}else if(names.contains("fMultiDisplayOchBus")){
}else {
setIgnore(true)
}
}
// endregion
}
packagingOptions {
exclude 'META-INF/io.netty.versions.properties'
}
@@ -395,3 +458,44 @@ boolean isReleaseBuild() {
}
return false
}
Object readFileToJson(env){
try {
def businessType = project.hasProperty('business')
if(businessType){
println("businessType${businessType}----${business}")
}
// 加载config.json 文件
File file = new File("${rootDir}/app/config.json")
def jsonSlurper = new JsonSlurper()
// 解析json
def config = jsonSlurper.parse(file)
def flavorNames = variantName()
def jsonOutput = new JsonOutput()
config.each {key, value ->
// 匹配flavor对应的 json
if(flavorNames.toLowerCase().contains(key)){
return jsonOutput.toJson(value.get(env))
}
}
// 保底原则
return jsonOutput.toJson(config.get("busbase").get(env))
} catch (IOException e) {
e.printStackTrace()
}
return null
}
def variantName() {
def taskName = getGradle().getStartParameter().getTaskRequests().toString()
def split = taskName.split(":")
if (split.length > 2){
return split[2].toString().split("]")[0].replace("assemble","")
}else {
if(taskName.contains("bus")) {
return "busbase"
}else {
return "taxibase"
}
}
}

46
app/config.json Normal file
View File

@@ -0,0 +1,46 @@
{
"busbase": {
"qa": {
"och_url":"https://tech-qa.zhidaohulian.com"
},
"online": {
"och_url":"https://tech.zhidaohulian.com"
},
"demo": {
"och_url":"http://tech-dev.zhidaohulian.com"
}
},
"taxibase": {
"qa": {
"och_url":"https://tech-qa.zhidaohulian.com"
},
"online": {
"och_url":"https://tech.zhidaohulian.com"
},
"demo": {
"och_url":"http://tech-dev.zhidaohulian.com"
}
},
"shuttle": {
"qa": {
"och_url":"https://och-driver-qa.zhidaozhixing.com"
},
"online": {
"och_url":"https://och-driver.zhidaozhixing.com"
},
"demo": {
"och_url":"http://och-driver-dev.zhidaozhixing.com"
}
},
"sweeper": {
"qa": {
"och_url":"https://och-driver-qa.zhidaozhixing.com"
},
"online": {
"och_url":"https://och-driver.zhidaozhixing.com"
},
"demo": {
"och_url":"http://och-driver-dev.zhidaozhixing.com"
}
}
}

View File

@@ -9,7 +9,9 @@ import com.mogo.eagle.core.data.app.AppConfigInfo.workingBranchName
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HdMapBuildConfig
import com.mogo.eagle.core.data.config.HmiBuildConfig
import com.mogo.eagle.core.data.deva.net.UrlConfig
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.eagle.core.utilcode.util.ProcessUtils
import com.mogo.launcher.BuildConfig
import com.mogo.launcher.R
@@ -45,6 +47,8 @@ class ConfigStartUp : AndroidStartup<Boolean>() {
FunctionBuildConfig.isDemoMode = BuildConfig.IS_DEMO_MODE
// // app安装的身份信息
FunctionBuildConfig.appIdentityMode = BuildConfig.APP_IDENTITY_MODE
// 各个module需要的url
FunctionBuildConfig.urlJson = GsonUtils.fromJson(BuildConfig.URLs, UrlConfig::class.java)
Log.d("ConfigStartUp", "ProcessUtils.getCurrentProcessName():" + ProcessUtils.getCurrentProcessName())

View File

@@ -1,5 +1,8 @@
package com.mogo.eagle.core.data.config
import com.mogo.eagle.core.data.deva.net.UrlConfig
import com.mogo.eagle.core.utilcode.util.GsonUtils
/**
* @author xiaoyuzhou
* @date 2021/8/24 8:59 下午
@@ -173,4 +176,11 @@ object FunctionBuildConfig {
@JvmField
var isPNCWarning = true
/**
* 最外层设置的Url
*/
@Volatile
@JvmField
var urlJson: UrlConfig = GsonUtils.fromJson("{\"och_url\":\"https://tech.zhidaohulian.com\"}", UrlConfig::class.java)
}

View File

@@ -0,0 +1,8 @@
package com.mogo.eagle.core.data.deva.net
import com.google.gson.annotations.SerializedName
data class UrlConfig(
@SerializedName("och_url")
val ochUrl: String
)