[Opt3.0]新增StartUp模块并调整启动顺序

This commit is contained in:
chenfufeng
2023-01-31 11:39:36 +08:00
parent fa04cc6f0b
commit dcc98b078b
35 changed files with 437 additions and 240 deletions

View File

@@ -337,7 +337,7 @@ dependencies {
implementation rootProject.ext.dependencies.android_start_up
implementation rootProject.ext.dependencies.lancetx_runtime
implementation rootProject.ext.dependencies.mogocustommap
implementation project(':core:function-impl:mogo-core-function-startup')
// // 暂不使用Shizuku-API
// implementation rootProject.ext.dependencies.shizuku_provider
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {

View File

@@ -1,28 +1,12 @@
package com.mogo.launcher;
import android.content.Context;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.call.startup.CallerStartUpManager;
import com.mogo.eagle.core.function.main.MainMoGoApplication;
import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.eagle.core.utilcode.util.ProcessUtils;
import com.mogo.launcher.crash.CrashSystem;
import com.mogo.launcher.stageone.APMStartup;
import com.mogo.launcher.stageone.ARouterStartUp;
import com.mogo.launcher.stageone.ConfigStartUp;
import com.mogo.launcher.stageone.HttpDnsStartUp;
import com.mogo.launcher.stageone.ThreadOptStartup;
import com.rousetime.android_startup.StartupListener;
import com.rousetime.android_startup.StartupManager;
import com.rousetime.android_startup.model.LoggerLevel;
import com.rousetime.android_startup.model.StartupConfig;
import com.zhidaoauto.map.sdk.open.HDTypes;
import com.zhidaoauto.map.sdk.open.MapAutoApi;
import com.zhidaoauto.map.sdk.open.MapParams;
import org.greenrobot.eventbus.EventBus;
import com.mogo.launcher.startup.ARouterStartUp;
import com.mogo.launcher.startup.ConfigStartUp;
/**
* @author congtaowang
@@ -34,43 +18,12 @@ public class MogoApplication extends MainMoGoApplication {
@Override
public void onCreate() {
startUpInStage1();
ARouterStartUp.init(this);
ConfigStartUp.init(this);
CallerStartUpManager.initStageOne();
super.onCreate();
}
private final StartupListener startupListener = (l, costTimesModels) -> EventBus.getDefault().postSticky(costTimesModels);
/**
* 第一阶段初始化
*/
public void startUpInStage1() {
StartupConfig config = null;
if (DebugConfig.isDebug()) {
config = new StartupConfig.Builder()
.setLoggerLevel(LoggerLevel.DEBUG)
.setOpenStatistics(true)
.setListener(startupListener)
.build();
} else {
config = new StartupConfig.Builder()
.setLoggerLevel(LoggerLevel.NONE)
.setOpenStatistics(false)
.setAwaitTimeout(10000L)
.setListener(startupListener)
.build();
}
new StartupManager.Builder()
.addStartup(new HttpDnsStartUp())
.addStartup(new APMStartup())
.addStartup(new ConfigStartUp())
.addStartup(new ARouterStartUp())
.addStartup(new ThreadOptStartup())
.setConfig(config)
.build(this)
.start()
.await();
}
@Override
protected void initCrashConfig() {
CrashSystem crashSystem = CrashSystem.getInstance(this);

View File

@@ -1,25 +1,22 @@
package com.mogo.launcher.stageone
package com.mogo.launcher.startup
import android.app.Application
import android.content.Context
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.CleanUtils
import com.rousetime.android_startup.AndroidStartup
import java.lang.Exception
class ARouterStartUp : AndroidStartup<String>() {
override fun callCreateOnMainThread() = true
override fun create(context: Context): String {
object ARouterStartUp {
@JvmStatic
fun init(app: Application) {
try {
if (DebugConfig.isDebug()) {
ARouter.openDebug()
ARouter.openLog()
}
// 初始化 arouter
ARouter.init(context as Application?)
ARouter.init(app)
} catch (e: Exception) {
e.printStackTrace()
// 由于ARouter会在SP_AROUTER_CACHE.xml缓存路由表如果出现了被删除的情况会报错这里清除下就好了
@@ -27,12 +24,5 @@ class ARouterStartUp : AndroidStartup<String>() {
// 重启应用
AppUtils.relaunchApp()
}
return this.javaClass.simpleName
}
override fun waitOnMainThread() = false
override fun dependenciesByName(): List<String>? {
return listOf("com.mogo.launcher.stageone.ThreadOptStartup")
}
}

View File

@@ -1,11 +1,9 @@
package com.mogo.launcher.stageone
package com.mogo.launcher.startup
import android.content.Context
import android.util.Log
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.app.AppConfigInfo.appBuildTime
import com.mogo.eagle.core.data.app.AppConfigInfo.workingBranchHash
import com.mogo.eagle.core.data.app.AppConfigInfo.workingBranchName
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HdMapBuildConfig
import com.mogo.eagle.core.data.config.HmiBuildConfig
@@ -16,30 +14,25 @@ import com.mogo.eagle.core.utilcode.util.ProcessUtils
import com.mogo.launcher.BuildConfig
import com.mogo.launcher.R
import com.mogo.test.crashreport.CrashReportConstants
import com.rousetime.android_startup.AndroidStartup
import com.zhidaoauto.map.sdk.open.HDTypes
import com.zhidaoauto.map.sdk.open.MapAutoApi
import com.zhidaoauto.map.sdk.open.MapParams
import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
class ConfigStartUp : AndroidStartup<Boolean>() {
object ConfigStartUp {
override fun callCreateOnMainThread() = true
override fun waitOnMainThread() = false
override fun create(context: Context): Boolean {
initDebugConfig(context)
@JvmStatic
fun init(context: Context) {
initDebugConfig()
initBuildConfig()
initOtherConfig(context)
return true
}
private fun initBuildConfig() {
// 初始化构建APP的时候的分支及提交HASH用于辅助定位问题
workingBranchName = BuildConfig.WORKING_BRANCH_NAME
workingBranchHash = BuildConfig.WORKING_BRANCH_HASH
appBuildTime = BuildConfig.APP_BUILD_TIME
AppConfigInfo.workingBranchName = BuildConfig.WORKING_BRANCH_NAME
AppConfigInfo.workingBranchHash = BuildConfig.WORKING_BRANCH_HASH
AppConfigInfo.appBuildTime = BuildConfig.APP_BUILD_TIME
// 使用与渠道配置一样的gps提供者提供的数据,app/productFlavors/fPadLenovo.gradle GPS_PROVIDER 0-Android系统1-工控机2-OBU
FunctionBuildConfig.gpsProvider = BuildConfig.GPS_PROVIDER
// FunctionBuildConfig.gpsProvider = 2
@@ -70,7 +63,7 @@ class ConfigStartUp : AndroidStartup<Boolean>() {
FunctionBuildConfig.adasConnectIP = BuildConfig.ADAS_CONNECT_IP
}
private fun initDebugConfig(context: Context) {
private fun initDebugConfig() {
var mode = BuildConfig.NET_ENV
val envConfig = EnvChangeManager.getEnvConfig()
if (envConfig != null) {
@@ -86,7 +79,6 @@ class ConfigStartUp : AndroidStartup<Boolean>() {
DebugConfig.setMapOptVersion(BuildConfig.MAP_SDK_OPT_VERSION)
DebugConfig.setNeedUploadCoordinatesInTime(BuildConfig.IS_NEED_UPLOAD_COORDINATES_IN_TIME)
DebugConfig.setMultiDisplay(BuildConfig.IS_MULTI_DISPLAY)
}
private fun initOtherConfig(context: Context) {
@@ -105,30 +97,36 @@ class ConfigStartUp : AndroidStartup<Boolean>() {
if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) {
if (AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)) {
//是否显示 限速UI
HmiBuildConfig.isShowLimitingVelocityView = false
//白天模式
FunctionBuildConfig.skinMode = 1
} else if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
//是否显示 限速UI
HmiBuildConfig.isShowLimitingVelocityView = false
}
}
val mapParams = MapParams.init()
mapParams.setDebugMode(false) //todo 1-使用本地地图数据0-使用在线地图数据
//.setDataFileSource(1)
.setCoordinateType(MapParams.COORDINATETYPE_GCJ02)
.setPerspectiveMode(MapParams.MAP_PERSPECTIVE_UP_CAR)
.setHDVisibileArray(intArrayOf(HDTypes.DIVIDER.type,
HDTypes.ROAD_AREA.type,
HDTypes.STOP_LINE.type,
HDTypes.ARROW.type,
HDTypes.STATION_BRIDGE.type,
HDTypes.ZEBRA_LINE.type,
HDTypes.GREEN_BELT.type,
HDTypes.DIVERSION.type,
HDTypes.SAFE_ISLAND.type,
HDTypes.ALPHANUMERIC.type,
HDTypes.GUARDBAR.type,
HDTypes.TRAFFIC_DEVICE.type,
HDTypes.CABLE.type,
HDTypes.SIGNAL_LINE.type))
//.setDataFileSource(1)
.setCoordinateType(MapParams.COORDINATETYPE_GCJ02)
.setPerspectiveMode(MapParams.MAP_PERSPECTIVE_UP_CAR)
.setHDVisibileArray(intArrayOf(
HDTypes.DIVIDER.type,
HDTypes.ROAD_AREA.type,
HDTypes.STOP_LINE.type,
HDTypes.ARROW.type,
HDTypes.STATION_BRIDGE.type,
HDTypes.ZEBRA_LINE.type,
HDTypes.GREEN_BELT.type,
HDTypes.DIVERSION.type,
HDTypes.SAFE_ISLAND.type,
HDTypes.ALPHANUMERIC.type,
HDTypes.GUARDBAR.type,
HDTypes.TRAFFIC_DEVICE.type,
HDTypes.CABLE.type,
HDTypes.SIGNAL_LINE.type))
// .setZoom( 20 )
// .setPointToCenter( 0.734375f, 0.5f )
//todo 2D模式下需要注意ADAS部分遮挡
@@ -148,5 +146,4 @@ class ConfigStartUp : AndroidStartup<Boolean>() {
MapAutoApi.init(context, mapParams)
}
}

View File

@@ -224,6 +224,8 @@ ext {
//========================= autosize ======================
androidautoSize : 'com.github.JessYanCoding:AndroidAutoSize:v1.2.1',
thread_opt : "com.mogo.thread.opt:lib:${THREAD_OPT_VERSION}"
]
android = [
launcherApplicationId : "com.mogo.launcher",

View File

@@ -0,0 +1,21 @@
package com.mogo.eagle.core.function
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.datacenter.IDataCenterProvider
@Route(path = MogoServicePaths.PATH_DATA_CENTER_MODULE)
class DataCenterProvider: IDataCenterProvider {
override val functionName: String
get() = "DataCenterProvider"
override fun init(context: Context?) {
}
override fun onDestroy() {
}
}

View File

@@ -5,6 +5,7 @@ import android.content.Context
import android.view.View
import android.view.ViewGroup
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.EnvConfig
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.deva.chain.ChainLogParam
@@ -13,6 +14,7 @@ import com.mogo.eagle.core.data.deva.scene.SceneTAG
import com.mogo.eagle.core.data.msgbox.MsgBoxBean
import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
import com.zhjt.mogo_core_function_devatools.binding.BindingCarManager.Companion.bindingCarManager
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl
@@ -142,6 +144,10 @@ class DevaToolsProvider : IDevaToolsProvider {
traceManager.syncConfig()
}
override fun getEnvConfig(): EnvConfig? {
return EnvChangeManager.getEnvConfig()
}
override fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit) {
bindingCarManager.modifyCarInfo(callBack)
}

View File

@@ -4,6 +4,7 @@ import android.content.Context.MODE_PRIVATE
import android.os.Process
import com.mogo.commons.constants.*
import com.mogo.commons.debug.*
import com.mogo.eagle.core.data.EnvConfig
import com.mogo.eagle.core.function.call.map.*
import com.mogo.eagle.core.utilcode.mogo.storage.*
import com.mogo.eagle.core.utilcode.util.*
@@ -47,6 +48,11 @@ object EnvChangeManager {
}
}
fun getConfigNetMode(): Int {
val cache = getConfig()
return cache?.second ?: -1
}
fun getNetMode(): String {
val cache = getConfig()
return if (cache == null) {
@@ -88,6 +94,4 @@ object EnvChangeManager {
if (it.first == "010") 116.397446 else 112.582654,
if (it.first == "010") 39.909004 else 26.816478)
}
data class EnvConfig(val cityCode: String, val netMode: Int, val lat: Double, val lon: Double)
}

View File

@@ -41,10 +41,10 @@ import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager;
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager;
import com.mogo.eagle.core.function.call.startup.CallerStartUpManager;
import com.mogo.eagle.core.function.hmi.R;
import com.mogo.eagle.core.function.hmi.ui.widget.StatusBarView;
import com.mogo.eagle.core.function.main.modules.MogoModulesManager;
import com.mogo.eagle.core.function.main.stagetwo.AutopilotStartup;
import com.mogo.eagle.core.function.main.windowview.FloatingViewHandler;
import com.mogo.eagle.core.utilcode.mogo.AppLaunchTimeUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
@@ -163,7 +163,7 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
ContextHolderUtil.holdContext(this);
// 监听工控机连接信息
CallerAutoPilotStatusListenerManager.INSTANCE.addListener(TAG, this);
startUpInStage2();
CallerStartUpManager.initStageTwo();
// 加载模块
mPresenter.postLoadModuleMsg();
// 监听网络状态
@@ -218,26 +218,6 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
mConnectInfoRV.setAdapter(mConnAdapter);
}
/**
* 第二阶段初始化,第一阶段初始化可查看:{@link com.mogo.launcher.stageone}
*/
public void startUpInStage2() {
StartupConfig config = null;
if (DebugConfig.isDebug()) {
config = new StartupConfig.Builder()
.setLoggerLevel(LoggerLevel.DEBUG)
.setOpenStatistics(true)
.build();
}
new StartupManager.Builder()
.addStartup(new AutopilotStartup())
// .addStartup(new APMStartup())
.setConfig(config)
.build(this)
.start()
.await();
}
@Override
public void loadModules() {
final long start = System.currentTimeMillis();

View File

@@ -1,40 +0,0 @@
package com.mogo.eagle.core.function.main.stagetwo;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.eagle.core.data.constants.MogoServicePaths;
import com.rousetime.android_startup.AndroidStartup;
import java.util.ArrayList;
import java.util.List;
public class AutopilotStartup extends AndroidStartup<Boolean> {
@Nullable
@Override
public Boolean create(@NonNull Context context) {
ARouter.getInstance().build(MogoServicePaths.PATH_AUTO_PILOT).navigation();
return true;
}
@Override
public boolean callCreateOnMainThread() {
return true;
}
@Override
public boolean waitOnMainThread() {
return false;
}
// @Nullable
// @Override
// public List<String> dependenciesByName() {
// List<String> deps = new ArrayList<>();
// deps.add("com.mogo.eagle.core.function.main.stagetwo.APMStartup");
// return deps;
// }
}

View File

@@ -1,38 +0,0 @@
package com.mogo.eagle.core.function.main.stagetwo;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.rousetime.android_startup.AndroidStartup;
import java.util.ArrayList;
import java.util.List;
public class MapStartup extends AndroidStartup<Boolean> {
@Nullable
@Override
public Boolean create(@NonNull Context context) {
// TODO:暂不支持分步加载
return true;
}
@Override
public boolean callCreateOnMainThread() {
return true;
}
@Override
public boolean waitOnMainThread() {
return false;
}
// @Nullable
// @Override
// public List<String> dependenciesByName() {
// List<String> deps = new ArrayList<>();
// deps.add("com.mogo.eagle.core.function.main.stagetwo.APMStartup");
// return deps;
// }
}

View File

@@ -0,0 +1 @@
/build

View File

@@ -21,12 +21,6 @@ android {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
}
buildTypes {
@@ -48,25 +42,29 @@ dependencies {
implementation rootProject.ext.dependencies.androidxccorektx
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.arouter
implementation rootProject.ext.dependencies.rxandroid
implementation project(path: ':foudations:mogo-commons')
kapt rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.mogoami
implementation rootProject.ext.dependencies.mogoaicloudtelematic
implementation rootProject.ext.dependencies.android_start_up
implementation rootProject.ext.dependencies.mogocustommap
implementation rootProject.ext.dependencies.thread_opt
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
implementation rootProject.ext.dependencies.mogo_core_res
implementation rootProject.ext.dependencies.mogo_core_data
implementation rootProject.ext.dependencies.mogo_core_utils
implementation rootProject.ext.dependencies.mogo_core_function_api
implementation rootProject.ext.dependencies.mogo_core_function_call
implementation project(':libraries:mogo-adas')
implementation rootProject.ext.dependencies.crashreport
implementation rootProject.ext.dependencies.mogomap
implementation rootProject.ext.dependencies.mogomapapi
} else {
implementation project(':core:mogo-core-res')
implementation project(':core:mogo-core-data')
implementation project(':core:mogo-core-utils')
implementation project(':core:mogo-core-function-api')
implementation project(':core:mogo-core-function-call')
implementation project(':libraries:mogo-adas')
implementation project(':foudations:mogo-commons')
implementation project(":test:crashreport")
implementation project(':libraries:mogo-map')
implementation project(":libraries:mogo-map-api")
}
}

View File

@@ -0,0 +1,18 @@
/**
* Automatically generated file. DO NOT MODIFY
*/
package com.mogo.eagle.core.function.startup;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String LIBRARY_PACKAGE_NAME = "com.mogo.eagle.core.function.startup";
/**
* @deprecated APPLICATION_ID is misleading in libraries. For the library package name use LIBRARY_PACKAGE_NAME
*/
@Deprecated
public static final String APPLICATION_ID = "com.mogo.eagle.core.function.startup";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "";
}

View File

@@ -0,0 +1,18 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.mogo.eagle.core.function.startup.MogoStartUpProvider;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Group$$start_up implements IRouteGroup {
@Override
public void loadInto(Map<String, RouteMeta> atlas) {
atlas.put("/start_up/api", RouteMeta.build(RouteType.PROVIDER, MogoStartUpProvider.class, "/start_up/api", "start_up", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,18 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.enums.RouteType;
import com.alibaba.android.arouter.facade.model.RouteMeta;
import com.alibaba.android.arouter.facade.template.IProviderGroup;
import com.mogo.eagle.core.function.startup.MogoStartUpProvider;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Providers$$mogocorefunctionstartup implements IProviderGroup {
@Override
public void loadInto(Map<String, RouteMeta> providers) {
providers.put("com.mogo.eagle.core.function.api.startup.IStartUpProvider", RouteMeta.build(RouteType.PROVIDER, MogoStartUpProvider.class, "/start_up/api", "start_up", null, -1, -2147483648));
}
}

View File

@@ -0,0 +1,17 @@
package com.alibaba.android.arouter.routes;
import com.alibaba.android.arouter.facade.template.IRouteGroup;
import com.alibaba.android.arouter.facade.template.IRouteRoot;
import java.lang.Class;
import java.lang.Override;
import java.lang.String;
import java.util.Map;
/**
* DO NOT EDIT THIS FILE!!! IT WAS GENERATED BY AROUTER. */
public class ARouter$$Root$$mogocorefunctionstartup implements IRouteRoot {
@Override
public void loadInto(Map<String, Class<? extends IRouteGroup>> routes) {
routes.put("start_up", ARouter$$Group$$start_up.class);
}
}

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.eagle.core.function.startup">
<application>
</application>
</manifest>

View File

@@ -0,0 +1,89 @@
package com.mogo.eagle.core.function.startup
import android.content.Context
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.startup.IStartUpProvider
import com.mogo.eagle.core.function.startup.stageone.APMStartup
import com.mogo.eagle.core.function.startup.stageone.HttpDnsStartUp
import com.mogo.eagle.core.function.startup.stageone.ThreadOptStartup
import com.mogo.eagle.core.function.startup.stagetwo.AutopilotStartUp
import com.mogo.eagle.core.function.startup.stagetwo.DataCenterStartUp
import com.mogo.eagle.core.function.startup.stagetwo.ObuStartUp
import com.mogo.eagle.core.function.startup.stagetwo.V2XStartUp
import com.rousetime.android_startup.StartupListener
import com.rousetime.android_startup.StartupManager
import com.rousetime.android_startup.model.CostTimesModel
import com.rousetime.android_startup.model.LoggerLevel
import com.rousetime.android_startup.model.StartupConfig
import org.greenrobot.eventbus.EventBus
@Route(path = MogoServicePaths.PATH_STARTUP_PROVIDER)
class MogoStartUpProvider: IStartUpProvider {
private var context: Context? = null
override fun init(context: Context?) {
this.context = context
}
private val startupListener: StartupListener =
object : StartupListener {
override fun onCompleted(
totalMainThreadCostTime: Long,
costTimesModels: List<CostTimesModel>
) {
EventBus.getDefault().postSticky(costTimesModels)
}
}
override fun initStageOne() {
var config: StartupConfig? = null
config = if (DebugConfig.isDebug()) {
StartupConfig.Builder()
.setLoggerLevel(LoggerLevel.DEBUG)
.setOpenStatistics(true)
.setListener(startupListener)
.build()
} else {
StartupConfig.Builder()
.setLoggerLevel(LoggerLevel.NONE)
.setOpenStatistics(false)
.setAwaitTimeout(10000L)
.setListener(startupListener)
.build()
}
context?.let {
StartupManager.Builder()
.addStartup(HttpDnsStartUp())
.addStartup(APMStartup())
.addStartup(ThreadOptStartup())
.setConfig(config)
.build(it)
.start()
.await()
}
}
override fun initStageTwo() {
var config: StartupConfig? = null
if (DebugConfig.isDebug()) {
config = StartupConfig.Builder()
.setLoggerLevel(LoggerLevel.DEBUG)
.setOpenStatistics(true)
.build()
}
context?.let {
StartupManager.Builder()
.addStartup(DataCenterStartUp())
.addStartup(AutopilotStartUp())
.addStartup(ObuStartUp())
.addStartup(V2XStartUp())
.setConfig(config)
.build(it)
.start()
.await()
}
}
}

View File

@@ -1,9 +1,8 @@
package com.mogo.launcher.stageone
package com.mogo.eagle.core.function.startup.stageone
import android.content.Context
import com.rousetime.android_startup.AndroidStartup
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.test.crashreport.upgrade.UpgradeReportConstants
import com.mogo.test.crashreport.CrashReportConstants
class APMStartup : AndroidStartup<Boolean?>() {
@@ -22,6 +21,6 @@ class APMStartup : AndroidStartup<Boolean?>() {
}
override fun dependenciesByName(): List<String> {
return listOf("com.mogo.launcher.stageone.ARouterStartUp","com.mogo.launcher.stageone.ConfigStartUp")
return listOf("com.mogo.eagle.core.function.startup.stageone.ThreadOptStartup")
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.launcher.stageone
package com.mogo.eagle.core.function.startup.stageone
import android.content.Context
import com.mogo.aicloud.services.httpdns.HttpDnsConst
@@ -34,6 +34,7 @@ import com.mogo.eagle.core.function.api.map.listener.IMoGoMapLocationListener
import com.mogo.eagle.core.function.call.analytics.AnalyticsManager
import com.mogo.eagle.core.function.call.autopilot.*
import com.mogo.eagle.core.function.call.cloud.CallerCloudListenerManager
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.function.call.map.CallerMapLocationListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
@@ -44,7 +45,6 @@ import com.mogo.eagle.core.utilcode.util.ProcessUtils
import com.mogo.eagle.core.utilcode.util.ThreadPoolService
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.rousetime.android_startup.AndroidStartup
import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants.Endpoint.Companion.PAD
import mogo.telematics.pad.MessagePad.GnssInfo
@@ -73,17 +73,14 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
override fun dependenciesByName(): List<String> {
return listOf(
"com.mogo.launcher.stageone.APMStartup"
"com.mogo.eagle.core.function.startup.stageone.APMStartup"
)
}
override fun create(context: Context): Boolean {
this.context = context
// TODO 需要与,陈扶风,确认为啥要限制仅在主进程
// if (ProcessUtils.isMainProcess(context)) {
initGDLoc()
initHttpDns()
// }
return true
}
@@ -146,7 +143,7 @@ class HttpDnsStartUp : AndroidStartup<Boolean>() {
clientConfig.iHttpDnsCurrentLocation = object : IHttpDnsCurrentLocation {
override fun getCurrentLocation(): HttpDnsSimpleLocation {
val envConfig = EnvChangeManager.getEnvConfig()
val envConfig = CallerDevaToolsManager.getEnvConfig()
if (envConfig != null) {
return HttpDnsSimpleLocation(envConfig.cityCode, envConfig.lat, envConfig.lon)
}

View File

@@ -1,6 +1,6 @@
package com.mogo.launcher.stageone
package com.mogo.eagle.core.function.startup.stageone
import com.mogo.launcher.BuildConfig
import com.rousetime.android_startup.BuildConfig
import com.rousetime.android_startup.StartupListener
import com.rousetime.android_startup.model.CostTimesModel
import com.rousetime.android_startup.model.LoggerLevel

View File

@@ -1,12 +1,9 @@
package com.mogo.launcher.stageone
package com.mogo.eagle.core.function.startup.stageone
import android.content.*
import com.mogo.thread.ext.core.*
import com.mogo.thread.ext.core.config.*
import com.rousetime.android_startup.*
import java.io.*
import java.text.SimpleDateFormat
import java.util.*
import java.util.concurrent.TimeUnit.SECONDS
class ThreadOptStartup: AndroidStartup<Boolean>() {

View File

@@ -0,0 +1,28 @@
package com.mogo.eagle.core.function.startup.stagetwo
import android.content.Context
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.rousetime.android_startup.AndroidStartup
class AutopilotStartUp: AndroidStartup<Boolean>() {
override fun create(context: Context): Boolean? {
ARouter.getInstance().build(MogoServicePaths.PATH_AUTO_PILOT).navigation()
return true
}
override fun callCreateOnMainThread(): Boolean {
return true
}
override fun waitOnMainThread(): Boolean {
return false
}
override fun dependenciesByName(): List<String>? {
val deps = arrayListOf<String>()
deps.add("com.mogo.eagle.core.function.startup.stagetwo.DataCenterStartUp")
return deps
}
}

View File

@@ -0,0 +1,22 @@
package com.mogo.eagle.core.function.startup.stagetwo
import android.content.Context
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.rousetime.android_startup.AndroidStartup
class DataCenterStartUp: AndroidStartup<Boolean>() {
override fun create(context: Context): Boolean? {
ARouter.getInstance().build(MogoServicePaths.PATH_DATA_CENTER_MODULE).navigation()
return true
}
override fun callCreateOnMainThread(): Boolean {
return true
}
override fun waitOnMainThread(): Boolean {
return true
}
}

View File

@@ -0,0 +1,28 @@
package com.mogo.eagle.core.function.startup.stagetwo
import android.content.Context
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.rousetime.android_startup.AndroidStartup
class ObuStartUp: AndroidStartup<Boolean>() {
override fun create(context: Context): Boolean? {
ARouter.getInstance().build(MogoServicePaths.PATH_V2X_OBU_MOGO).navigation()
return true
}
override fun callCreateOnMainThread(): Boolean {
return true
}
override fun waitOnMainThread(): Boolean {
return false
}
override fun dependenciesByName(): List<String>? {
val deps = arrayListOf<String>()
deps.add("com.mogo.eagle.core.function.startup.stagetwo.DataCenterStartUp")
return deps
}
}

View File

@@ -0,0 +1,28 @@
package com.mogo.eagle.core.function.startup.stagetwo
import android.content.Context
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.rousetime.android_startup.AndroidStartup
class V2XStartUp: AndroidStartup<Boolean>() {
override fun create(context: Context): Boolean? {
ARouter.getInstance().build(MogoServicePaths.PATH_V2X_MODULE).navigation()
return true
}
override fun callCreateOnMainThread(): Boolean {
return true
}
override fun waitOnMainThread(): Boolean {
return false
}
override fun dependenciesByName(): List<String>? {
val deps = arrayListOf<String>()
deps.add("com.mogo.eagle.core.function.startup.stagetwo.DataCenterStartUp")
return deps
}
}

View File

@@ -0,0 +1,3 @@
package com.mogo.eagle.core.data
data class EnvConfig(val cityCode: String, val netMode: Int, val lat: Double, val lon: Double)

View File

@@ -74,4 +74,10 @@ public class MogoServicePaths {
@Keep
public static final String PATH_MSG_BOX_MODULE = "/msg_box/api";
@Keep
public static final String PATH_STARTUP_PROVIDER = "/start_up/api";
@Keep
public static final String PATH_DATA_CENTER_MODULE = "/data_center/api";
}

View File

@@ -0,0 +1,7 @@
package com.mogo.eagle.core.function.api.datacenter
import com.mogo.eagle.core.function.api.base.IMoGoFunctionServerProvider
interface IDataCenterProvider: IMoGoFunctionServerProvider {
}

View File

@@ -5,6 +5,7 @@ import android.content.Context
import android.view.View
import android.view.ViewGroup
import com.alibaba.android.arouter.facade.template.IProvider
import com.mogo.eagle.core.data.EnvConfig
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo
import com.mogo.eagle.core.data.deva.chain.ChainLogParam
import com.mogo.eagle.core.data.deva.scene.SceneModule
@@ -157,4 +158,6 @@ interface IDevaToolsProvider : IProvider {
* 查询app是否有更新
*/
fun queryAppUpgrade()
fun getEnvConfig(): EnvConfig?
}

View File

@@ -0,0 +1,9 @@
package com.mogo.eagle.core.function.api.startup
import com.alibaba.android.arouter.facade.template.IProvider
interface IStartUpProvider: IProvider {
fun initStageOne()
fun initStageTwo()
}

View File

@@ -4,6 +4,7 @@ import android.app.Activity
import android.content.Context
import android.view.View
import android.view.ViewGroup
import com.mogo.eagle.core.data.EnvConfig
import com.mogo.eagle.core.data.bindingcar.ModifyBindingcarInfo
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.constants.MogoServicePaths
@@ -172,6 +173,10 @@ object CallerDevaToolsManager {
devaToolsProviderApi?.syncConfig()
}
fun getEnvConfig(): EnvConfig? {
return devaToolsProviderApi?.getEnvConfig()
}
fun modifyCarInfo(callBack: (ModifyBindingcarInfo) -> Unit){
devaToolsProviderApi?.modifyCarInfo(callBack)
}

View File

@@ -0,0 +1,25 @@
package com.mogo.eagle.core.function.call.startup
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.function.api.startup.IStartUpProvider
import com.mogo.eagle.core.function.call.base.CallerBase
object CallerStartUpManager {
private val TAG = "CallerStartUpManager"
private val providerApi: IStartUpProvider?
get() = CallerBase.getApiInstance(
IStartUpProvider::class.java,
MogoServicePaths.PATH_STARTUP_PROVIDER
)
@JvmStatic
fun initStageOne() {
providerApi?.initStageOne()
}
@JvmStatic
fun initStageTwo() {
providerApi?.initStageTwo()
}
}

View File

@@ -34,7 +34,7 @@ include ':core:function-impl:mogo-core-function-chat'
include ':core:function-impl:mogo-core-function-biz'
// 消息盒子、自研OBU业务
include ':core:function-impl:mogo-core-function-datacenter'
// 启动
// 初始化
include ':core:function-impl:mogo-core-function-startup'
// 模块