diff --git a/app/src/main/java/com/mogo/launcher/MogoApplication.java b/app/src/main/java/com/mogo/launcher/MogoApplication.java index a833aaaafd..f35d8258c0 100644 --- a/app/src/main/java/com/mogo/launcher/MogoApplication.java +++ b/app/src/main/java/com/mogo/launcher/MogoApplication.java @@ -1,9 +1,13 @@ package com.mogo.launcher; +import com.mogo.commons.debug.DebugConfig; +import com.mogo.eagle.core.function.api.devatools.strict.IStrictModeProvider; +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; 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.SharedPrefs; import com.mogo.launcher.crash.CrashSystem; import com.mogo.launcher.startup.ARouterStartUp; import com.mogo.launcher.startup.ConfigStartUp; @@ -21,9 +25,21 @@ public class MogoApplication extends MainMoGoApplication { ARouterStartUp.init(this); ConfigStartUp.init(this); CallerStartUpManager.initStageOne(); + tryEnableStrictMode(); super.onCreate(); } + private void tryEnableStrictMode() { + IStrictModeProvider strict = CallerDevaToolsManager.INSTANCE.strict(); + if (DebugConfig.isDebug() && strict != null) { + boolean enabled = SharedPrefs.getInstance(this).getBoolean("MOGO_STRICT_MODE_ENABLED", false); + Logger.e("StrictMode", "isEnabled:" + enabled); + if (enabled) { + strict.enable(); + } + } + } + @Override protected void initCrashConfig() { CrashSystem crashSystem = CrashSystem.getInstance(this); diff --git a/app/src/main/java/com/mogo/launcher/lancet/CrashFix.kt b/app/src/main/java/com/mogo/launcher/lancet/CrashFix.kt index 73d69c4931..a3a8a614f4 100644 --- a/app/src/main/java/com/mogo/launcher/lancet/CrashFix.kt +++ b/app/src/main/java/com/mogo/launcher/lancet/CrashFix.kt @@ -14,23 +14,29 @@ import com.knightboost.lancet.api.annotations.* @Group("crash_fix") class CrashFix { - /** - * 修正Android8.0及之后,后台启动Service引起的崩溃 - * java.lang.IllegalStateException: Not allowed to start service Intent { - * act=com.zhidao.cosupload.service.UPLOAD_ACTION cmp=com.mogo.launcher.f/com.zhidao.cosupload.service.UploadService }: app is in background uid UidRecord{6443b7b u0a404 LAST bg:+1m15s362ms idle change:idle procs:1 seq(0,0,0)} - */ - @Insert(mayCreateSuper = true) - @TargetClass("android.content.Context", scope = LEAF) - @TargetMethod(methodName = "startService") - fun fixStartServiceCrash(intent: Intent): ComponentName? { - return try { - Origin.call() as ComponentName? - } catch (t: Throwable) { - t.printStackTrace() - null + + companion object { + + /** + * 修正Android8.0及之后,后台启动Service引起的崩溃 + * java.lang.IllegalStateException: Not allowed to start service Intent { + * act=com.zhidao.cosupload.service.UPLOAD_ACTION cmp=com.mogo.launcher.f/com.zhidao.cosupload.service.UploadService }: app is in background uid UidRecord{6443b7b u0a404 LAST bg:+1m15s362ms idle change:idle procs:1 seq(0,0,0)} + */ + @JvmStatic + @TargetClass("android.content.Context", scope = ALL) + @TargetMethod(methodName = "startService") + @ReplaceInvoke + fun fixStartServiceCrash(context: Context, intent: Intent): ComponentName? { + return try { + context.startService(intent) + } catch (t: Throwable) { + t.printStackTrace() + null + } } } + /** * https://console.volcengine.com/apmplus/app/crash/detail/java/bb387ccd9c1a3c6ad2ede4e6f501a5e7?aid=302368&date=%7B%22granularity%22%3A%221h%22%2C%22duration%22%3A%22recently%22%2C%22range%22%3A%221w%22%7D&filters=%7B%22type%22%3A%22and%22%2C%22sub_conditions%22%3A%5B%7B%22dimension%22%3A%22os%22%2C%22op%22%3A%22in%22%2C%22type%22%3A%22expression%22%2C%22values%22%3A%5B%22Android%22%5D%7D%5D%7D&org_id=2100068151&os=Android&page_number=6&status=%5B%22pending%22%2C%22processing%22%2C%22solved%22%2C%22reopen%22%5D * java.lang.IllegalArgumentException: Invalid audio buffer size. diff --git a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt index 58d9d51187..b1b49757f4 100644 --- a/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt +++ b/app/src/main/java/com/mogo/launcher/startup/ConfigStartUp.kt @@ -12,10 +12,12 @@ import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.launcher.BuildConfig import com.mogo.launcher.R import com.mogo.test.crashreport.CrashReportConstants +import com.shuyu.gsyvideoplayer.player.IjkPlayerManager 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 +import tv.danmaku.ijk.media.player.IjkMediaPlayer object ConfigStartUp { @@ -27,6 +29,9 @@ object ConfigStartUp { } private fun initBuildConfig() { + //ijk关闭log + IjkPlayerManager.setLogLevel(IjkMediaPlayer.IJK_LOG_SILENT); + // 初始化构建APP的时候的分支及提交HASH,用于辅助定位问题 AppConfigInfo.workingBranchName = BuildConfig.WORKING_BRANCH_NAME AppConfigInfo.workingBranchHash = BuildConfig.WORKING_BRANCH_HASH diff --git a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ObuTest.java b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ObuTest.java index 8a43063ab6..6f470a39a4 100644 --- a/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ObuTest.java +++ b/app_ipc_monitoring/src/main/java/com/zhidao/adas/client/ObuTest.java @@ -13,6 +13,7 @@ import com.mogo.support.obu.model.MogoObuRsiWarningData; import com.mogo.support.obu.model.MogoObuRsmWarningData; import com.mogo.support.obu.model.MogoObuRvWarningData; import com.mogo.support.obu.model.MogoObuSpatWarningData; +import com.mogo.support.obu.model.MogoObuSystemStatusData; import com.mogo.support.obu.model.advance.AccFourAxes; import com.mogo.support.obu.model.advance.DateTime; import com.mogo.support.obu.model.advance.NodeId; @@ -293,6 +294,11 @@ public class ObuTest { } + @Override + public void onObuSystemStatus(MogoObuSystemStatusData data) { + + } + @Override public void onGnssInfo(MessagePad.GnssInfo gnssInfo) { Log.i("ddddd", "onGnssInfo=\n" + TextFormat.printer().escapingNonAscii(false).printToString(gnssInfo)); diff --git a/config.gradle b/config.gradle index c0e098760b..dc2bd1e3d3 100644 --- a/config.gradle +++ b/config.gradle @@ -93,7 +93,7 @@ ext { // obu sdk obusdk : "com.zhidao.enterprise.smartv2x:smartv2x:1.0.0.3", - mogoobu : 'com.mogo.support.obu:mogo-obu:1.1.0_beta3', + mogoobu : 'com.mogo.support.obu:mogo-obu:1.1.0_beta4', // google googlezxing : "com.google.zxing:core:3.3.3", @@ -132,8 +132,8 @@ ext { crashreport : "com.mogo.test:crashreport:${CRASHREPORT_VERSION}", crashreportapmbyte : "com.mogo.test:crashreport-apmbyte:${CRASHREPORT_APMBYTE_VERSION}", crashreportnoop : "com.mogo.test:crashreport-noop:${CRASHREPORT_NOOP_VERSION}", - apm_insight : 'com.volcengine:apm_insight:1.4.9.cn-rc.5', - apm_insight_crash : 'com.volcengine:apm_insight_crash:1.4.6-rc.14', + apm_insight : 'com.volcengine:apm_insight:1.4.10.cn-rc.0', + apm_insight_crash : 'com.volcengine:apm_insight_crash:1.4.6-rc.17', cicle_indicator : 'me.relex:circleindicator:2.1.6', //========================= TTS语音 Maven 版本管理 ========================= diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt index 85b14a2962..bc791705a3 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/autopilot/adapter/MoGoAdasListenerImpl.kt @@ -626,6 +626,9 @@ class MoGoAdasListenerImpl : OnAdasListener { header: MessagePad.Header?, bagManager: BagManagerOuterClass.BagManager? ) { + bagManager?.let { + CallerAutopilotRecordListenerManager.invokeBagManagerResult(it) + } } /** diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt index 5f182177b6..ec4ff4a718 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/MogoPrivateObuNewManager.kt @@ -109,7 +109,6 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { override fun onCurrentVersion(version: MogoObuSystemBConfigData) { CallerLogger.d("$M_OBU${MogoObuConst.TAG_UPGRADE_OBU}", "onCurrentVersion version = ${version.version}") if (!version.version.isNullOrEmpty()) { - CallerObuInfoListenerManager.invokeObuVersionName(version.version) CallerDevaToolsManager.queryObuUpgrade(version.version) } } @@ -194,6 +193,15 @@ class MogoPrivateObuNewManager private constructor() : OnUpgradeListener { } } + /** + * OBU 系统状态 + * + * @param data 系统状态 + */ + override fun onObuSystemStatus(data: MogoObuSystemStatusData?) { + CallerObuInfoListenerManager.invokeGetObuInfo(data.toString()) + } + /** * HV车辆基础信息 gnssInfo */ diff --git a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/adapter/MoGoObuListenerImpl.kt b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/adapter/MoGoObuListenerImpl.kt index 17e01071e0..1f3e178188 100644 --- a/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/adapter/MoGoObuListenerImpl.kt +++ b/core/function-impl/mogo-core-function-datacenter/src/main/java/com/mogo/eagle/core/function/datacenter/obu/adapter/MoGoObuListenerImpl.kt @@ -31,6 +31,15 @@ object MoGoObuListenerImpl : OnObuListener { CallerObuConnectListenerManager.invokeObuConnectListener() } + /** + * OBU 系统状态 + * + * @param data 系统状态 + */ + override fun onObuSystemStatus(data: MogoObuSystemStatusData?) { + + } + /** * HV车辆基础信息 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index c80a8a75b9..15dffc48c2 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -16,6 +16,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.mogo.eagle.core.function.api.devatools.apm.* +import com.mogo.eagle.core.function.api.devatools.strict.* import com.mogo.eagle.core.function.call.map.* import com.mogo.eagle.core.function.api.devatools.download.* import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger @@ -37,6 +38,7 @@ import com.zhjt.mogo_core_function_devatools.report.IPCReportManager import com.zhjt.mogo_core_function_devatools.report.IPCReportManager.Companion.iPCReportManager import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager import com.zhjt.mogo_core_function_devatools.status.StatusManager +import com.zhjt.mogo_core_function_devatools.strict.* import com.zhjt.mogo_core_function_devatools.trace.TraceManager.Companion.traceManager import com.zhjt.mogo_core_function_devatools.tts.TtsManager.Companion.ttsManager import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.upgradeManager @@ -50,7 +52,9 @@ class DevaToolsProvider : IDevaToolsProvider { private var mContext: Context? = null - private val apmEnvProvider by lazy { ApmEnvProviderImpl } + private val apmEnvProvider by lazy { ApmEnvProviderImpl() } + + private val strictModeProvider by lazy { StrictModeProviderImpl() } @Volatile private var mDockerVersion: String? = null @@ -259,4 +263,5 @@ class DevaToolsProvider : IDevaToolsProvider { override fun upgradeProvider(): IMoGoUpgradeProvider? { return upgradeManager.upgradeProvider() } + override fun strict(): IStrictModeProvider = strictModeProvider } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt index 146ce9adc3..ddc8257335 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/apm/ApmEnvProviderImpl.kt @@ -17,9 +17,9 @@ import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicReference import kotlin.coroutines.* -object ApmEnvProviderImpl: IApmEnvProvider, CoroutineScope { +class ApmEnvProviderImpl: IApmEnvProvider, CoroutineScope { - private const val TAG = "ApmEnvProvider" + private val TAG = "ApmEnvProvider" private val scope by lazy { CoroutineScope(Dispatchers.IO + SupervisorJob()) } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/strict/StrictModeProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/strict/StrictModeProviderImpl.kt new file mode 100644 index 0000000000..b364363093 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/strict/StrictModeProviderImpl.kt @@ -0,0 +1,34 @@ +package com.zhjt.mogo_core_function_devatools.strict + +import android.os.* +import android.os.StrictMode.ThreadPolicy.Builder +import android.os.StrictMode.VmPolicy +import com.mogo.eagle.core.function.api.devatools.strict.* + +/** + * 严格模式功能管理 + * 1. 监测主线程磁盘读写 + * 2. 监测主线程网络请求 + * 3. 监测磁盘输入输出流使用异常(未及时关闭) + * 4. 监测数据库查询操作异常(cursor使用未关闭) + * 5. 监测资源类型不匹配(TypedValue) + * 6. 监测文件读写未使用Buffer(增加buffer可以减少系统调用,降低性能损耗) + */ +class StrictModeProviderImpl: IStrictModeProvider { + + + override fun enable() { + StrictMode.setThreadPolicy( + Builder() + .detectAll() + .penaltyLog() + .penaltyDropBox() + .build()) + StrictMode.setVmPolicy( + VmPolicy.Builder() + .detectAll() + .penaltyLog() + .penaltyDropBox() + .build()) + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt index ed9d95f62a..cd9de1e054 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/setting/DebugSettingView.kt @@ -7,6 +7,7 @@ import android.content.ClipboardManager import android.content.Context import android.graphics.Color import android.os.Build +import android.os.Process import android.text.Html import android.util.AttributeSet import android.util.Log @@ -64,9 +65,7 @@ import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.logcatch.ILogViewListener import com.mogo.eagle.core.function.hmi.ui.logcatch.LogInfoView import com.mogo.eagle.core.function.hmi.ui.widget.DemoModeView -import com.mogo.eagle.core.utilcode.kotlin.currentPadding -import com.mogo.eagle.core.utilcode.kotlin.lifecycleOwner -import com.mogo.eagle.core.utilcode.kotlin.onClick +import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.LogLevel @@ -81,7 +80,7 @@ import com.mogo.map.uicontroller.VisualAngleMode.* import kotlinx.android.synthetic.main.view_debug_setting.view.* import kotlinx.android.synthetic.main.view_debug_setting.view.tbRouteDynamicEffect import kotlinx.android.synthetic.main.view_sop_setting.view.* -import kotlinx.coroutines.launch +import kotlinx.coroutines.* import mogo.telematics.pad.MessagePad import mogo_msg.MogoReportMsg import java.text.SimpleDateFormat @@ -152,8 +151,7 @@ internal class DebugSettingView @JvmOverloads constructor( //OBU连接状态 private var obuConnectStatus: Boolean = false - private var mObuVersionName: String = "" - private var mObuDeviceId: String = "" + private var mObuInfoStr: String = "" //渠道包标签 private var onlineSelected: Boolean = true @@ -575,7 +573,7 @@ internal class DebugSettingView @JvmOverloads constructor( setLogCheckedChangeListener() //OBU配置信息 - tvObuInfo.text = CallerObuConnectListenerManager.getObuStatusInfoJsonString() +// tvObuInfo.text = CallerObuConnectListenerManager.getObuStatusInfoJsonString() //工控机配置信息 tvAutopilotInfo.text = @@ -633,6 +631,18 @@ internal class DebugSettingView @JvmOverloads constructor( tbIsDemoMode.visibility = View.GONE } + tbIsStrictMode?.also { + it.isChecked = SharedPrefs.getInstance(Utils.getApp()).getBoolean("MOGO_STRICT_MODE_ENABLED", false) + it.setOnCheckedChangeListener { _, isChecked -> + SharedPrefs.getInstance(Utils.getApp()).putBoolean("MOGO_STRICT_MODE_ENABLED", isChecked) + scope.launch { + ToastUtils.showShort("配置生效, 2秒后重启应用...") + delay(2000) + restartApp() + } + } + } + // 雨天模式,上一次勾选的数据 tbIsRainMode.isChecked = FunctionBuildConfig.isRainMode //雨天模式 @@ -1538,7 +1548,6 @@ internal class DebugSettingView @JvmOverloads constructor( }" ) - tvServerSocketStatus.text = Html.fromHtml( "服务器Socket状态:${ if (MogoStatusManager.getInstance().isSocketOnLine) { @@ -1643,15 +1652,12 @@ internal class DebugSettingView @JvmOverloads constructor( mRouteInfoSize = 0 if (FunctionBuildConfig.isDemoMode) { - tbIsDemoMode.text = "关闭美化模式" + tbIsDemoMode?.text = "关闭美化模式" } else { - tbIsDemoMode.text = "开启美化模式" + tbIsDemoMode?.text = "开启美化模式" } - - //obu TODO 后面会添加很多os那边需要显示的内容 - obuVersionNameTv.text = Html.fromHtml( - "OBU版本号:$mObuVersionName" - ) + //obu信息,排查obu相关问题使用 + tvObuInfoContent.text = mObuInfoStr obuConnectStatusTv.text = Html.fromHtml( "OBU连接状态:${ @@ -1670,7 +1676,7 @@ internal class DebugSettingView @JvmOverloads constructor( */ override fun onConnectStatus(obuStatusInfo: ObuStatusInfo) { lifecycleOwner.lifecycleScope.launch { - tvObuInfo.text = GsonUtils.toJson(obuStatusInfo) +// tvObuInfo.text = GsonUtils.toJson(obuStatusInfo) AppConfigInfo.obuSdkVersion = obuStatusInfo.obuSdkVersion AppConfigInfo.isConnectObu = obuStatusInfo.obuStatus @@ -2052,6 +2058,11 @@ internal class DebugSettingView @JvmOverloads constructor( } } + private fun restartApp() { + Utils.getApp().startActivity(Utils.getApp().packageManager.getLaunchIntentForPackage(Utils.getApp().packageName)) + Process.killProcess(Process.myPid()) + } + override fun fwThreadClose() { refreshTraceInfo() } @@ -2061,12 +2072,7 @@ internal class DebugSettingView @JvmOverloads constructor( setLogCheckedChangeListener() } - override fun onGetObuVersionName(obuVersionName: String) { - mObuVersionName = obuVersionName + override fun onGetObuInfo(obuInfoStr: String) { + mObuInfoStr = obuInfoStr } - - override fun onObuDeviceId(obuDeviceId: String) { - mObuDeviceId = obuDeviceId - } - } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml index 0ab7cf9f74..fbd4be94fa 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml +++ b/core/function-impl/mogo-core-function-hmi/src/main/res/layout/view_debug_setting.xml @@ -229,6 +229,18 @@ android:layout_height="1dp" android:background="#F0F0F0" /> + + - + + + + + + + + + + - - - - - - - - - + + + + + diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackManager.java b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackManager.java index cd011c9c6d..363bae8ae8 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackManager.java +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/business/identify/TrackManager.java @@ -125,7 +125,7 @@ public class TrackManager { cellIdCaches.forcePut(uuid, trackObj.getCellIdPos()); mMarkersCaches.put(uuid, trackObj); trafficDataUuid.add(uuid); - Log.i("costTime","" + (System.currentTimeMillis() - cost)); + //Log.i("costTime","" + (System.currentTimeMillis() - cost)); } return mFilterTrafficData; } diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/obu/IMoGoObuInfoListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/obu/IMoGoObuInfoListener.kt index 82703fba36..f4c9d0dcfd 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/obu/IMoGoObuInfoListener.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/datacenter/obu/IMoGoObuInfoListener.kt @@ -9,14 +9,8 @@ package com.mogo.eagle.core.function.api.datacenter.obu interface IMoGoObuInfoListener { /** - * @param obuVersionName OBU硬件版本 + * @param obuInfoStr OBU信息 */ - fun onGetObuVersionName(obuVersionName: String) - - /** - * obuDeviceId - */ - fun onObuDeviceId(obuDeviceId: String) - + fun onGetObuInfo(obuInfoStr: String) } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt index f303d8f8ab..0c1ea710e4 100644 --- a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IDevaToolsProvider.kt @@ -12,6 +12,7 @@ import com.mogo.eagle.core.data.deva.scene.SceneModule 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.apm.* +import com.mogo.eagle.core.function.api.devatools.strict.* import com.mogo.eagle.core.function.api.devatools.download.* import com.mogo.eagle.core.function.api.upgrade.* @@ -202,4 +203,6 @@ interface IDevaToolsProvider : IProvider { * 升级相关状态查询 */ fun upgradeProvider(): IMoGoUpgradeProvider? + + fun strict(): IStrictModeProvider } \ No newline at end of file diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/strict/IStrictModeProvider.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/strict/IStrictModeProvider.kt new file mode 100644 index 0000000000..e8477a4fa0 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/strict/IStrictModeProvider.kt @@ -0,0 +1,10 @@ +package com.mogo.eagle.core.function.api.devatools.strict + + +/** + * 系统严格模式功能封装 + */ +interface IStrictModeProvider { + + fun enable() +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt index 2f6c51a71f..46b1be52b2 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsManager.kt @@ -16,6 +16,7 @@ import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider import com.mogo.eagle.core.function.api.devatools.apm.* import com.mogo.eagle.core.function.api.devatools.download.* import com.mogo.eagle.core.function.api.upgrade.* +import com.mogo.eagle.core.function.api.devatools.strict.* import com.mogo.eagle.core.function.call.base.CallerBase import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils @@ -252,4 +253,6 @@ object CallerDevaToolsManager { } fun upgradeProvider(): IMoGoUpgradeProvider? = devaToolsProviderApi?.upgradeProvider() + + fun strict(): IStrictModeProvider? = devaToolsProviderApi?.strict() } \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuInfoListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuInfoListenerManager.kt index de793b087d..b93cf4932e 100644 --- a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuInfoListenerManager.kt +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/obu/CallerObuInfoListenerManager.kt @@ -9,25 +9,12 @@ import com.mogo.eagle.core.function.call.base.CallerBase */ object CallerObuInfoListenerManager : CallerBase() { - fun invokeObuVersionName(obuVersionName: String) { + fun invokeGetObuInfo(obuInfoStr: String) { M_LISTENERS.forEach { val listener = it.value - listener.onGetObuVersionName(obuVersionName) + listener.onGetObuInfo(obuInfoStr) } } - fun invokeObuDeviceId(obuDeviceId: String) { - M_LISTENERS.forEach { - val listener = it.value - listener.onObuDeviceId(obuDeviceId) - } - } - -// fun invokeQueryContainersResponse(dockerList: List) { -// M_LISTENERS.forEach { -// val listener = it.value -// //TODO -// } -// } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index d146e90ef1..120056ec67 100644 --- a/gradle.properties +++ b/gradle.properties @@ -66,23 +66,23 @@ SERVICE_BIZ_VERSION=1.2.4 LOGLIB_VERSION=1.5.11 ######## MogoAiCloudSDK Version ######## # 网络请求LOGLIB_VERSION -MOGO_NETWORK_VERSION=1.4.5.7 +MOGO_NETWORK_VERSION=1.4.5.10 # 鉴权 -MOGO_PASSPORT_VERSION=1.4.5.7 +MOGO_PASSPORT_VERSION=1.4.5.10 # 常链接 -MOGO_SOCKET_VERSION=1.4.5.7 +MOGO_SOCKET_VERSION=1.4.5.10 # 数据采集 -MOGO_REALTIME_VERSION=1.4.5.7 +MOGO_REALTIME_VERSION=1.4.5.10 # 探路,道路事件发布,获取 -MOGO_TANLU_VERSION=1.4.5.7 +MOGO_TANLU_VERSION=1.4.5.10 # 直播推流 -MOGO_LIVE_VERSION=1.4.5.7 +MOGO_LIVE_VERSION=1.4.5.10 # 直播拉流 -MOGO_TRAFFICLIVE_VERSION=1.4.5.7 +MOGO_TRAFFICLIVE_VERSION=1.4.5.10 # 定位服务 -MOGO_LOCATION_VERSION=1.4.5.7 +MOGO_LOCATION_VERSION=1.4.5.10 # 远程通讯模块 -MOGO_TELEMATIC_VERSION=1.4.5.7 +MOGO_TELEMATIC_VERSION=1.4.5.10 ######## MogoAiCloudSDK Version ######## # 自研地图 MAP_SDK_VERSION=2.10.0.9 diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java index 81685eb25c..4c50c5f902 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java +++ b/libraries/mogo-map/src/main/java/com/mogo/map/AMapViewWrapper.java @@ -43,6 +43,7 @@ import com.mogo.eagle.core.function.call.map.CallerMapStyleListenerManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant; import com.mogo.eagle.core.utilcode.mogo.toast.TipToast; +import com.mogo.eagle.core.utilcode.util.ThreadUtils; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.hdcache.IHdCacheListener; import com.mogo.map.listener.MogoMapListenerHandler; @@ -168,17 +169,19 @@ public class AMapViewWrapper implements IMogoMapView, return; } MapAutoViewHelper options = mMapView.getMapAutoViewHelper(); - if (options != null) { - //设置手势是否可以缩放 isCanZoom true 可缩放 false 不可缩放 - options.setZoomGesturesEnabled(true); - options.setScaleVRMode(true); + ThreadUtils.getIoPool().submit(() -> { + if (options != null) { + //设置手势是否可以缩放 isCanZoom true 可缩放 false 不可缩放 + options.setZoomGesturesEnabled(true); + options.setScaleVRMode(true); // options.setAllGesturesEnabled(false); //禁止全部手势 - if (options.getMyLocationStyle() != null) { - options.getMyLocationStyle().setDisplayAnimEnable(true); + if (options.getMyLocationStyle() != null) { + options.getMyLocationStyle().setDisplayAnimEnable(true); + } + //修改自车模型,未来需区分车的类型 + options.setMyLocationStyle(options.getMyLocationStyle().myLocationIcon(HdMapBuildConfig.currentCarVrIconRes, true)); } - //修改自车模型,未来需区分车的类型 - options.setMyLocationStyle(options.getMyLocationStyle().myLocationIcon(HdMapBuildConfig.currentCarVrIconRes, true)); - } + }); } private void initListeners() { diff --git a/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt b/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt index 6edc26bd3c..a9f26b224c 100644 --- a/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt +++ b/libraries/mogo-map/src/main/java/com/mogo/map/location/GDLocationClient.kt @@ -77,7 +77,7 @@ class GDLocationClient private constructor(context: Context) : AMapLocationListe lastGaoDeLocation.lastReceiveTime = TimeUtils.getNowMills() // 将高德中的一些用于业务的数据进行融合,例如:CityCode、address等 - mapLocation?.let { + aMapLocation.let { // 转换 GCJ02-->WGS84 坐标 val wgs84Location = CoordinateTransform.GCJ02ToWGS84(it.longitude, it.latitude) @@ -112,17 +112,17 @@ class GDLocationClient private constructor(context: Context) : AMapLocationListe lastGaoDeLocation.errorInfo = it.errorInfo } - // 回掉给监听者 - CallerGaoDeMapLocationListenerManager.invokeMoGoLocationChanged(lastGaoDeLocation) - - mapLocation = aMapLocation - // 本地SP缓存城市Code - val cityCode = aMapLocation.cityCode - if (cityCode != null && cityCode.isNotEmpty()) { - mCityCode = aMapLocation.cityCode - SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()) - .putString(SharedPrefsConstants.LOCATION_CITY_CODE, cityCode) + try { + mapLocation = aMapLocation + // 本地SP缓存城市Code + val cityCode = aMapLocation.cityCode + if (cityCode != null && cityCode.isNotEmpty()) { + mCityCode = aMapLocation.cityCode + SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()) + .putString(SharedPrefsConstants.LOCATION_CITY_CODE, cityCode) + } + // 缓存经纬度 SharedPrefsMgr.getInstance(AbsMogoApplication.getApp()) .putString( SharedPrefsConstants.LOCATION_LATITUDE, @@ -133,7 +133,11 @@ class GDLocationClient private constructor(context: Context) : AMapLocationListe SharedPrefsConstants.LOCATION_LONGITUDE, aMapLocation.longitude.toString() ) + } catch (e: Exception) { + e.printStackTrace() } + // 回掉给监听者 + CallerGaoDeMapLocationListenerManager.invokeMoGoLocationChanged(lastGaoDeLocation) } } diff --git a/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/OnObuListener.java b/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/OnObuListener.java index cfb3cc76e1..d7401f7a7d 100644 --- a/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/OnObuListener.java +++ b/libraries/mogo-obu/src/main/java/com/zhidao/support/obu/OnObuListener.java @@ -2,6 +2,7 @@ package com.zhidao.support.obu; import com.mogo.support.obu.ObuScene; import com.mogo.support.obu.constants.Define; +import com.mogo.support.obu.model.MogoObuSystemStatusData; import mogo.telematics.pad.MessagePad; @@ -15,6 +16,12 @@ public interface OnObuListener { */ void onConnectStatus(@Define.ConnectStatus int connectStatus); + /** + * OBU 系统状态 + * + * @param data 系统状态 + */ + void onObuSystemStatus(MogoObuSystemStatusData data); /** * HV车辆基础信息 diff --git a/settings.gradle b/settings.gradle index 9546a88821..c634b880ff 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,7 +1,7 @@ rootProject.name = 'MoGoEagleEye' include ':app' -include ':app_ipc_monitoring' -include ':app_mogo_magic_ring' +//include ':app_ipc_monitoring' +//include ':app_mogo_magic_ring' // 核心模块 diff --git a/test/crashreport-apmbyte/build.gradle b/test/crashreport-apmbyte/build.gradle index eeab9e0aa8..65f85c0980 100644 --- a/test/crashreport-apmbyte/build.gradle +++ b/test/crashreport-apmbyte/build.gradle @@ -39,6 +39,10 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } } dependencies { diff --git a/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java b/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java index 30588f1161..0f953a63cf 100644 --- a/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java +++ b/test/crashreport-apmbyte/src/main/java/com/mogo/test/crashreport/apm/ApmCrashReportProvider.java @@ -3,8 +3,6 @@ package com.mogo.test.crashreport.apm; import android.content.Context; import com.alibaba.android.arouter.facade.annotation.Route; -import com.apm.insight.AttachUserData; -import com.apm.insight.CrashType; import com.apm.insight.MonitorCrash; import com.apm.insight.log.VLog; import com.bytedance.apm.insight.ApmInsight; @@ -12,8 +10,9 @@ import com.bytedance.apm.insight.ApmInsightAgent; import com.bytedance.apm.insight.ApmInsightInitConfig; import com.mogo.commons.constants.SharedPrefsConstants; import com.mogo.commons.debug.DebugConfig; -import com.mogo.eagle.core.data.deva.bindingcar.CarInfo; +import com.mogo.eagle.core.data.app.AppConfigInfo; import com.mogo.eagle.core.data.config.FunctionBuildConfig; +import com.mogo.eagle.core.data.deva.bindingcar.CarInfo; import com.mogo.eagle.core.function.api.devatools.apm.IApmEnvProvider; import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager; import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils; @@ -22,11 +21,11 @@ import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr; import com.mogo.eagle.core.utilcode.util.CommonUtils; import com.mogo.eagle.core.utilcode.util.DeviceUtils; import com.mogo.eagle.core.utilcode.util.GsonUtils; +import com.mogo.eagle.core.utilcode.util.MetaDataUtils; import com.mogo.test.crashreport.CrashReportConstants; import com.mogo.test.crashreport.ITestCrashReportProvider; import java.util.HashMap; -import java.util.Map; /** @@ -38,7 +37,9 @@ import java.util.Map; @Route(path = CrashReportConstants.PATH) public class ApmCrashReportProvider implements ITestCrashReportProvider { private static final String BYTEAMP_APPID = "302368"; + private static final String BYTEAMP_AppToken = "de428a1a8b204c82ac60088aaf9205a3"; private static final String BYTEAMP_APPID_DEV = "379950"; + private static final String BYTEAMP_AppToken_DEV = "3a78191bc18842118c5b4515ec9bfefc"; private static final String TAG = "ApmCrashReportProvider"; private static final String MAP_SDK_VERSION = "MAP_SDK_VERSION"; @@ -49,11 +50,6 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider { @Override public void init(Context context) { - initCrash(context); - initApmInsight(context); - } - - private void initCrash(final Context context) { IApmEnvProvider provider = CallerDevaToolsManager.INSTANCE.apmEnvProvider(); boolean isDebug = DebugConfig.isDebug(); if (provider != null) { @@ -62,85 +58,167 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider { isDebug = enabled; } } - MonitorCrash crash = MonitorCrash.init(context, isDebug ? BYTEAMP_APPID_DEV : BYTEAMP_APPID, CommonUtils.getVersionCode(context), CommonUtils.getVersionName(context)) - .setCustomDataCallback(new AttachUserData() { - @Override - public Map getUserData(CrashType type) { - HashMap map = new HashMap<>(); - //车辆信息 - String carInfoString = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.CAR_INFO); + initCrash(context, isDebug); + initApmInsight(context, isDebug); + } - if (carInfoString != null && !carInfoString.isEmpty()) { - mInfo = GsonUtils.fromJson(carInfoString, CarInfo.class); - } + private void initCrash(final Context context, boolean isDebug) { + MonitorCrash.Config config = + MonitorCrash.Config + .app(isDebug ? BYTEAMP_APPID_DEV : BYTEAMP_APPID) + .token(isDebug ? BYTEAMP_AppToken_DEV : BYTEAMP_AppToken)// 设置鉴权token,可从平台应用信息处获取,token错误无法上报数据 + .versionCode(CommonUtils.getVersionCode(context))// 可选,默认取PackageInfo中的versionCode + .versionName(CommonUtils.getVersionName(context))// 可选,默认取PackageInfo中的versionName + .channel(MetaDataUtils.getMetaDataInApp("BUGLY_APP_CHANNEL"))// 可选,设置App发布渠道,在平台可以筛选 + // .url("www.xxx.com")// 默认不需要,私有化部署才配置上报地址 + //可选,可以设置自定义 did,不设置会使用内部默认的 + .dynamicParams(new MonitorCrash.Config.IDynamicParams() { + @Override + public String getDid() {//返回空会使用内部默认的did + String sn = SharedPrefsMgr.getInstance(context).getString("sn"); + if (sn != null && !sn.isEmpty()) { + return sn; + } else { + return DeviceUtils.getDeviceSN().isEmpty() ? null : DeviceUtils.getDeviceSN(); + } + } - //车辆所在位置 - mCityCode = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.LOCATION_CITY_CODE); - mLat = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.LOCATION_LATITUDE); - mLogt = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.LOCATION_LONGITUDE); - //地图版本 - String mapSDKVersion = DebugConfig.getMapVersion(); - map.put("MAP_SDK_VERSION", mapSDKVersion); - map.put("CITYCODE", mCityCode); - map.put("LATITUDE", mLat); - map.put("LONGITUTE", mLogt); + @Override + public String getUserId() { + return DeviceUtils.getDeviceSN(); + } + }) + //应用崩溃后会执行这里,可选,添加业务自定义数据,在崩溃详情页->现场数据展示->自定义数据 + .customData(crashType -> { + //车辆所在位置 + mCityCode = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.LOCATION_CITY_CODE); + mLat = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.LOCATION_LATITUDE); + mLogt = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.LOCATION_LONGITUDE); + //车辆信息 + String carInfoString = SharedPrefsMgr.getInstance(context).getString(SharedPrefsConstants.CAR_INFO); + if (carInfoString != null && !carInfoString.isEmpty()) { + mInfo = GsonUtils.fromJson(carInfoString, CarInfo.class); + } - if (mInfo != null) { - CallerLogger.INSTANCE.d(TAG, "nuber = " + mInfo.getNumber_plate() + "--brand = " + mInfo.getBrand() + "--modle = " + mInfo.getModel()); - map.put("PLATE_NUMBER", mInfo.getNumber_plate()); - map.put("BRAND", mInfo.getBrand()); - map.put("MODEL", mInfo.getModel()); - } - return map; - } - }); - String mapSDKVersion = DebugConfig.getMapVersion(); - crash.config().setChannel("MAP_SDK_VERSION:" + mapSDKVersion); - //可选,可以设置自定义did,不设置会使用内部默认的 - String sn = SharedPrefsMgr.getInstance(context).getString("sn"); - if (sn != null && !sn.isEmpty()) { - crash.config().setDeviceId(sn); - } else { - crash.config().setDeviceId(DeviceUtils.getDeviceSN()); - } - crash.addTags(MAP_SDK_VERSION, mapSDKVersion); - crash.addTags("CITYCODE", mCityCode); - crash.addTags("LATITUDE", mLat); - crash.addTags("LONGITUTE", mLogt); - crash.addTags("CAR_TYPE", AppIdentityModeUtils.INSTANCE.getBuildCarType(FunctionBuildConfig.appIdentityMode)); + //======================================== 自定义维度值 begin======================================== + HashMap dimension = new HashMap<>(); + // dimension.put("Devices_SN_DeviceId", sn + "__" + DeviceUtils.getDeviceSN()); + // dimension.put("Devices_SN_WidevineID_MD5", sn + "__" + DeviceIdUtils.getWidevineIDWithMd5(context)); + // dimension.put("Devices_SN_WidevineID", sn + "__" + DeviceIdUtils.getWidevineID(context)); + //************************************* APP构建的信息 *********************************************** + // Git版本信息 + dimension.put("GIT_BRANCH", AppConfigInfo.INSTANCE.getWorkingBranchName()); + dimension.put("GIT_HASH", AppConfigInfo.INSTANCE.getWorkingBranchHash()); + // 地图版本 + dimension.put("APP_MAP_SDK_VERSION", DebugConfig.getMapVersion()); + // 渠道信息 + dimension.put("APP_CHANNEL", MetaDataUtils.getMetaDataInApp("BUGLY_APP_CHANNEL")); + // 车辆类型 + dimension.put("APP_CAR_TYPE", AppIdentityModeUtils.INSTANCE.getBuildCarType(FunctionBuildConfig.appIdentityMode)); + //************************************* APP构建的信息 *********************************************** -// crash.setReportUrl("www.xxx.com"); // 私有化部署:私有化部署才配置上报地址 -// crash.addTags("key", "value"); // 自定义筛选tag, 按需添加、可多次覆盖 + //************************************* 与车辆连接的 IPC(工控机)、OBU 等信息 *********************************************** + // 连接的OBU 状态 + dimension.put("OBU_CONNECT_STATUS", "" + AppConfigInfo.INSTANCE.isConnectObu()); + // 车牌号,从工控机获取的数据 + dimension.put("IPC_PLATE_NUMBER", AppConfigInfo.INSTANCE.getPlateNumber()); + // 连接的工控机 状态 + dimension.put("IPC_CONNECT_STATUS", "" + AppConfigInfo.INSTANCE.isConnectAutopilot()); + // 连接的工控机 MAC地址 + dimension.put("IPC_MAC", AppConfigInfo.INSTANCE.getIPCMacAddress()); + // 连接的工控机 Docker版本 + dimension.put("IPC_MAP_VERSION", AppConfigInfo.INSTANCE.getDockerVersion()); + // 连接的工控机 Protocol版本 + dimension.put("IPC_MAP_PROTOCOL_VERSION", "" + AppConfigInfo.INSTANCE.getProtocolVersionNumber()); + //************************************* 与车辆连接的 IPC(工控机)、OBU 等信息 *********************************************** - HashMap dimension = new HashMap<>(); - //维度值 - dimension.put("Devices_SN_DeviceId", sn + "__" + DeviceUtils.getDeviceSN()); -// dimension.put("Devices_SN_WidevineID_MD5", sn + "__" + DeviceIdUtils.getWidevineIDWithMd5(context)); -// dimension.put("Devices_SN_WidevineID", sn + "__" + DeviceIdUtils.getWidevineID(context)); - dimension.put(MAP_SDK_VERSION, mapSDKVersion); - dimension.put("CITYCODE", mCityCode); - dimension.put("LATITUDE", mLat); - dimension.put("LONGITUTE", mLogt); - if (mInfo != null) { - dimension.put("PLATE_NUMBER", mInfo.getNumber_plate()); - dimension.put("BRAND", mInfo.getBrand()); - dimension.put("MODEL", mInfo.getModel()); - } + //************************************* 位置信息 *********************************************** + // 城市信息 + dimension.put("LOCATION_CITY_CODE", mCityCode); + dimension.put("LOCATION_LATITUDE", mLat); + dimension.put("LOCATION_LONGITUTE", mLogt); + //************************************* 位置信息 *********************************************** - HashMap metric = new HashMap<>(); - //指标值 - //metric.put("Devices_ID_metric", (double) 100); - ApmInsightAgent.monitorEvent("Devices_ID_EVENT", dimension, metric); + //************************************* CMDB绑定的信息 *********************************************** + if (mInfo != null) { + dimension.put("CMDB_PLATE_NUMBER", mInfo.getNumber_plate()); + dimension.put("CMDB_BRAND", mInfo.getBrand()); + dimension.put("CMDB_MODEL", mInfo.getModel()); + } + //************************************* CMDB绑定的信息 *********************************************** + + HashMap metric = new HashMap<>(); + //指标值 + //metric.put("Devices_ID_metric", (double) 100); + ApmInsightAgent.monitorEvent("Devices_ID_EVENT", dimension, metric); + //======================================== 自定义维度值 end======================================== + + + //===================================== 自定义收集一些信息,在崩溃详情页->现场数据展示->自定义数据 begin======================================== + HashMap map = new HashMap<>(); + + //************************************* APP构建的信息 *********************************************** + // Git版本信息 + map.put("GIT_BRANCH", AppConfigInfo.INSTANCE.getWorkingBranchName()); + map.put("GIT_HASH", AppConfigInfo.INSTANCE.getWorkingBranchHash()); + // 地图版本 + map.put("APP_MAP_SDK_VERSION", DebugConfig.getMapVersion()); + // 渠道信息 + map.put("APP_CHANNEL", MetaDataUtils.getMetaDataInApp("BUGLY_APP_CHANNEL")); + // 车辆类型 + map.put("APP_CAR_TYPE", AppIdentityModeUtils.INSTANCE.getBuildCarType(FunctionBuildConfig.appIdentityMode)); + //************************************* APP构建的信息 *********************************************** + + //************************************* 与车辆连接的 IPC(工控机)、OBU 等信息 *********************************************** + // 连接的OBU 状态 + map.put("OBU_CONNECT_STATUS", "" + AppConfigInfo.INSTANCE.isConnectObu()); + // 车牌号,从工控机获取的数据 + map.put("IPC_PLATE_NUMBER", AppConfigInfo.INSTANCE.getPlateNumber()); + // 连接的工控机 状态 + map.put("IPC_CONNECT_STATUS", "" + AppConfigInfo.INSTANCE.isConnectAutopilot()); + // 连接的工控机 MAC地址 + map.put("IPC_MAC", AppConfigInfo.INSTANCE.getIPCMacAddress()); + // 连接的工控机 Docker版本 + map.put("IPC_MAP_VERSION", AppConfigInfo.INSTANCE.getDockerVersion()); + // 连接的工控机 Protocol版本 + map.put("IPC_MAP_PROTOCOL_VERSION", "" + AppConfigInfo.INSTANCE.getProtocolVersionNumber()); + //************************************* 与车辆连接的 IPC(工控机)、OBU 等信息 *********************************************** + + //************************************* 位置信息 *********************************************** + // 城市信息 + map.put("LOCATION_CITY_CODE", mCityCode); + map.put("LOCATION_LATITUDE", mLat); + map.put("LOCATION_LONGITUTE", mLogt); + //************************************* 位置信息 *********************************************** + + + //************************************* CMDB绑定的信息 *********************************************** + if (mInfo != null) { + CallerLogger.INSTANCE.d(TAG, "nuber = " + mInfo.getNumber_plate() + "--brand = " + mInfo.getBrand() + "--modle = " + mInfo.getModel()); + map.put("CMDB_PLATE_NUMBER", mInfo.getNumber_plate()); + map.put("CMDB_BRAND", mInfo.getBrand()); + map.put("CMDB_MODEL", mInfo.getModel()); + } + //************************************* CMDB绑定的信息 *********************************************** + + return map; + //===================================== 自定义收集一些信息,在崩溃详情页->现场数据展示->自定义数据 end======================================== + }) + // 可选,添加pv事件的自定义tag,可以用来筛选崩溃率计算的分母数据 + //.pageViewTags(<>>) + .build(); + MonitorCrash monitorCrash = MonitorCrash.init(context, config); } /** * ApmInsight性能监控初始化 */ - private void initApmInsight(Context context) { - + private void initApmInsight(Context context, boolean isDebug) { ApmInsightInitConfig.Builder builder = ApmInsightInitConfig.builder(); //设置分配的appid - builder.aid(BYTEAMP_APPID); + builder.aid(isDebug ? BYTEAMP_APPID_DEV : BYTEAMP_APPID); + //设置分配的AppToken + builder.token(isDebug ? BYTEAMP_AppToken_DEV : BYTEAMP_AppToken); //是否开启卡顿功能 builder.blockDetect(true); //是否开启严重卡顿功能 @@ -153,6 +231,12 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider { builder.memoryMonitor(true); //控制是否打开电量监控 builder.batteryMonitor(true); + //控制是否打开CPU监控 + builder.cpuMonitor(true); + //控制是否打开磁盘监控 + builder.diskMonitor(true); + //控制是否打开流量监控 + builder.trafficMonitor(true); //是否打印日志,注:线上release版本要配置为false builder.debugMode(true); //支持用户自定义user_id把平台数据和自己用户关联起来,可以不配置 @@ -160,7 +244,7 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider { //私有化部署:配置数据上报的域名 (私有化部署才需要配置,内部有默认域名),测试支持设置http://www.xxx.com 默认是https协议 // builder.defaultReportDomain("www.xxx.com"); //设置渠道。1.3.16版本增加接口 - builder.channel("local"); + builder.channel(MetaDataUtils.getMetaDataInApp("BUGLY_APP_CHANNEL")); //打开自定义日志回捞能力,1.4.1版本新增接口 builder.enableLogRecovery(true); //设置数据和Rangers Applog数据打通,设备标识did必填。1.3.16版本增加接口