diff --git a/app/build.gradle b/app/build.gradle index 776a1e90e1..0cdd1b7736 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -198,8 +198,6 @@ dependencies { compileOnly rootProject.ext.dependencies.google_auto_service - compileOnly rootProject.ext.dependencies.apm_insight - compileOnly rootProject.ext.dependencies.serialport } diff --git a/build.gradle b/build.gradle index 1a7cd2904b..1bd7d0f15e 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,6 @@ buildscript { classpath "com.bytedance.android.byteX:base-plugin:${plugin_version}" classpath "com.mogo.cloud:hook:${service_chain_version}" classpath "com.mogo.cloud:bizconfig:${plugin_version}" - classpath 'com.volcengine:apm_insight_plugin:1.4.2' classpath "com.mogo.thread.opt:plg:10.10.0" classpath "com.mogo.cloud:systrace:${plugin_version}" classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.18' diff --git a/config.gradle b/config.gradle index 20d0d5e738..a7817ebe15 100644 --- a/config.gradle +++ b/config.gradle @@ -133,8 +133,6 @@ 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.5.4.cn-rc.1', - apm_insight_crash : 'com.volcengine:apm_insight_crash:1.5.0', cicle_indicator : 'me.relex:circleindicator:2.1.6', //========================= TTS语音 Maven 版本管理 ========================= 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 c409066c18..42513c038a 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 @@ -39,6 +39,7 @@ 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 @@ -73,8 +74,10 @@ import com.zhjt.mogo_core_function_devatools.upgrade.UpgradeManager.Companion.up import com.zhjt.mogo_core_function_devatools.weaknetwork.DetectResultImpl import com.zhjt.mogo_core_function_devatools.weaknetwork.WeakNetworkStrategy import com.zhjt.service.chain.ChainLog +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import java.io.File import java.lang.ref.WeakReference import java.util.concurrent.ConcurrentHashMap @@ -217,6 +220,35 @@ class DevaToolsProvider : IDevaToolsProvider, IAppStateListener { } } + /** + * 检查上传崩溃日志 + */ + override fun checkUploadCrashLog() { + mContext?.let { + val crashDir = File(it.getExternalFilesDir(null), "crash") + if(crashDir.exists() && crashDir.canExecute() && crashDir.listFiles()?.isNotEmpty() == true){ + it.lifeCycleScope.launch(Dispatchers.IO){ + val startTime = crashDir.lastModified() - 60*1000 + val endTime = if(System.currentTimeMillis() - crashDir.lastModified()>60*1000){ + crashDir.lastModified() + 60*1000 + }else{ + System.currentTimeMillis() + } + var isUploadSuccess = false + try { + CallerDevaToolsManager.logcat()?.upload(startTime, endTime) + isUploadSuccess = true + } catch (t: Throwable) { + t.printStackTrace() + } + if(isUploadSuccess){ + crashDir.deleteRecursively() + } + } + } + } + } + private fun initMatrix() { val builder: Matrix.Builder = Matrix.Builder(AbsMogoApplication.getApp()) builder.pluginListener(object : PluginListener { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt index 09ba62e173..6075965d76 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/logcat/MoGoLogRecordProviderImpl.kt @@ -23,7 +23,6 @@ import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.function.api.devatools.logcat.* import com.mogo.eagle.core.utilcode.download.DownloadUtils import com.zhidao.loglib.bean.RemoteLogPushContent -import com.zhjt.mogo_core_function_devatools.BuildConfig import com.zhjt.mogo_core_function_devatools.logcat.checker.AnrLogChecker import com.zhjt.mogo_core_function_devatools.logcat.config.LogRecordConfig import com.zhjt.mogo_core_function_devatools.logcat.uploader.* @@ -130,18 +129,16 @@ internal class MoGoLogRecordProviderImpl: IMoGoLogRecordProvider, .systemTags("ActivityManager") .checker(AnrLogChecker()) } - if (BuildConfig.DEBUG) { - builder.crashConfig( - CrashConfig.Builder() - .enabled(true) - .crashDir(File(context.getExternalFilesDir(null), "crash")) - .expireDuration(TimeUnit.DAYS.toMillis(3)) - .javaCrash(true) - .nativeCrash(true) - .anr(true) - .build() - ) - } + builder.crashConfig( + CrashConfig.Builder() + .enabled(true) + .crashDir(File(context.getExternalFilesDir(null), "crash")) + .expireDuration(TimeUnit.DAYS.toMillis(3)) + .javaCrash(true) + .nativeCrash(true) + .anr(true) + .build() + ) builder.extraFilesToUpload(object : IExtraFileToUpload { override fun filesToUpload(): List { return ArrayList().also { diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt index 7f62b9b2e0..8eb8f56460 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/main/MainActivity.kt @@ -212,6 +212,7 @@ open class MainActivity : MvpActivity(), MainView, startLeakMonitor() } CallerDevaToolsManager.checkMonitorDb() + CallerDevaToolsManager.checkUploadCrashLog() } private fun startLeakMonitor() { 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 f06737299e..ee0d94454e 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 @@ -34,6 +34,11 @@ interface IDevaToolsProvider : IProvider { fun checkMonitorDb() + /** + * 检查上传崩溃日志 + */ + fun checkUploadCrashLog() + /** * 开始抓取日志,默认10min */ 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 65228efb99..b56a674e19 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 @@ -42,6 +42,13 @@ object CallerDevaToolsManager { devaToolsProviderApi?.checkMonitorDb() } + /** + * 检查上传崩溃日志 + */ + fun checkUploadCrashLog(){ + devaToolsProviderApi?.checkUploadCrashLog() + } + /** * 开始抓取全量日志 */ diff --git a/core/mogo-core-utils/build.gradle b/core/mogo-core-utils/build.gradle index 599edaa095..d8941ad776 100644 --- a/core/mogo-core-utils/build.gradle +++ b/core/mogo-core-utils/build.gradle @@ -66,8 +66,6 @@ dependencies { implementation rootProject.ext.dependencies.material implementation rootProject.ext.dependencies.guava - compileOnly rootProject.ext.dependencies.apm_insight - implementation rootProject.ext.dependencies.gson implementation rootProject.ext.dependencies.glideanno implementation rootProject.ext.dependencies.glideokhttp3 diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/VLogUtils.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/VLogUtils.kt index f62972031e..123a4f76e6 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/VLogUtils.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/util/VLogUtils.kt @@ -3,7 +3,6 @@ package com.mogo.eagle.core.utilcode.util import android.os.Handler import android.os.HandlerThread import android.util.Log -import com.apm.insight.log.VLog import com.mogo.eagle.core.utilcode.mogo.logger.Logger class VLogUtils { diff --git a/gradle/bytex/bytex.gradle b/gradle/bytex/bytex.gradle index daa366db18..66bbfe39b5 100644 --- a/gradle/bytex/bytex.gradle +++ b/gradle/bytex/bytex.gradle @@ -14,7 +14,6 @@ if (!isAndroidTest) { apply from: rootProject.file('gradle/bytex/bytex_sticky_service.gradle') apply from: rootProject.file('gradle/bytex/bytex_thread_opt.gradle') apply from: rootProject.file('gradle/bytex/bytex_lancetx.gradle') - apply from: rootProject.file('gradle/bytex/bytex_apm.gradle') apply from: rootProject.file('gradle/bytex/bytex_systrace.gradle') apply from: rootProject.file('gradle/bytex/bytex_matrix.gradle') apply from: rootProject.file('gradle/bytex/bytex_handler_proxy.gradle') diff --git a/gradle/bytex/bytex_apm.gradle b/gradle/bytex/bytex_apm.gradle deleted file mode 100644 index 131229ec63..0000000000 --- a/gradle/bytex/bytex_apm.gradle +++ /dev/null @@ -1,24 +0,0 @@ -apply plugin: 'apm-plugin' -ApmPlugin { - // 是否进行插桩 - enable true - // 是否在Debug包插桩,默认不插桩 - enableInDebug true - // DEBUG("DEBUG"), INFO("INFO"), WARN("WARN"), ERROR("ERROR"); - // INFO 级别Log会汇总所有被插桩处理的类供查看,路径 app/build/ByteX/ApmPlugin - logLevel "DEBUG" - // 启动分析开关:监控App启动耗时,需要同时开启pageLoadSwitch - startSwitch = true - // 页面响应开关:监控Activity的生命周期耗时 - pageLoadSwitch = true - // 网络监控开关:监控okhttp3的网络请求 - okHttp3Switch = false - // 白名单下的包进行插桩,需要填写要插装类所在的包名,支持前缀配置 - whiteList = [ - "com.mogo" - ] - // 黑名单包下类不进行插桩,可以配置包名和类名,没有可以填空 - blackList = [ - - ] -} \ No newline at end of file diff --git a/test/crashreport-apmbyte/build.gradle b/test/crashreport-apmbyte/build.gradle index d538a27abb..057435c935 100644 --- a/test/crashreport-apmbyte/build.gradle +++ b/test/crashreport-apmbyte/build.gradle @@ -54,8 +54,6 @@ dependencies { implementation rootProject.ext.dependencies.arouter kapt rootProject.ext.dependencies.aroutercompiler - implementation rootProject.ext.dependencies.apm_insight_crash - implementation rootProject.ext.dependencies.apm_insight if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { api rootProject.ext.dependencies.crashreport 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 44ec2664a6..45bb11a1b6 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 @@ -4,12 +4,6 @@ import android.content.Context; import android.util.Log; import com.alibaba.android.arouter.facade.annotation.Route; -import com.apm.insight.ExitType; -import com.apm.insight.MonitorCrash; -import com.apm.insight.log.VLog; -import com.bytedance.apm.insight.ApmInsight; -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.app.AppConfigInfo; @@ -70,241 +64,18 @@ public class ApmCrashReportProvider implements ITestCrashReportProvider { }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .doOnNext(isDebug -> { - initCrash(context, isDebug); - initApmInsight(context, isDebug); - }).subscribe(); + .subscribe(); } - 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(FunctionBuildConfig.appIdentityMode)// 可选,设置App发布渠道,在平台可以筛选 - // .url("www.xxx.com")// 默认不需要,私有化部署才配置上报地址 - //可选,可以设置自定义 did,不设置会使用内部默认的 - .dynamicParams(new MonitorCrash.Config.IDynamicParams() { - @Override - public String getDid() {//返回空会使用内部默认的did - String sn = SharedPrefsMgr.getInstance().getString("sn"); - if (sn != null && !sn.isEmpty()) { - return sn; - } else { - return DeviceUtils.getDeviceSN().isEmpty() ? null : DeviceUtils.getDeviceSN(); - } - } - - @Override - public String getUserId() { - return DeviceUtils.getDeviceSN(); - } - }) - //应用崩溃后会执行这里,可选,添加业务自定义数据,在崩溃详情页->现场数据展示->自定义数据 - .customData(crashType -> { - //车辆所在位置 - mCityCode = SharedPrefsMgr.getInstance().getString(SharedPrefsConstants.LOCATION_CITY_CODE); - mLat = SharedPrefsMgr.getInstance().getString(SharedPrefsConstants.LOCATION_LATITUDE); - mLogt = SharedPrefsMgr.getInstance().getString(SharedPrefsConstants.LOCATION_LONGITUDE); - //车辆信息 - String carInfoString = SharedPrefsMgr.getInstance().getString(SharedPrefsConstants.CAR_INFO); - if (carInfoString != null && !carInfoString.isEmpty()) { - mInfo = GsonUtils.fromJson(carInfoString, CarInfo.class); - } - - //======================================== 自定义维度值 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", FunctionBuildConfig.appIdentityMode); - // 车辆类型 - dimension.put("APP_CAR_TYPE", AppIdentityModeUtils.INSTANCE.getBuildCarType(FunctionBuildConfig.appIdentityMode)); - //************************************* APP构建的信息 *********************************************** - - //************************************* 与车辆连接的 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 等信息 *********************************************** - - //************************************* 位置信息 *********************************************** - // 城市信息 - dimension.put("LOCATION_CITY_CODE", mCityCode); - dimension.put("LOCATION_LATITUDE", mLat); - dimension.put("LOCATION_LONGITUTE", mLogt); - //************************************* 位置信息 *********************************************** - - //************************************* 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", FunctionBuildConfig.appIdentityMode); - // 车辆类型 - 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.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(<>>) - .exitType(ExitType.ALL) // 上报应用退出原因 - .crashProtect(true) // 开启崩溃防护 - .build(); - MonitorCrash monitorCrash = MonitorCrash.init(context, config); - } - - /** - * ApmInsight性能监控初始化 - */ - private void initApmInsight(Context context, boolean isDebug) { - ApmInsightInitConfig.Builder builder = ApmInsightInitConfig.builder(); - //设置分配的appid - builder.aid(isDebug ? BYTEAMP_APPID_DEV : BYTEAMP_APPID); - //设置分配的AppToken - builder.token(isDebug ? BYTEAMP_AppToken_DEV : BYTEAMP_AppToken); - //是否开启卡顿功能 - builder.blockDetect(true); - //是否开启严重卡顿功能 - builder.seriousBlockDetect(true); - //是否开启流畅性和丢帧 - builder.fpsMonitor(true); - //控制是否打开WebVeiw监控 - builder.enableWebViewMonitor(true); - //控制是否打开内存监控 - builder.memoryMonitor(true); - //控制是否打开电量监控 - builder.batteryMonitor(true); - //控制是否打开CPU监控 - builder.cpuMonitor(true); - //控制是否打开磁盘监控 - builder.diskMonitor(true); - //控制是否打开流量监控 - builder.trafficMonitor(true); - //是否打印日志,注:线上release版本要配置为false - builder.debugMode(true); - //支持用户自定义user_id把平台数据和自己用户关联起来,可以不配置 -// builder.userId(MoGoAiCloudClientConfig.getInstance().getSn()); - //私有化部署:配置数据上报的域名 (私有化部署才需要配置,内部有默认域名),测试支持设置http://www.xxx.com 默认是https协议 -// builder.defaultReportDomain("www.xxx.com"); - //设置渠道。1.3.16版本增加接口 - builder.channel(FunctionBuildConfig.appIdentityMode); - //打开自定义日志回捞能力,1.4.1版本新增接口 - builder.enableLogRecovery(true); - //设置数据和Rangers Applog数据打通,设备标识did必填。1.3.16版本增加接口 -// builder.setDynamicParams(new IDynamicParams() { -// @Override -// public String getUserUniqueID() { -// //可选。依赖AppLog可以通过AppLog.getUserUniqueID()获取,否则可以返回null。 -// return null; -// } -// -// @Override -// public String getAbSdkVersion() { -// //可选。如果依赖AppLog可以通过AppLog.getAbSdkVersion()获取,否则可以返回null。 -// return null; -// } -// -// @Override -// public String getSsid() { -// //可选。依赖AppLog可以通过AppLog.getSsid()获取,否则可以返回null。 -// return null; -// } -// -// @Override -// public String getDid() { -// //1.4.0版本及以上,可选,其他版本必填。设备的唯一标识,如果依赖AppLog可以通过 AppLog.getDid() 获取,也可以自己生成。 -// return AppLog.getDid(); -// } -// }); - ApmInsight.getInstance().init(context, builder.build()); - //初始化自定日志,配置自定义日志最大占用磁盘,内部一般配置20,代表最大20M磁盘占用。1.4.1版本开始存在这个api - VLog.init(context, 50); - - } @Override public boolean uploadVlog(long startTime, long endTime) { AtomicBoolean result = new AtomicBoolean(false); CountDownLatch latch = new CountDownLatch(1); - ApmInsightAgent.uploadVlog(startTime, endTime, (success, msg) -> { - Log.d(TAG, "--- uploadVlog callback ---:" + success + ", msg:" + msg); - result.set(success); - latch.countDown(); - }); try { latch.await(); } catch (InterruptedException e) {