[6.5.0]增加崩溃统计

This commit is contained in:
xuxinchao
2024-07-22 19:17:25 +08:00
parent 1335fadb05
commit aaf523992f
2 changed files with 122 additions and 20 deletions

View File

@@ -1,8 +1,11 @@
package com.zhjt.mogo_core_function_devatools
//import com.mogo.eagle.core.function.api.devatools.apm.*
//import com.zhjt.mogo_core_function_devatools.apm.*
import android.app.Activity
import android.app.Application
import android.content.Context
import android.util.Log
import android.view.View
import android.view.ViewGroup
import com.alibaba.android.arouter.facade.annotation.Route
@@ -10,6 +13,7 @@ import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.EnvConfig
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.data.constants.MogoServicePaths
import com.mogo.eagle.core.data.deva.bindingcar.ModifyBindingcarInfo
import com.mogo.eagle.core.data.deva.chain.ChainConstant
@@ -19,17 +23,22 @@ 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.IDevaToolsProvider
//import com.mogo.eagle.core.function.api.devatools.apm.*
import com.mogo.eagle.core.function.api.devatools.block.*
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.devatools.logcat.*
import com.mogo.eagle.core.function.api.devatools.mofang.*
import com.mogo.eagle.core.function.api.devatools.block.IMoGoBlockProvider
import com.mogo.eagle.core.function.api.devatools.download.DownloadType
import com.mogo.eagle.core.function.api.devatools.logcat.IMoGoLogRecordProvider
import com.mogo.eagle.core.function.api.devatools.mofang.IMoGoMoFangProvider
import com.mogo.eagle.core.function.api.devatools.perf.IMoGoCpuUsageProvider
import com.mogo.eagle.core.function.api.lookaround.*
import com.mogo.eagle.core.function.api.devatools.strict.IStrictModeProvider
import com.mogo.eagle.core.function.api.lookaround.IMoGoLookAroundProvider
import com.mogo.eagle.core.function.api.map.route.IMapRouteProvider
import com.mogo.eagle.core.function.api.upgrade.IMoGoUpgradeProvider
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.w
import com.mogo.eagle.core.utilcode.util.AppStateManager
import com.mogo.eagle.core.utilcode.util.IAppStateListener
import com.mogo.weak.network.SdtManager
import com.tencent.matrix.Matrix
import com.tencent.matrix.iocanary.IOCanaryPlugin
import com.tencent.matrix.iocanary.config.IOConfig
@@ -39,26 +48,20 @@ import com.tencent.matrix.report.Issue
import com.tencent.matrix.trace.TracePlugin
import com.tencent.matrix.trace.config.SharePluginInfo
import com.tencent.matrix.trace.config.TraceConfig
//import com.zhjt.mogo_core_function_devatools.apm.*
import com.mogo.eagle.core.function.api.upgrade.*
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager
import com.mogo.eagle.core.utilcode.kotlin.lifeCycleScope
import com.mogo.eagle.core.utilcode.util.AppStateManager
import com.mogo.eagle.core.utilcode.util.IAppStateListener
import com.mogo.weak.network.SdtManager
import com.zhjt.mogo_core_function_devatools.adas.PowerOffManager
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
import com.zhjt.mogo_core_function_devatools.binding.*
import com.zhjt.mogo_core_function_devatools.block.*
import com.zhjt.mogo_core_function_devatools.binding.BindingCarManager
import com.zhjt.mogo_core_function_devatools.block.MoGoBlockProviderImpl
import com.zhjt.mogo_core_function_devatools.env.EnvChangeManager
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigImpl
import com.zhjt.mogo_core_function_devatools.logcat.*
import com.zhjt.mogo_core_function_devatools.logcat.CrashLogAnalyticsManager
import com.zhjt.mogo_core_function_devatools.logcat.MoGoLogRecordProviderImpl
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager
import com.zhjt.mogo_core_function_devatools.lookaround.*
import com.zhjt.mogo_core_function_devatools.lookaround.MoGoLookAroundProviderImpl
import com.zhjt.mogo_core_function_devatools.matrix.DynamicConfigImpl
import com.zhjt.mogo_core_function_devatools.mofang.*
import com.zhjt.mogo_core_function_devatools.mofang.MoGoMoFangProviderImpl
import com.zhjt.mogo_core_function_devatools.monitor.MonitorManager
import com.zhjt.mogo_core_function_devatools.monitor.db.MonitorDb
import com.zhjt.mogo_core_function_devatools.monitor.db.MonitorDb.Companion.getDb
@@ -69,7 +72,7 @@ import com.zhjt.mogo_core_function_devatools.status.StatusManager
import com.zhjt.mogo_core_function_devatools.status.entity.RouteDownloadStatus
import com.zhjt.mogo_core_function_devatools.status.entity.Status
import com.zhjt.mogo_core_function_devatools.status.ui.AutoPilotLaunchBeforeView
import com.zhjt.mogo_core_function_devatools.strict.*
import com.zhjt.mogo_core_function_devatools.strict.StrictModeProviderImpl
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
@@ -79,7 +82,11 @@ import com.zhjt.service.chain.ChainLog
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.io.BufferedReader
import java.io.File
import java.io.FileReader
import java.io.IOException
import java.lang.StringBuilder
import java.lang.ref.WeakReference
import java.util.concurrent.ConcurrentHashMap
@@ -234,6 +241,26 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener {
val crashDir = File(it.getExternalFilesDir(null), "crash")
if(crashDir.exists() && crashDir.canExecute() && crashDir.listFiles()?.isNotEmpty() == true){
it.lifeCycleScope.launch(Dispatchers.IO){
crashDir.listFiles()?.forEach {crash->
val file = File(crash.absolutePath)
try {
BufferedReader(FileReader(file)).use { reader ->
var line: String?
//读取读取文件内容并打印
while (reader.readLine().also { line = it } != null) {
line?.let { content->
if(content.contains("Crash type")){
CrashLogAnalyticsManager.crashLogAnalytics(content)
return@use
}
}
}
}
} catch (e: IOException) {
e.printStackTrace()
}
}
val startTime = crashDir.lastModified() - 60*1000
val endTime = if(System.currentTimeMillis() - crashDir.lastModified()>60*1000){
crashDir.lastModified() + 60*1000

View File

@@ -0,0 +1,75 @@
package com.zhjt.mogo_core_function_devatools.logcat
import com.mogo.commons.debug.DebugConfig
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.commons.utils.MogoAnalyticUtils
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
/**
* 崩溃埋点统计管理
*/
object CrashLogAnalyticsManager {
private const val crashLogRecord = "crash_log_record"
private const val crashCosPath = "crashCosPath" //崩溃日志所在文件COS桶地址
private const val crashType = "crashType" //崩溃类型Java、Native、ANR
private const val crashPlateNumber = "plateNumber" //车牌号
private const val crashCarSn = "carSn" //鹰眼SN
private const val crashMapVersion = "mapVersion" //工控机版本
private const val crashEyeVersion = "eyeVersion" //鹰眼版本
private const val crashAppFlavor = "appFlavor" //渠道信息
private const val crashBranchHash = "branchHash" //Git Hash
/**
* 崩溃统计
* @param cosPath 崩溃上传到COS桶的地址
* @param type 崩溃类型
* @param plateNumber 车牌号
* @param carSn SN
* @param mapVersion 域控版本
* @param eyeVersion 鹰眼版本
* @param appFlavor 鹰眼渠道信息
* @param branchHash Git Hash
*/
private fun realCrashLogAnalytics(cosPath: String,type: String,plateNumber: String,carSn: String,mapVersion: String,eyeVersion: String,
appFlavor: String,branchHash: String){
val crashLogParams = HashMap<String,Any>()
crashLogParams[crashCosPath] = cosPath
crashLogParams[crashType] = type
crashLogParams[crashPlateNumber] = plateNumber
crashLogParams[crashCarSn] = carSn
crashLogParams[crashMapVersion] = mapVersion
crashLogParams[crashEyeVersion] = eyeVersion
crashLogParams[crashAppFlavor] = appFlavor
crashLogParams[crashBranchHash] = branchHash
MogoAnalyticUtils.track(crashLogRecord,crashLogParams)
}
/**
* 崩溃统计
* @param crashType 崩溃类型
*/
fun crashLogAnalytics(crashType: String){
val crashCosPath = StringBuilder()
crashCosPath.append("CarPad/")
if(DebugConfig.isDebug()){
crashCosPath.append("debuglog/")
}else{
crashCosPath.append("eaglelog/")
}
crashCosPath.append(SharedPrefsMgr.getInstance().sn)
crashCosPath.append("/")
crashCosPath.append(millis2String(System.currentTimeMillis(), TimeUtils.getMdFormat()))
crashCosPath.append("/")
realCrashLogAnalytics(crashCosPath.toString(),crashType.replace("Crash type:","").trim(), AppConfigInfo.plateNumber,
SharedPrefsMgr.getInstance().sn,
CallerAutoPilotStatusListenerManager.getDockerVersion() ?: "",
AppUtils.getAppVersionName(),AppConfigInfo.flavor,AppConfigInfo.workingBranchHash)
}
}