[6.5.0]增加崩溃统计
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user