From 7ebc0b086214e8dadaadc7d47e746062e8bf17c6 Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 18 Aug 2020 13:11:07 +0800 Subject: [PATCH] opt --- modules/mogo-module-monitor/build.gradle | 3 +- .../mogo/module/monitor/MogoMonitorConst.java | 14 ++++ .../module/monitor/MogoMonitorProvider.java | 81 +++++++------------ .../monitor/bean/RemoteLogPushContent.java | 53 ++++++++++++ .../monitor/dialog/ILogDialogListener.java | 17 ++++ .../module/monitor/dialog/LogDebugDialog.java | 46 +++++++++++ .../main/res/drawable/log_debug_dialog_bg.xml | 13 +++ .../res/drawable/log_debug_retry_btn_bg.xml | 17 ++++ .../res/drawable/log_debug_start_btn_bg.xml | 17 ++++ .../res/drawable/log_debug_stop_btn_bg.xml | 17 ++++ .../src/main/res/layout/dialog_log_debug.xml | 76 +++++++++++++++++ .../com/mogo/module/share/ShareControl.java | 1 + 12 files changed, 303 insertions(+), 52 deletions(-) create mode 100644 modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java create mode 100644 modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/ILogDialogListener.java create mode 100644 modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/LogDebugDialog.java create mode 100644 modules/mogo-module-monitor/src/main/res/drawable/log_debug_dialog_bg.xml create mode 100644 modules/mogo-module-monitor/src/main/res/drawable/log_debug_retry_btn_bg.xml create mode 100644 modules/mogo-module-monitor/src/main/res/drawable/log_debug_start_btn_bg.xml create mode 100644 modules/mogo-module-monitor/src/main/res/drawable/log_debug_stop_btn_bg.xml create mode 100644 modules/mogo-module-monitor/src/main/res/layout/dialog_log_debug.xml diff --git a/modules/mogo-module-monitor/build.gradle b/modules/mogo-module-monitor/build.gradle index d91c74e164..02099054e3 100644 --- a/modules/mogo-module-monitor/build.gradle +++ b/modules/mogo-module-monitor/build.gradle @@ -35,7 +35,8 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation rootProject.ext.dependencies.mogologlib + implementation rootProject.ext.dependencies.androidxappcompat + implementation rootProject.ext.dependencies.androidxconstraintlayout implementation rootProject.ext.dependencies.arouter annotationProcessor rootProject.ext.dependencies.aroutercompiler if (Boolean.valueOf(RELEASE)) { diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java index 41e54354ae..138952c65e 100644 --- a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java @@ -8,4 +8,18 @@ class MogoMonitorConst { public static final int START_CATCH_LOG = 1; public static final int STOP_CATCH_LOG = 2; + /** + * 本应用设置,打开日志 + */ + public static final int LOCAL_CONFIG_OPEN_LOG = 3; + /** + * 本应用设置,关闭日志 + */ + public static final int LOCAL_CONFIG_CLOSE_LOG = 4; + + + public static final String BROADCAST_START_CATCH_LOG = "com.mogo.controller.action" + + ".START_CATCH_LOG"; + public static final String BROADCAST_STOP_CATCH_LOG = "com.mogo.controller.action" + + ".STOP_CATCH_LOG"; } diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java index 5cee06832c..83e03c85bb 100644 --- a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java @@ -1,58 +1,53 @@ package com.zhidao.mogo.module.monitor; import android.content.Context; +import android.content.Intent; import android.util.ArrayMap; import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.launcher.ARouter; +import com.mogo.commons.debug.DebugConfig; import com.mogo.service.IMogoServiceApis; import com.mogo.service.MogoServicePaths; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.service.monitor.IMogoMonitorProvider; import com.mogo.utils.logger.LogLevel; import com.mogo.utils.logger.Logger; -import com.zhidao.loglib.ILogListener; -import com.zhidao.loglib.LogInfoManager; -import com.zhidao.loglib.bean.RemoteLogPushContent; -import com.zhidao.loglib.dialog.ILogDialogListener; -import com.zhidao.loglib.upload.UploadManager; -import com.zhidao.loglib.util.Constant; -import com.zhidao.loglib.util.LogInfoManagerFactory; -import com.zhidao.loglib.util.LoggingNotice; +import com.mogo.utils.network.NetConfig; +import com.zhidao.mogo.module.monitor.bean.RemoteLogPushContent; +import com.zhidao.mogo.module.monitor.dialog.ILogDialogListener; +import com.zhidao.mogo.module.monitor.dialog.LogDebugDialog; import java.util.Map; /** * 应用监控模块provider + * * @author tongchenfei */ @Route(path = MogoMonitorConst.MODULE_PATH) -public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessageListener, ILogDialogListener , ILogListener { +public class MogoMonitorProvider implements IMogoMonitorProvider, + IMogoOnMessageListener, ILogDialogListener { private static final String TAG = MogoMonitorConst.MODULE_NAME; - private LogInfoManager manualCatchLog = null; - private Map managerCache = new ArrayMap<>(); private Context context; - + private LogDebugDialog logDebugDialog; @Override public void showLogDebugDialog() { - if (manualCatchLog == null) { - manualCatchLog = LogInfoManagerFactory.createManualLogInfoManager(context,this); - } - manualCatchLog.showDebugWindow().setDialogListener(this); + logDebugDialog.show(); } @Override public void init(Context context) { IMogoServiceApis apis = (IMogoServiceApis) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICE_APIS).navigation(context); - apis.getSocketManagerApi(context).registerOnMessageListener(MogoMonitorConst.LOG_PUSH_TYPE,this); + apis.getSocketManagerApi(context).registerOnMessageListener(MogoMonitorConst.LOG_PUSH_TYPE, this); } @Override public void resetActivityContext(Context context) { this.context = context; - UploadManager.getInstance().init(context); - LoggingNotice.getInstance().init(context); + logDebugDialog = new LogDebugDialog(context); + logDebugDialog.setDialogListener(this); } @Override @@ -63,23 +58,17 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessage @Override public void onMsgReceived(RemoteLogPushContent obj) { Logger.d(TAG, "收到push消息: " + obj); - switch (obj.getType()){ + switch (obj.getType()) { case MogoMonitorConst.START_CATCH_LOG: - if (managerCache.containsKey(obj.getPkgName())) { - Logger.d(TAG, "这个包名的日志正在抓了: " + obj); - return; - } - openLoggerLevel(); - LogInfoManager infoManager = - LogInfoManagerFactory.createPushLogInfoManager(context, obj,this); - infoManager.start(); - managerCache.put(obj.getPkgName(), infoManager); + onLogStart(); break; case MogoMonitorConst.STOP_CATCH_LOG: - LogInfoManager stopManager = managerCache.remove(obj.getPkgName()); - if (stopManager != null) { - stopManager.stop(); - } + onLogStop(); + break; + case MogoMonitorConst.LOCAL_CONFIG_OPEN_LOG: + openLoggerLevel(); + break; + case MogoMonitorConst.LOCAL_CONFIG_CLOSE_LOG: closeLoggerLevel(); break; default: @@ -90,41 +79,31 @@ public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessage @Override public void onLogStart() { // 这个是通过对话框点击开始的回调 - isInManualCatchLog = true; + Logger.d(TAG,"开始抓取日志===="); + context.sendBroadcast(new Intent(MogoMonitorConst.BROADCAST_START_CATCH_LOG)); openLoggerLevel(); } @Override public void onLogStop() { // 这个是通过对话框点击结束的回调 - isInManualCatchLog = false; + Logger.d(TAG,"结束抓取日志===="); + context.sendBroadcast(new Intent(MogoMonitorConst.BROADCAST_STOP_CATCH_LOG)); closeLoggerLevel(); } - private boolean isInManualCatchLog = false; /** * 放开Logger的限制 */ - private void openLoggerLevel(){ + private void openLoggerLevel() { Logger.init(LogLevel.DEBUG); } /** * 根据状态收紧Logger的限制 */ - private void closeLoggerLevel(){ - if (!isInManualCatchLog && managerCache.size() == 0) { - Logger.init( BuildConfig.DEBUG ? LogLevel.DEBUG : LogLevel.OFF ); - } - } - - @Override - public void onClose(String pkgName) { - if (pkgName.equals(Constant.MANUAL_PKG_NAME)) { - onLogStop(); - }else{ - LogInfoManager stopManager = managerCache.remove(pkgName); - closeLoggerLevel(); - } + private void closeLoggerLevel() { + Logger.init(DebugConfig.isDebug() ? LogLevel.DEBUG : LogLevel.OFF); + NetConfig.instance().setLoggable(DebugConfig.isDebug()); } } diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java new file mode 100644 index 0000000000..29bcbacc1a --- /dev/null +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/bean/RemoteLogPushContent.java @@ -0,0 +1,53 @@ +package com.zhidao.mogo.module.monitor.bean; + +public class RemoteLogPushContent { + private int type; + /** + * 日志抓取时长,单位是分钟 + */ + private int duration; + private String cmd; + private String pkgName; + + public int getType() { + return type; + } + + public void setType(int type) { + this.type = type; + } + + public String getCmd() { + return cmd; + } + + public void setCmd(String cmd) { + this.cmd = cmd; + } + + public int getDuration() { + return duration; + } + + public void setDuration(int duration) { + this.duration = duration; + } + + public String getPkgName() { + return pkgName; + } + + public void setPkgName(String pkgName) { + this.pkgName = pkgName; + } + + @Override + public String toString() { + return "RemoteLogPushContent{" + + "type=" + type + + ", duration=" + duration + + ", cmd='" + cmd + '\'' + + ", pkgName='" + pkgName + '\'' + + '}'; + } +} diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/ILogDialogListener.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/ILogDialogListener.java new file mode 100644 index 0000000000..8a97de2cb4 --- /dev/null +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/ILogDialogListener.java @@ -0,0 +1,17 @@ +package com.zhidao.mogo.module.monitor.dialog; + +/** + * Log调试对话框操作回调 + * @author tongchenfei + */ +public interface ILogDialogListener { + /** + * 点击了开始抓日志 + */ + void onLogStart(); + + /** + * 点击了结束抓日志 + */ + void onLogStop(); +} diff --git a/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/LogDebugDialog.java b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/LogDebugDialog.java new file mode 100644 index 0000000000..b26eb35859 --- /dev/null +++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/dialog/LogDebugDialog.java @@ -0,0 +1,46 @@ +package com.zhidao.mogo.module.monitor.dialog; + +import android.content.Context; + +import androidx.annotation.NonNull; + +import com.mogo.module.common.dialog.BaseFloatDialog; +import com.zhidao.mogo.module.monitor.R; + +/** + * 日志手动调用开始结束的对话框,兼容了智慧出行,覆盖adas浮窗 + * + * @author tongchenfei + */ +public class LogDebugDialog extends BaseFloatDialog { + public LogDebugDialog(@NonNull Context context) { + super(context); + setContentView(R.layout.dialog_log_debug); + findViewById(R.id.btnStart).setOnClickListener(v -> { + if (dialogListener != null) { + dialogListener.onLogStart(); + } + dismiss(); + }); + findViewById(R.id.btnStop).setOnClickListener(v->{ + if (dialogListener != null) { + dialogListener.onLogStop(); + } + + dismiss(); + }); + findViewById(R.id.btnForceClearNotice).setOnClickListener(v->{ + dismiss(); + }); + findViewById(R.id.btnRetryFlow).setOnClickListener(v->{ + dismiss(); + }); + } + + private ILogDialogListener dialogListener; + + public void setDialogListener(ILogDialogListener dialogListener) { + this.dialogListener = dialogListener; + } + +} diff --git a/modules/mogo-module-monitor/src/main/res/drawable/log_debug_dialog_bg.xml b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_dialog_bg.xml new file mode 100644 index 0000000000..012558ce6d --- /dev/null +++ b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_dialog_bg.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-monitor/src/main/res/drawable/log_debug_retry_btn_bg.xml b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_retry_btn_bg.xml new file mode 100644 index 0000000000..0cb65e7650 --- /dev/null +++ b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_retry_btn_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-monitor/src/main/res/drawable/log_debug_start_btn_bg.xml b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_start_btn_bg.xml new file mode 100644 index 0000000000..c21ba027d9 --- /dev/null +++ b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_start_btn_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-monitor/src/main/res/drawable/log_debug_stop_btn_bg.xml b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_stop_btn_bg.xml new file mode 100644 index 0000000000..d8e32b922f --- /dev/null +++ b/modules/mogo-module-monitor/src/main/res/drawable/log_debug_stop_btn_bg.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/modules/mogo-module-monitor/src/main/res/layout/dialog_log_debug.xml b/modules/mogo-module-monitor/src/main/res/layout/dialog_log_debug.xml new file mode 100644 index 0000000000..fd3a32aa17 --- /dev/null +++ b/modules/mogo-module-monitor/src/main/res/layout/dialog_log_debug.xml @@ -0,0 +1,76 @@ + + + + + + +