package com.mogo.launcher;
import com.apm.insight.AttachUserData;
import com.apm.insight.CrashType;
import com.apm.insight.MonitorCrash;
import com.apm.insight.log.VLog;
import com.auto.zhidao.logsdk.CrashSystem;
import com.bytedance.apm.insight.ApmInsight;
import com.bytedance.apm.insight.ApmInsightInitConfig;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.main.MainMoGoApplication;
import com.mogo.module.v2x.utils.ObuConfig;
import com.mogo.test.crashreport.CrashReportConstants;
import com.mogo.utils.AppUtils;
import com.mogo.utils.CommonUtils;
import com.mogo.utils.logger.LogLevel;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.storage.SharedPrefsMgr;
import java.util.HashMap;
import java.util.Map;
/**
* @author congtaowang
* @since 2019-12-18
*
* Launcher application
*/
public class MogoApplication extends MainMoGoApplication {
private static final String BYTEAMP_APPID = "302368";
@Override
protected void initCrashConfig() {
CrashSystem crashSystem = CrashSystem.getInstance(this);
crashSystem.init();
initCrash();
initApmInsight();
//设置debug模式,日志不上传
crashSystem.setDebug(BuildConfig.DEBUG);
}
@Override
protected void initLogConfig() {
super.initLogConfig();
Logger.init(BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF);
}
private void initCrash() {
MonitorCrash crash = MonitorCrash.init(this, BYTEAMP_APPID, CommonUtils.getVersionCode(this), CommonUtils.getVersionName(this))
.setCustomDataCallback(new AttachUserData() {
@Override
public Map extends String, ? extends String> getUserData(CrashType type) {
HashMap map = new HashMap<>();
// map.put("app_custom", "app_value");
//SN
map.put("serial", MoGoAiCloudClientConfig.getInstance().getSn());
//地图版本
String mapSDKVersion = AppUtils.getCustomMapSDKVersion(getApplicationContext());
map.put("MAP_SDK_VERSION", mapSDKVersion);
return map;
}
});
crash.config().setChannel("eagle");
// crash.config().setDeviceId("did");//可选,可以设置自定义did,不设置会使用内部默认的
// crash.setReportUrl("www.xxx.com"); // 私有化部署:私有化部署才配置上报地址
// crash.addTags("key", "value"); // 自定义筛选tag, 按需添加、可多次覆盖
}
/**
* ApmInsight性能监控初始化
*/
private void initApmInsight() {
ApmInsightInitConfig.Builder builder = ApmInsightInitConfig.builder();
//设置分配的appid
builder.aid(BYTEAMP_APPID);
//是否开启卡顿功能
builder.blockDetect(true);
//是否开启严重卡顿功能
builder.seriousBlockDetect(true);
//是否开启流畅性和丢帧
builder.fpsMonitor(true);
//控制是否打开WebVeiw监控
builder.enableWebViewMonitor(true);
//控制是否打开内存监控
builder.memoryMonitor(true);
//控制是否打开电量监控
builder.batteryMonitor(true);
//是否打印日志,注:线上release版本要配置为false
builder.debugMode(true);
//支持用户自定义user_id把平台数据和自己用户关联起来,可以不配置
// builder.userId("user_id");
//私有化部署:配置数据上报的域名 (私有化部署才需要配置,内部有默认域名),测试支持设置http://www.xxx.com 默认是https协议
// builder.defaultReportDomain("www.xxx.com");
//设置渠道。1.3.16版本增加接口
builder.channel("local");
//打开自定义日志回捞能力,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(this, builder.build());
//初始化自定日志,配置自定义日志最大占用磁盘,内部一般配置20,代表最大20M磁盘占用。1.4.1版本开始存在这个api
VLog.init(this, 20);
}
@Override
protected void initCloudClientConfig() {
// todo 使用旧Socket链路 true = 旧链路,false = 新链路
//clientConfig.setUseOriginSocket(true);
}
@Override
protected void initBuildConfig() {
DebugConfig.setNetMode(BuildConfig.NET_ENV);
DebugConfig.setDebug(BuildConfig.DEBUG);
DebugConfig.setLaunchLocationService(BuildConfig.LAUNCH_LOCATION_SERVICE);
DebugConfig.setUseCustomNavi(BuildConfig.USE_CUSTOM_NAVI);
DebugConfig.setLauncher(BuildConfig.IS_LAUNCHER);
DebugConfig.setActiveAIAssistFlag(BuildConfig.AI_ASSIST_ACTIVE_STAUTS);
DebugConfig.setUseMockObuData(false);
DebugConfig.setCarMachineType(BuildConfig.CAR_MACHINE_TYPE);
DebugConfig.setProductFlavor(BuildConfig.FLAVOR_product);
DebugConfig.setSocketAppId(BuildConfig.SOCKET_APP_ID);
DebugConfig.setScheduleCalculateNotHomeCompanyDistanceForPush(BuildConfig.IS_SUPPORT_SCHEDULE_CALCULATE_NOT_HOME_COMPANY_DISTANCE_FOR_PUSH);
DebugConfig.setMapBased(BuildConfig.IS_MAP_BASED);
DebugConfig.setNeedHideAdasWhenShare(BuildConfig.IS_NEED_HIDE_ADAS_WHEN_SHARE);
DebugConfig.setNeedUploadCoordinatesInTime(BuildConfig.IS_NEED_UPLOAD_COORDINATES_IN_TIME);
DebugConfig.setObuType(SharedPrefsMgr.getInstance(this).getInt("OBU_TYPE", DebugConfig.OBU_TYPE_CIDI));
ObuConfig.useObuLocation = false;
// 使用与渠道配置一样的gps提供者提供的数据,app/productFlavors/fPadLenovo.gradle GPS_PROVIDER 0-Android系统,1-工控机,2-OBU
FunctionBuildConfig.gpsProvider = BuildConfig.GPS_PROVIDER;
// 配置BuglyAppID
CrashReportConstants.buglyAppID = "ac71228f85";
/* // TODO 这里是演示代码使用,控制HMI展示元素
HmiBuildConfig.isShowSpeedView = false;
HmiBuildConfig.isShowAutopilotStatusView = false;
HmiBuildConfig.isShowPerspectiveSwitchView = false;
HmiBuildConfig.isShowCheckStatusView = false;*/
// TODO 这里指定自车模型 R.raw.xiaobache--小巴车,R.raw.chuzuche--出租车
//HdMapBuildConfig.currentCarVrIconRes = R.raw.chuzuche;
}
}