diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 5ecdf77031..5ffd91aa8a 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -40,6 +40,7 @@
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 21e99e2dc0..cd77a1f062 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -4,7 +4,7 @@
-
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index aac18fc73d..d71e33f048 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -273,6 +273,7 @@ dependencies {
implementation rootProject.ext.dependencies.moduleservice
implementation rootProject.ext.dependencies.modulesplash
implementation rootProject.ext.dependencies.moduleV2x
+ implementation rootProject.ext.dependencies.mogomonitor
} else {
launcherImplementation project(':main-extensions:mogo-module-main-launcher')
independentImplementation project(':main-extensions:mogo-module-main-independent')
@@ -284,6 +285,7 @@ dependencies {
implementation project(':modules:mogo-module-service')
implementation project(':modules:mogo-module-splash')
implementation project(':modules:mogo-module-v2x')
+ implementation project(':modules:mogo-module-monitor')
}
apply from: "./functions/baseservices.gradle"
diff --git a/config.gradle b/config.gradle
index e5a0c4e313..5aee411d81 100644
--- a/config.gradle
+++ b/config.gradle
@@ -174,6 +174,8 @@ targetSdkVersion : 22,
mogobaseserviceapk : "com.mogo.base:services-apk:${MOGO_BASE_SERVICES_APK_VERSION}",
// loglib
mogologlib : "com.mogo.module:module-loglib:${LOGLIB_VERSION}",
+ // monitor
+ mogomonitor : "com.mogo.module:module-monitor:${MOGO_MODULE_MONITOR_VERSION}",
// google
googlezxing : "com.google.zxing:core:3.3.3",
diff --git a/gradle.properties b/gradle.properties
index 2280170e01..c7c918e0b9 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -101,7 +101,9 @@ MOGO_MODULE_SPLASH_VERSION = 1.0.0-SNAPSHOT
MOGO_MODULE_SPLASH_NOOP_VERSION = 1.0.0-SNAPSHOT
# loglib
-LOGLIB_VERSION = 1.0.0-SNAPSHOT
+LOGLIB_VERSION = 1.0.1-SNAPSHOT
+# monitor
+MOGO_MODULE_MONITOR_VERSION = 1.0.0-SNAPSHOT
## 产品库必备配置,产品库自动对versionCode和versionName版本进行升级
applicationId=com.mogo.launcer
diff --git a/modules/mogo-module-monitor/.gitignore b/modules/mogo-module-monitor/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/modules/mogo-module-monitor/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/build.gradle b/modules/mogo-module-monitor/build.gradle
new file mode 100644
index 0000000000..af9b206ded
--- /dev/null
+++ b/modules/mogo-module-monitor/build.gradle
@@ -0,0 +1,43 @@
+apply plugin: 'com.android.library'
+apply plugin: 'com.alibaba.arouter'
+
+android {
+ compileSdkVersion rootProject.ext.android.compileSdkVersion
+ // buildToolsVersion rootProject.ext.android.buildToolsVersion
+ defaultConfig {
+ minSdkVersion rootProject.ext.android.minSdkVersion
+ targetSdkVersion rootProject.ext.android.targetSdkVersion
+ versionCode Integer.valueOf(VERSION_CODE)
+ versionName getValueFromRootProperties("${project.name.replace("-", "_").toUpperCase()}_VERSION")
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles 'consumer-rules.pro'
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation rootProject.ext.dependencies.mogologlib
+ implementation rootProject.ext.dependencies.arouter
+ annotationProcessor rootProject.ext.dependencies.aroutercompiler
+ if (Boolean.valueOf(RELEASE)) {
+ compileOnly rootProject.ext.dependencies.modulecommon
+ } else {
+ compileOnly project(':modules:mogo-module-common')
+ }
+}
+
+apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString()
diff --git a/modules/mogo-module-monitor/consumer-rules.pro b/modules/mogo-module-monitor/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/modules/mogo-module-monitor/gradle.properties b/modules/mogo-module-monitor/gradle.properties
new file mode 100644
index 0000000000..db3ee2befd
--- /dev/null
+++ b/modules/mogo-module-monitor/gradle.properties
@@ -0,0 +1,3 @@
+GROUP=com.mogo.module
+POM_ARTIFACT_ID=module-monitor
+VERSION_CODE=1
diff --git a/modules/mogo-module-monitor/proguard-rules.pro b/modules/mogo-module-monitor/proguard-rules.pro
new file mode 100644
index 0000000000..481bb43481
--- /dev/null
+++ b/modules/mogo-module-monitor/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/modules/mogo-module-monitor/src/main/AndroidManifest.xml b/modules/mogo-module-monitor/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..9fdb2a839e
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+ /
+
\ No newline at end of file
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
new file mode 100644
index 0000000000..41e54354ae
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorConst.java
@@ -0,0 +1,11 @@
+package com.zhidao.mogo.module.monitor;
+
+class MogoMonitorConst {
+ public static final String MODULE_NAME = "MogoMonitor";
+ public static final String MODULE_PATH = "/monitor/api";
+
+ public static final int LOG_PUSH_TYPE = 500000;
+
+ public static final int START_CATCH_LOG = 1;
+ public static final int STOP_CATCH_LOG = 2;
+}
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
new file mode 100644
index 0000000000..39196d2940
--- /dev/null
+++ b/modules/mogo-module-monitor/src/main/java/com/zhidao/mogo/module/monitor/MogoMonitorProvider.java
@@ -0,0 +1,80 @@
+package com.zhidao.mogo.module.monitor;
+
+import android.content.Context;
+import android.util.ArrayMap;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.alibaba.android.arouter.launcher.ARouter;
+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.Logger;
+import com.zhidao.loglib.LogInfoManager;
+import com.zhidao.loglib.bean.RemoteLogPushContent;
+import com.zhidao.loglib.upload.UploadManager;
+import com.zhidao.loglib.util.LoggingNotice;
+
+import java.util.Map;
+
+/**
+ * 应用监控模块provider
+ * @author tongchenfei
+ */
+@Route(path = MogoMonitorConst.MODULE_PATH)
+public class MogoMonitorProvider implements IMogoMonitorProvider, IMogoOnMessageListener {
+ private static final String TAG = MogoMonitorConst.MODULE_NAME;
+ private LogInfoManager manualCatchLog = null;
+ private Map managerCache = new ArrayMap<>();
+ private Context context;
+
+ @Override
+ public void showLogDebugDialog() {
+ if (manualCatchLog == null) {
+ manualCatchLog = new LogInfoManager.Builder(context).build();
+ }
+ manualCatchLog.showDebugWindow();
+ }
+
+ @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);
+ }
+
+ @Override
+ public void resetActivityContext(Context context) {
+ this.context = context;
+ UploadManager.getInstance().init(context);
+ LoggingNotice.getInstance().init(context);
+ }
+
+ @Override
+ public Class target() {
+ return RemoteLogPushContent.class;
+ }
+
+ @Override
+ public void onMsgReceived(RemoteLogPushContent obj) {
+ switch (obj.getType()){
+ case MogoMonitorConst.START_CATCH_LOG:
+ if (managerCache.containsKey(obj.getPkgName())) {
+ Logger.d(TAG, "这个包名的日志正在抓了: " + obj);
+ return;
+ }
+ LogInfoManager infoManager = new LogInfoManager.Builder(context).build();
+ infoManager.start();
+ managerCache.put(obj.getPkgName(), infoManager);
+ break;
+ case MogoMonitorConst.STOP_CATCH_LOG:
+ LogInfoManager stopManager = managerCache.get(obj.getPkgName());
+ if (stopManager != null) {
+ stopManager.stop();
+ }
+ break;
+ default:
+ break;
+ }
+ }
+}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
index 3d0c6ad1fc..1e5b00fa72 100644
--- a/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/MogoServicePaths.java
@@ -231,5 +231,5 @@ public class MogoServicePaths {
* 日志上传
*/
@Deprecated
- public static final String PATH_LOG_LIB = "/loglib/api";
+ public static final String PATH_MOGO_MONITOR = "/monitor/api";
}
diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorProvider.java b/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorProvider.java
new file mode 100644
index 0000000000..e7b0f6d0b0
--- /dev/null
+++ b/services/mogo-service-api/src/main/java/com/mogo/service/monitor/IMogoMonitorProvider.java
@@ -0,0 +1,22 @@
+package com.mogo.service.monitor;
+
+import android.content.Context;
+
+import com.alibaba.android.arouter.facade.template.IProvider;
+
+/**
+ * monitor接口
+ * @author tongchenfei
+ */
+public interface IMogoMonitorProvider extends IProvider {
+ /**
+ * 显示日志抓取窗口
+ */
+ void showLogDebugDialog();
+
+ /**
+ * 重置context,设置成activity的context
+ * @param context activity的context
+ */
+ void resetActivityContext(Context context);
+}
diff --git a/settings.gradle b/settings.gradle
index 31a5cddd93..fd11e426ea 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,3 +1,4 @@
+include ':modules:mogo-module-monitor'
include ':foudations:mogo-base-services-apk'
include ':foudations:mogo-base-services-sdk'
include ':modules:mogo-module-splash-noop'