From cc9ebc46c32524a9f249e7bb1180ffc01a55d724 Mon Sep 17 00:00:00 2001
From: wangtao55 <wangtao55@hikcreate.com>
Date: Mon, 23 Sep 2019 20:01:24 +0800
Subject: [PATCH] feat:组件生命周期控制

---
 ModuleProject/.idea/gradle.xml                                                                                    |   1 +
 ModuleProject/app/build.gradle                                                                                    |  14 +++++++++++++-
 ModuleProject/app/src/main/AndroidManifest.xml                                                                    |   1 +
 ModuleProject/app/src/main/java/com/hikcreate/app/AppActivityLifeCycle.java                                       |  50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 ModuleProject/app/src/main/java/com/hikcreate/app/AppAppLogic.java                                                |  35 +++++++++++++++++++++++++++++++++++
 ModuleProject/app/src/main/java/com/hikcreate/app/AppBaseContext.java                                             |  27 ---------------------------
 ModuleProject/app/src/main/java/com/hikcreate/app/CommonApplication.java                                          |  46 ++++++++++++++++++++++++++++++++++++++++++++++
 ModuleProject/app/src/main/java/com/hikcreate/temp/TestBean.java                                                  |  21 +++++++++++++++++++++
 ModuleProject/app/src/main/java/com/hikcreate/ui/testActivity.java                                                |   7 +++++--
 ModuleProject/app/src/main/res/layout/app_test.xml                                                                |   2 +-
 ModuleProject/app_common/build.gradle                                                                             |  14 ++++++++++++++
 ModuleProject/app_common/src/main/java/com/hikcreate/app/AppContext.java                                          |  21 ---------------------
 ModuleProject/app_login/build.gradle                                                                              |  17 ++++++++++++++---
 ModuleProject/app_login/src/main/java/com/hikcreate/login/testLoginActivity.java                                  |   5 +++++
 ModuleProject/app_login/src/main/java/com/hikcreate/test/CommonApplication.java                                   |  35 +++++++++++++++++++++++++++++++++++
 ModuleProject/app_login/src/main/java/com/login/LoginActivityLifeCycle.java                                       |  50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 ModuleProject/app_login/src/main/java/com/login/LoginAppLogic.java                                                |  35 +++++++++++++++++++++++++++++++++++
 ModuleProject/app_login/src/main/module/AndroidManifest.xml                                                       |   1 +
 ModuleProject/app_passport/build.gradle                                                                           |  13 ++++++++++++-
 ModuleProject/app_passport/src/main/java/com/hikcreate/passport/TestFragment.java                                 |  18 ++++++++++++++++++
 ModuleProject/config/app_config.gradle                                                                            |   7 +++++++
 ModuleProject/config/app_module_config.gradle                                                                     |   2 --
 ModuleProject/config/config_demo                                                                                  |  58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ModuleProject/lib_app_common/build.gradle                                                                         |  25 ++++++++++++++++---------
 ModuleProject/lib_baidu_audiodect/build.gradle                                                                    |  11 ++++++++---
 ModuleProject/lib_baidu_facedect/build.gradle                                                                     |   9 ++++++---
 ModuleProject/lib_baidu_textdect/build.gradle                                                                     |   3 +++
 ModuleProject/lib_common_ui/build.gradle                                                                          |   6 +++++-
 ModuleProject/lib_data_drive/build.gradle                                                                         |  11 ++++++++---
 ModuleProject/lib_data_drive/src/main/java/com/data/bean/GeneralMessageBean.java                                  |  47 -----------------------------------------------
 ModuleProject/lib_data_drive/src/main/java/com/data/driver/MessageWrap.java                                       |  18 ------------------
 ModuleProject/lib_data_drive/src/main/java/com/data/util/ObjectUtil.java                                          |  97 -------------------------------------------------------------------------------------------------
 ModuleProject/lib_data_drive/src/main/java/com/message/bean/GeneralMessageBean.java                               |  55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ModuleProject/lib_data_drive/src/main/java/com/message/driver/MessageWrap.java                                    |  77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ModuleProject/lib_data_drive/src/main/java/com/message/util/ObjectUtil.java                                       | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ModuleProject/lib_module_common/.gitignore                                                                        |   1 +
 ModuleProject/lib_module_common/build.gradle                                                                      |  37 +++++++++++++++++++++++++++++++++++++
 ModuleProject/lib_module_common/proguard-rules.pro                                                                |  21 +++++++++++++++++++++
 ModuleProject/lib_module_common/src/androidTest/java/info/hook/com/lib_module_common/ExampleInstrumentedTest.java |  27 +++++++++++++++++++++++++++
 ModuleProject/lib_module_common/src/main/AndroidManifest.xml                                                      |   2 ++
 ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/AppContext.java                                  | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseActivityLifeLogic.java                       |  26 ++++++++++++++++++++++++++
 ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseAppLogic.java                                |  22 ++++++++++++++++++++++
 ModuleProject/lib_module_common/src/main/res/values/strings.xml                                                   |   3 +++
 ModuleProject/lib_module_common/src/test/java/info/hook/com/lib_module_common/ExampleUnitTest.java                |  17 +++++++++++++++++
 ModuleProject/lib_network/build.gradle                                                                            |   6 +++++-
 ModuleProject/settings.gradle                                                                                     |   2 +-
 47 files changed, 1078 insertions(+), 241 deletions(-)
 create mode 100644 ModuleProject/app/src/main/java/com/hikcreate/app/AppActivityLifeCycle.java
 create mode 100644 ModuleProject/app/src/main/java/com/hikcreate/app/AppAppLogic.java
 delete mode 100644 ModuleProject/app/src/main/java/com/hikcreate/app/AppBaseContext.java
 create mode 100644 ModuleProject/app/src/main/java/com/hikcreate/app/CommonApplication.java
 create mode 100644 ModuleProject/app/src/main/java/com/hikcreate/temp/TestBean.java
 delete mode 100644 ModuleProject/app_common/src/main/java/com/hikcreate/app/AppContext.java
 create mode 100644 ModuleProject/app_login/src/main/java/com/hikcreate/test/CommonApplication.java
 create mode 100644 ModuleProject/app_login/src/main/java/com/login/LoginActivityLifeCycle.java
 create mode 100644 ModuleProject/app_login/src/main/java/com/login/LoginAppLogic.java
 create mode 100644 ModuleProject/config/config_demo
 delete mode 100644 ModuleProject/lib_data_drive/src/main/java/com/data/bean/GeneralMessageBean.java
 delete mode 100644 ModuleProject/lib_data_drive/src/main/java/com/data/driver/MessageWrap.java
 delete mode 100644 ModuleProject/lib_data_drive/src/main/java/com/data/util/ObjectUtil.java
 create mode 100644 ModuleProject/lib_data_drive/src/main/java/com/message/bean/GeneralMessageBean.java
 create mode 100644 ModuleProject/lib_data_drive/src/main/java/com/message/driver/MessageWrap.java
 create mode 100644 ModuleProject/lib_data_drive/src/main/java/com/message/util/ObjectUtil.java
 create mode 100644 ModuleProject/lib_module_common/.gitignore
 create mode 100644 ModuleProject/lib_module_common/build.gradle
 create mode 100644 ModuleProject/lib_module_common/proguard-rules.pro
 create mode 100644 ModuleProject/lib_module_common/src/androidTest/java/info/hook/com/lib_module_common/ExampleInstrumentedTest.java
 create mode 100644 ModuleProject/lib_module_common/src/main/AndroidManifest.xml
 create mode 100644 ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/AppContext.java
 create mode 100644 ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseActivityLifeLogic.java
 create mode 100644 ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseAppLogic.java
 create mode 100644 ModuleProject/lib_module_common/src/main/res/values/strings.xml
 create mode 100644 ModuleProject/lib_module_common/src/test/java/info/hook/com/lib_module_common/ExampleUnitTest.java

diff --git a/ModuleProject/.idea/gradle.xml b/ModuleProject/.idea/gradle.xml
index 393fa21..3fffeaa 100644
--- a/ModuleProject/.idea/gradle.xml
+++ b/ModuleProject/.idea/gradle.xml
@@ -19,6 +19,7 @@
             <option value="$PROJECT_DIR$/lib_baidu_textdect" />
             <option value="$PROJECT_DIR$/lib_common_ui" />
             <option value="$PROJECT_DIR$/lib_data_drive" />
+            <option value="$PROJECT_DIR$/lib_module_common" />
             <option value="$PROJECT_DIR$/lib_network" />
           </set>
         </option>
diff --git a/ModuleProject/app/build.gradle b/ModuleProject/app/build.gradle
index 024789b..4dcd4d4 100644
--- a/ModuleProject/app/build.gradle
+++ b/ModuleProject/app/build.gradle
@@ -14,7 +14,15 @@ android {
         targetSdkVersion build_config.target_sdk
         versionCode build_config.version_code
         versionName build_config.version_name
+        multiDexEnabled true
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+        javaCompileOptions {
+            annotationProcessorOptions {
+                arguments = [AROUTER_MODULE_NAME  : project.getName(), AROUTER_GENERATE_DOC: "enable", //For ARouter
+                             "room.schemaLocation": "$projectDir/schemas".toString()]
+                //指定room.schemaLocation生成的文件路径
+            }
+        }
     }
 
     sourceSets {
@@ -88,9 +96,13 @@ android {
     lintOptions {
         abortOnError false
     }
-}
 
 
+    dexOptions {
+        preDexLibraries = false
+    }
+}
+
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
diff --git a/ModuleProject/app/src/main/AndroidManifest.xml b/ModuleProject/app/src/main/AndroidManifest.xml
index 4cf24c7..45c8c0d 100644
--- a/ModuleProject/app/src/main/AndroidManifest.xml
+++ b/ModuleProject/app/src/main/AndroidManifest.xml
@@ -5,6 +5,7 @@
     <application
         android:roundIcon="@mipmap/ic_launcher"
         android:allowBackup="false"
+        android:name="com.hikcreate.app.CommonApplication"
         android:theme="@style/Theme.AppCompat.Light.NoActionBar"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
diff --git a/ModuleProject/app/src/main/java/com/hikcreate/app/AppActivityLifeCycle.java b/ModuleProject/app/src/main/java/com/hikcreate/app/AppActivityLifeCycle.java
new file mode 100644
index 0000000..55e4f02
--- /dev/null
+++ b/ModuleProject/app/src/main/java/com/hikcreate/app/AppActivityLifeCycle.java
@@ -0,0 +1,50 @@
+package com.hikcreate.app;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.widget.Toast;
+
+import com.hikcreate.base.BaseActivityLifeLogic;
+
+/**
+ *
+ * @author wangtao55
+ * @date 2019/9/23
+ * @mail wangtao55@hikcreate.com
+ */
+public class AppActivityLifeCycle extends BaseActivityLifeLogic {
+    @Override
+    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
+        Toast.makeText(activity,"AppActivityLifeCycle",Toast.LENGTH_LONG).show();
+    }
+
+    @Override
+    public void onActivityStarted(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivityResumed(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivityPaused(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivityStopped(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivityDestroyed(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivitySaveInstanceState(Activity activity, Bundle savedInstanceState) {
+
+    }
+}
diff --git a/ModuleProject/app/src/main/java/com/hikcreate/app/AppAppLogic.java b/ModuleProject/app/src/main/java/com/hikcreate/app/AppAppLogic.java
new file mode 100644
index 0000000..d65a82f
--- /dev/null
+++ b/ModuleProject/app/src/main/java/com/hikcreate/app/AppAppLogic.java
@@ -0,0 +1,35 @@
+package com.hikcreate.app;
+
+import android.content.res.Configuration;
+import android.util.Log;
+
+import com.hikcreate.base.BaseAppLogic;
+
+/**
+ * 类说明
+ *
+ * @author wangtao55
+ * @date 2019/9/23
+ * @mail wangtao55@hikcreate.com
+ */
+public class AppAppLogic extends BaseAppLogic {
+    @Override
+    public void onCreate() {
+        Log.v("AppAppLogic","onCreate--------------------->");
+    }
+
+    @Override
+    public void onTerminate() {
+        Log.v("AppAppLogic","onTerminate--------------------->");
+    }
+
+    @Override
+    public void onLowMemory() {
+        Log.v("AppAppLogic","onLowMemory--------------------->");
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        Log.v("AppAppLogic","onConfigurationChanged--------------------->");
+    }
+}
diff --git a/ModuleProject/app/src/main/java/com/hikcreate/app/AppBaseContext.java b/ModuleProject/app/src/main/java/com/hikcreate/app/AppBaseContext.java
deleted file mode 100644
index 65c0bfd..0000000
--- a/ModuleProject/app/src/main/java/com/hikcreate/app/AppBaseContext.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.hikcreate.app;
-
-import android.app.Application;
-import android.content.Context;
-import android.support.multidex.MultiDex;
-
-/**
- * app初始化类
- *
- * @author wangtao55
- * @date 2019/9/21
- * @mail wangtao55@hikcreate.com
- */
-public class AppBaseContext extends Application {
-
-    @Override
-    protected void attachBaseContext(Context base) {
-        super.attachBaseContext(base);
-        AppContext.init(base);
-    }
-
-    @Override
-    public void onCreate() {
-        super.onCreate();
-    }
-
-}
diff --git a/ModuleProject/app/src/main/java/com/hikcreate/app/CommonApplication.java b/ModuleProject/app/src/main/java/com/hikcreate/app/CommonApplication.java
new file mode 100644
index 0000000..3d533b9
--- /dev/null
+++ b/ModuleProject/app/src/main/java/com/hikcreate/app/CommonApplication.java
@@ -0,0 +1,46 @@
+package com.hikcreate.app;
+
+import android.app.Application;
+
+import com.hikcreate.base.AppContext;
+
+/**
+ * 类说明
+ *
+ * @author wangtao55
+ * @date 2019/9/23
+ * @mail wangtao55@hikcreate.com
+ */
+public class CommonApplication extends Application {
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        registerAppLife();
+        registerActivityLife();
+        AppContext.getInstance().logicOnCreate(this);
+    }
+
+    private void registerAppLife(){
+        AppContext.getInstance().registerAppLogic("com.login.LoginAppLogic");
+        AppContext.getInstance().registerAppLogic("com.hikcreate.app.AppAppLogic");
+    }
+
+    private void registerActivityLife(){
+        AppContext.getInstance().registerActivityLifeLogic("com.login.LoginActivityLifeCycle");
+        AppContext.getInstance().registerActivityLifeLogic("com.hikcreate.app.AppActivityLifeCycle");
+    }
+
+    @Override
+    public void onTerminate() {
+        super.onTerminate();
+        AppContext.getInstance().logicOnTerminate();
+    }
+
+    @Override
+    public void onLowMemory() {
+        super.onLowMemory();
+        AppContext.getInstance().logicOnLowMemory();
+    }
+
+}
diff --git a/ModuleProject/app/src/main/java/com/hikcreate/temp/TestBean.java b/ModuleProject/app/src/main/java/com/hikcreate/temp/TestBean.java
new file mode 100644
index 0000000..9a49d00
--- /dev/null
+++ b/ModuleProject/app/src/main/java/com/hikcreate/temp/TestBean.java
@@ -0,0 +1,21 @@
+package com.hikcreate.temp;
+
+/**
+ * 类说明
+ *
+ * @author wangtao55
+ * @date 2019/9/23
+ * @mail wangtao55@hikcreate.com
+ */
+public class TestBean {
+
+    public String tempValue;
+
+    public String getTempValue() {
+        return tempValue;
+    }
+
+    public void setTempValue(String tempValue) {
+        this.tempValue = tempValue;
+    }
+}
diff --git a/ModuleProject/app/src/main/java/com/hikcreate/ui/testActivity.java b/ModuleProject/app/src/main/java/com/hikcreate/ui/testActivity.java
index 68d4440..88a8b60 100644
--- a/ModuleProject/app/src/main/java/com/hikcreate/ui/testActivity.java
+++ b/ModuleProject/app/src/main/java/com/hikcreate/ui/testActivity.java
@@ -5,8 +5,12 @@ import android.os.Bundle;
 import android.support.v4.app.FragmentTransaction;
 import android.support.v7.app.AppCompatActivity;
 
+import com.message.bean.GeneralMessageBean;
+import com.message.driver.MessageWrap;
+import com.google.gson.Gson;
 import com.hikcreate.login.testLoginActivity;
 import com.hikcreate.passport.TestFragment;
+import com.hikcreate.temp.TestBean;
 import com.module.hikcreate.R;
 
 
@@ -28,8 +32,7 @@ public class testActivity extends AppCompatActivity {
             startActivity(mIntent);
         });
         findViewById(R.id.mBtnPassport).setOnClickListener(v -> {
-            Intent mIntent = new Intent(testActivity.this,testLoginActivity.class);
-            startActivity(mIntent);
+
         });
         FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
         transaction.add(R.id.test_passport,new TestFragment());
diff --git a/ModuleProject/app/src/main/res/layout/app_test.xml b/ModuleProject/app/src/main/res/layout/app_test.xml
index 258bee8..ce3d4da 100644
--- a/ModuleProject/app/src/main/res/layout/app_test.xml
+++ b/ModuleProject/app/src/main/res/layout/app_test.xml
@@ -19,7 +19,7 @@
     <Button
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:text="给通行证模块发送信息"
+        android:text="发送Message信息"
         android:layout_marginTop="10dp"
         android:id="@+id/mBtnPassport"
         />
diff --git a/ModuleProject/app_common/build.gradle b/ModuleProject/app_common/build.gradle
index 0ea4cec..3eab681 100644
--- a/ModuleProject/app_common/build.gradle
+++ b/ModuleProject/app_common/build.gradle
@@ -11,6 +11,13 @@ android {
         versionCode build_config.version_code
         versionName build_config.version_name
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+        javaCompileOptions {
+            annotationProcessorOptions {
+                arguments = [AROUTER_MODULE_NAME  : project.getName(), AROUTER_GENERATE_DOC: "enable", //For ARouter
+                             "room.schemaLocation": "$projectDir/schemas".toString()]
+                //指定room.schemaLocation生成的文件路径
+            }
+        }
     }
 
     buildTypes {
@@ -20,9 +27,16 @@ android {
         }
     }
 
+    dexOptions {
+        preDexLibraries = false
+    }
 }
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
     api project(':lib_app_common')
+    api project(':lib_common_ui')
+    api project(':lib_data_drive')
+    api project(':lib_network')
+    api project(':lib_module_common')
 }
diff --git a/ModuleProject/app_common/src/main/java/com/hikcreate/app/AppContext.java b/ModuleProject/app_common/src/main/java/com/hikcreate/app/AppContext.java
deleted file mode 100644
index b4e3d7f..0000000
--- a/ModuleProject/app_common/src/main/java/com/hikcreate/app/AppContext.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.hikcreate.app;
-
-import android.content.Context;
-import android.support.multidex.MultiDex;
-
-/**
- * app初始化类
- *
- * @author wangtao55
- * @date 2019/9/21
- * @mail wangtao55@hikcreate.com
- */
-public class AppContext {
-
-    private  Context mContext;
-
-
-    public static void init(Context application){
-        MultiDex.install(application);
-    }
-}
diff --git a/ModuleProject/app_login/build.gradle b/ModuleProject/app_login/build.gradle
index 2a86df3..d4ccdd2 100644
--- a/ModuleProject/app_login/build.gradle
+++ b/ModuleProject/app_login/build.gradle
@@ -6,14 +6,22 @@ if (build_module == build_module_login) {
 android {
     defaultConfig {
         if (build_module == build_module_login) {
-            applicationId build_modele_login_app_id
+            applicationId build_modele_app_id +"."+ project.getName()
         }
         minSdkVersion build_config.min_sdk
         targetSdkVersion build_config.target_sdk
         versionCode build_config.version_code
         versionName build_config.version_name
         resourcePrefix build_modele_login_resourcePrefix
+        multiDexEnabled true
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+        javaCompileOptions {
+            annotationProcessorOptions {
+                arguments = [AROUTER_MODULE_NAME  : project.getName(), AROUTER_GENERATE_DOC: "enable", //For ARouter
+                             "room.schemaLocation": "$projectDir/schemas".toString()]
+                //指定room.schemaLocation生成的文件路径
+            }
+        }
     }
     compileSdkVersion build_config.compile_sdk
 
@@ -44,15 +52,18 @@ android {
             } else {
                 manifest.srcFile 'src/main/AndroidManifest.xml'
                 java {
-                    exclude 'com/duiafudao/app_login/application/**'
+                    exclude 'com/hikcreate/test/**'
                 }
             }
         }
     }
+
+    dexOptions {
+        preDexLibraries = false
+    }
 }
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    api project(':lib_app_common')
     api project(':app_common')
 }
diff --git a/ModuleProject/app_login/src/main/java/com/hikcreate/login/testLoginActivity.java b/ModuleProject/app_login/src/main/java/com/hikcreate/login/testLoginActivity.java
index 1977635..f0573ca 100644
--- a/ModuleProject/app_login/src/main/java/com/hikcreate/login/testLoginActivity.java
+++ b/ModuleProject/app_login/src/main/java/com/hikcreate/login/testLoginActivity.java
@@ -19,4 +19,9 @@ public class testLoginActivity extends AppCompatActivity {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.lg_app_test);
     }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+    }
 }
diff --git a/ModuleProject/app_login/src/main/java/com/hikcreate/test/CommonApplication.java b/ModuleProject/app_login/src/main/java/com/hikcreate/test/CommonApplication.java
new file mode 100644
index 0000000..26eaedd
--- /dev/null
+++ b/ModuleProject/app_login/src/main/java/com/hikcreate/test/CommonApplication.java
@@ -0,0 +1,35 @@
+package com.hikcreate.test;
+
+import android.app.Application;
+
+import com.hikcreate.base.AppContext;
+
+/**
+ *
+ * @author wangtao55
+ * @date 2019/9/23
+ * @mail wangtao55@hikcreate.com
+ */
+public class CommonApplication extends Application {
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        AppContext.getInstance().registerAppLogic("com.login.LoginAppLogic");
+        AppContext.getInstance().registerActivityLifeLogic("com.login.LoginActivityLifeCycle");
+        AppContext.getInstance().logicOnCreate(this);
+    }
+
+    @Override
+    public void onTerminate() {
+        super.onTerminate();
+        AppContext.getInstance().logicOnTerminate();
+    }
+
+    @Override
+    public void onLowMemory() {
+        super.onLowMemory();
+        AppContext.getInstance().logicOnLowMemory();
+    }
+
+}
diff --git a/ModuleProject/app_login/src/main/java/com/login/LoginActivityLifeCycle.java b/ModuleProject/app_login/src/main/java/com/login/LoginActivityLifeCycle.java
new file mode 100644
index 0000000..fd70f88
--- /dev/null
+++ b/ModuleProject/app_login/src/main/java/com/login/LoginActivityLifeCycle.java
@@ -0,0 +1,50 @@
+package com.login;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.widget.Toast;
+
+import com.hikcreate.base.BaseActivityLifeLogic;
+
+/**
+ *
+ * @author wangtao55
+ * @date 2019/9/23
+ * @mail wangtao55@hikcreate.com
+ */
+public class LoginActivityLifeCycle extends BaseActivityLifeLogic {
+    @Override
+    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
+        Toast.makeText(activity,"我来到了登录页面",Toast.LENGTH_LONG).show();
+    }
+
+    @Override
+    public void onActivityStarted(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivityResumed(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivityPaused(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivityStopped(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivityDestroyed(Activity activity) {
+
+    }
+
+    @Override
+    public void onActivitySaveInstanceState(Activity activity, Bundle savedInstanceState) {
+
+    }
+}
diff --git a/ModuleProject/app_login/src/main/java/com/login/LoginAppLogic.java b/ModuleProject/app_login/src/main/java/com/login/LoginAppLogic.java
new file mode 100644
index 0000000..ee05ad8
--- /dev/null
+++ b/ModuleProject/app_login/src/main/java/com/login/LoginAppLogic.java
@@ -0,0 +1,35 @@
+package com.login;
+
+import android.content.res.Configuration;
+import android.util.Log;
+
+import com.hikcreate.base.BaseAppLogic;
+
+/**
+ * 类说明
+ *
+ * @author wangtao55
+ * @date 2019/9/23
+ * @mail wangtao55@hikcreate.com
+ */
+public class LoginAppLogic extends BaseAppLogic {
+    @Override
+    public void onCreate() {
+        Log.v("LoginAppLogic","onCreate--------------------->");
+    }
+
+    @Override
+    public void onTerminate() {
+        Log.v("LoginAppLogic","onTerminate--------------------->");
+    }
+
+    @Override
+    public void onLowMemory() {
+        Log.v("LoginAppLogic","onLowMemory--------------------->");
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        Log.v("LoginAppLogic","onConfigurationChanged--------------------->");
+    }
+}
diff --git a/ModuleProject/app_login/src/main/module/AndroidManifest.xml b/ModuleProject/app_login/src/main/module/AndroidManifest.xml
index 38d9e24..20c9bb9 100644
--- a/ModuleProject/app_login/src/main/module/AndroidManifest.xml
+++ b/ModuleProject/app_login/src/main/module/AndroidManifest.xml
@@ -6,6 +6,7 @@
     <application
         android:roundIcon="@mipmap/lg_ic_launcher"
         android:allowBackup="false"
+        android:name="com.hikcreate.test.CommonApplication"
         android:theme="@style/Theme.AppCompat.Light.NoActionBar"
         android:icon="@mipmap/lg_ic_launcher"
         android:label="@string/lg_app_name_test"
diff --git a/ModuleProject/app_passport/build.gradle b/ModuleProject/app_passport/build.gradle
index 73a1272..5edc651 100644
--- a/ModuleProject/app_passport/build.gradle
+++ b/ModuleProject/app_passport/build.gradle
@@ -7,14 +7,22 @@ if (build_module == build_module_passport) {
 android {
     defaultConfig {
         if (build_module == build_module_passport) {
-            applicationId build_modele_login_app_id
+            applicationId build_modele_app_id +"."+ project.getName()
         }
         minSdkVersion build_config.min_sdk
         targetSdkVersion build_config.target_sdk
         versionCode build_config.version_code
         versionName build_config.version_name
         resourcePrefix build_modele_passport_resourcePrefix
+        multiDexEnabled true
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+        javaCompileOptions {
+            annotationProcessorOptions {
+                arguments = [AROUTER_MODULE_NAME  : project.getName(), AROUTER_GENERATE_DOC: "enable", //For ARouter
+                             "room.schemaLocation": "$projectDir/schemas".toString()]
+                //指定room.schemaLocation生成的文件路径
+            }
+        }
     }
     compileSdkVersion build_config.compile_sdk
 
@@ -25,6 +33,9 @@ android {
         }
     }
 
+    dexOptions {
+        preDexLibraries = false
+    }
 }
 
 dependencies {
diff --git a/ModuleProject/app_passport/src/main/java/com/hikcreate/passport/TestFragment.java b/ModuleProject/app_passport/src/main/java/com/hikcreate/passport/TestFragment.java
index a9ed91a..42de020 100644
--- a/ModuleProject/app_passport/src/main/java/com/hikcreate/passport/TestFragment.java
+++ b/ModuleProject/app_passport/src/main/java/com/hikcreate/passport/TestFragment.java
@@ -5,8 +5,14 @@ import android.support.v4.app.Fragment;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Toast;
 
 import com.app.passport.R;
+import com.message.bean.GeneralMessageBean;
+import com.message.driver.MessageWrap;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
 
 
 /**
@@ -21,6 +27,7 @@ public class TestFragment extends Fragment {
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        MessageWrap.getMessageWrapDefault().register(this);
     }
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
@@ -28,9 +35,20 @@ public class TestFragment extends Fragment {
         return inflater.inflate(R.layout.passport_test_fragment,container,false);
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void test(GeneralMessageBean bean){
+        Toast.makeText(getActivity(),MessageWrap.getMessageWrapDefault().
+                getMessageInfo(bean,"tempValue"),Toast.LENGTH_LONG).show();
+    }
+
     @Override
     public void onPause() {
         super.onPause();
     }
 
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        MessageWrap.getMessageWrapDefault().unregister(this);
+    }
 }
diff --git a/ModuleProject/config/app_config.gradle b/ModuleProject/config/app_config.gradle
index 12e320d..365a695 100644
--- a/ModuleProject/config/app_config.gradle
+++ b/ModuleProject/config/app_config.gradle
@@ -63,11 +63,18 @@ versions.bugly_native_crashreport ='latest.release'
 versions.meituanWalle = '1.1.3'
 versions.eventbus = "3.1.1"
 versions.gson = "2.8.0"
+versions.arouter = "2.8.0"
+versions.aRouterApi = '1.4.1'
+versions.aRouterCompiler = '1.2.2'
 ext.versions = versions
 
 //deps依赖库
 ext.deps = [:]
 def deps = [:]
+
+deps.aRouterApi =  "com.alibaba:arouter-api:$versions.aRouterApi"
+deps.aRouterCompiler = "com.alibaba:arouter-compiler:$versions.aRouterCompiler"
+
 // App's support dependencies
 deps.appcompat = "com.android.support:appcompat-v7:$versions.supportLibraryVersion"
 deps.multidex = "com.android.support:multidex:$versions.multidexVersion"
diff --git a/ModuleProject/config/app_module_config.gradle b/ModuleProject/config/app_module_config.gradle
index f41caa7..553b7ed 100644
--- a/ModuleProject/config/app_module_config.gradle
+++ b/ModuleProject/config/app_module_config.gradle
@@ -9,12 +9,10 @@ ext.build_modele_app_id = "com.module.hikcreate"
 
 //登录模块
 ext.build_module_login = build_module_login
-ext.build_modele_login_app_id = "com.app.login"
 ext.build_modele_login_resourcePrefix = "lg_"
 
 //通行证模块
 ext.build_module_passport = build_module_passport
-ext.build_modele_passport_app_id = "com.app.passport"
 ext.build_modele_passport_resourcePrefix = "passport_"
 
 //百度相关lib_module
diff --git a/ModuleProject/config/config_demo b/ModuleProject/config/config_demo
new file mode 100644
index 0000000..e808ef0
--- /dev/null
+++ b/ModuleProject/config/config_demo
@@ -0,0 +1,58 @@
+if (build_module == build_module_login) { //替换成对应的module代号值
+    apply plugin: 'com.android.application'
+} else {
+    apply plugin: 'com.android.library'
+}
+android {
+    defaultConfig {
+        if (build_module == build_module_login) {//替换成对应的module代号值
+            applicationId applicationId +"."+ project.getName()
+        }
+        minSdkVersion build_config.min_sdk
+        targetSdkVersion build_config.target_sdk
+        versionCode build_config.version_code
+        versionName build_config.version_name
+        resourcePrefix build_modele_login_resourcePrefix//替换成对应的module限制字符串
+        multiDexEnabled true
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+    }
+    compileSdkVersion build_config.compile_sdk
+
+    dexOptions {
+        javaMaxHeapSize "4g"
+        preDexLibraries = false
+        jumboMode = true
+    }
+
+    dataBinding {
+        enabled = true
+    }
+
+    lintOptions {
+        abortOnError false
+    }
+
+    compileOptions {
+        encoding = 'utf-8'
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+
+    sourceSets {
+        main {
+            if (rootProject.build_module == build_module_login) {//替换成对应的module代号值
+                manifest.srcFile 'src/main/module/AndroidManifest.xml'
+            } else {
+                manifest.srcFile 'src/main/AndroidManifest.xml'
+                java {
+                    exclude 'com/duiafudao/app_login/application/**'
+                }
+            }
+        }
+    }
+}
+
+dependencies {
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+
+}
diff --git a/ModuleProject/lib_app_common/build.gradle b/ModuleProject/lib_app_common/build.gradle
index d3ee4dc..e439a8c 100644
--- a/ModuleProject/lib_app_common/build.gradle
+++ b/ModuleProject/lib_app_common/build.gradle
@@ -8,6 +8,13 @@ android {
         versionCode build_config.version_code
         versionName build_config.version_name
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+        javaCompileOptions {
+            annotationProcessorOptions {
+                arguments = [AROUTER_MODULE_NAME  : project.getName(), AROUTER_GENERATE_DOC: "enable", //For ARouter
+                             "room.schemaLocation": "$projectDir/schemas".toString()]
+                //指定room.schemaLocation生成的文件路径
+            }
+        }
     }
     buildTypes {
         release {
@@ -22,6 +29,11 @@ android {
         targetCompatibility JavaVersion.VERSION_1_8
     }
 
+
+
+    dexOptions {
+        preDexLibraries = false
+    }
     dataBinding {
         enabled = true
     }
@@ -30,14 +42,6 @@ android {
 dependencies {
     api fileTree(dir: 'libs', include: ['*.jar'])
 
-//    api project(':lib_baidu_audiodect')
-//    api project(':lib_baidu_facedect')
-//    api project(':lib_baidu_textdect')
-//    api project(':lib_common_ui')
-//    api project(':lib_data_drive')
-//    api project(':lib_network')
-
-
     // App's support dependencies
     api ([
             deps.appcompat,
@@ -65,5 +69,8 @@ dependencies {
     annotationProcessor deps.glide_compiler
     api deps.jsbridge
     api deps.otto
-
+    api deps.gson
+    api deps.eventbus
+    api deps.aRouterApi,{ exclude group: 'com.android.support:appcompat-v7:25.2.0' }
+    annotationProcessor deps.aRouterCompiler
 }
diff --git a/ModuleProject/lib_baidu_audiodect/build.gradle b/ModuleProject/lib_baidu_audiodect/build.gradle
index 22a1118..0b1d060 100644
--- a/ModuleProject/lib_baidu_audiodect/build.gradle
+++ b/ModuleProject/lib_baidu_audiodect/build.gradle
@@ -23,13 +23,18 @@ android {
         targetCompatibility JavaVersion.VERSION_1_8
     }
 
+
+    dexOptions {
+        preDexLibraries = false
+    }
+
     dataBinding {
         enabled = true
     }
 }
 
 dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
-    implementation  deps.appcompat
-    implementation deps.rxandroid2
+    compileOnly fileTree(dir: 'libs', include: ['*.jar'])
+    compileOnly  deps.appcompat
+    compileOnly deps.rxandroid2
 }
diff --git a/ModuleProject/lib_baidu_facedect/build.gradle b/ModuleProject/lib_baidu_facedect/build.gradle
index 4d09df0..0137d6d 100644
--- a/ModuleProject/lib_baidu_facedect/build.gradle
+++ b/ModuleProject/lib_baidu_facedect/build.gradle
@@ -26,6 +26,9 @@ android {
         enabled = true
     }
 
+    dexOptions {
+        preDexLibraries = false
+    }
     repositories {
         flatDir {
             dirs 'libs', 'aars'
@@ -35,7 +38,7 @@ android {
 }
 
 dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
-    implementation deps.support_v4
-    implementation deps.constraint_layout
+    compileOnly fileTree(dir: 'libs', include: ['*.jar'])
+    compileOnly deps.support_v4
+    compileOnly deps.constraint_layout
 }
diff --git a/ModuleProject/lib_baidu_textdect/build.gradle b/ModuleProject/lib_baidu_textdect/build.gradle
index 0400d44..2460610 100644
--- a/ModuleProject/lib_baidu_textdect/build.gradle
+++ b/ModuleProject/lib_baidu_textdect/build.gradle
@@ -23,6 +23,9 @@ android {
         targetCompatibility JavaVersion.VERSION_1_8
     }
 
+    dexOptions {
+        preDexLibraries = false
+    }
     dataBinding {
         enabled = true
     }
diff --git a/ModuleProject/lib_common_ui/build.gradle b/ModuleProject/lib_common_ui/build.gradle
index 1b775e2..6ed6a44 100644
--- a/ModuleProject/lib_common_ui/build.gradle
+++ b/ModuleProject/lib_common_ui/build.gradle
@@ -9,8 +9,12 @@ android {
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
         compileSdkVersion build_config.compile_sdk
     }
+
+    dexOptions {
+        preDexLibraries = false
+    }
 }
 
 dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    compileOnly fileTree(dir: 'libs', include: ['*.jar'])
 }
diff --git a/ModuleProject/lib_data_drive/build.gradle b/ModuleProject/lib_data_drive/build.gradle
index 25abc56..fb72602 100644
--- a/ModuleProject/lib_data_drive/build.gradle
+++ b/ModuleProject/lib_data_drive/build.gradle
@@ -6,8 +6,8 @@ android {
         minSdkVersion build_config.min_sdk
         targetSdkVersion build_config.target_sdk
         resourcePrefix build_modele_baidu_resourcePrefix
-        versionCode 1
-        versionName "1.0"
+        versionCode build_config.version_code
+        versionName build_config.version_name
     }
 
     buildTypes {
@@ -22,9 +22,14 @@ android {
         sourceCompatibility JavaVersion.VERSION_1_8
         targetCompatibility JavaVersion.VERSION_1_8
     }
+
+    dexOptions {
+        preDexLibraries = false
+    }
 }
 
 dependencies {
     implementation fileTree(dir: 'libs', include: ['*.jar'])
-    deps.eventbus
+    implementation deps.eventbus
+    implementation deps.gson
 }
diff --git a/ModuleProject/lib_data_drive/src/main/java/com/data/bean/GeneralMessageBean.java b/ModuleProject/lib_data_drive/src/main/java/com/data/bean/GeneralMessageBean.java
deleted file mode 100644
index 8d4f348..0000000
--- a/ModuleProject/lib_data_drive/src/main/java/com/data/bean/GeneralMessageBean.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.data.bean;
-
-/**
- * 事件驱动消息流类
- *
- * @author wangtao55
- * @date 2019/9/19
- * @mail wangtao55@hikcreate.com
- */
-public class GeneralMessageBean {
-    private String dataAction;//消息来自于哪个事件
-    private String moduleName;//消息moduleName
-    private String dataClassName;//用于通过反射获取类的字符串
-    private String messageJsonData;//message的json数据
-
-    public String getDataAction() {
-        return dataAction;
-    }
-
-    public void setDataAction(String dataAction) {
-        this.dataAction = dataAction;
-    }
-
-    public String getModuleName() {
-        return moduleName;
-    }
-
-    public void setModuleName(String moduleName) {
-        this.moduleName = moduleName;
-    }
-
-    public String getDataClassName() {
-        return dataClassName;
-    }
-
-    public void setDataClassName(String dataClassName) {
-        this.dataClassName = dataClassName;
-    }
-
-    public String getMessageJsonData() {
-        return messageJsonData;
-    }
-
-    public void setMessageJsonData(String messageJsonData) {
-        this.messageJsonData = messageJsonData;
-    }
-}
diff --git a/ModuleProject/lib_data_drive/src/main/java/com/data/driver/MessageWrap.java b/ModuleProject/lib_data_drive/src/main/java/com/data/driver/MessageWrap.java
deleted file mode 100644
index 6b9bef2..0000000
--- a/ModuleProject/lib_data_drive/src/main/java/com/data/driver/MessageWrap.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.data.driver;
-
-import com.data.bean.GeneralMessageBean;
-
-/**
- * author : taowang
- * date :2019/9/19
- * description:消息控制中枢
- **/
-public class MessageWrap {
-
-    public static void sendMessage(GeneralMessageBean mGeneralMessageBean){
-
-//        EventBus.getDefault().post(mGeneralMessageBean);
-
-    }
-
-}
diff --git a/ModuleProject/lib_data_drive/src/main/java/com/data/util/ObjectUtil.java b/ModuleProject/lib_data_drive/src/main/java/com/data/util/ObjectUtil.java
deleted file mode 100644
index 117f512..0000000
--- a/ModuleProject/lib_data_drive/src/main/java/com/data/util/ObjectUtil.java
+++ /dev/null
@@ -1,97 +0,0 @@
-package com.data.util;
-
-import java.lang.reflect.Method;
-
-/**
- * author : taowang
- * date :2019/9/19
- * description:消息实体操作类
- **/
-public class ObjectUtil {
-
-    /**
-     * @param className   : 全路径的类名
-     * @param dataContent
-     * @return
-     */
-    public static Object getObjectBean(String className, String dataContent) {
-
-        Object messageBeanObject = null;
-
-        try {
-
-            Class messageClass = Class.forName(className);
-            messageBeanObject = messageClass.newInstance();
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return messageBeanObject;
-    }
-
-
-
-    private static Object invokeMethod(Object object,String methodName){
-
-        try {
-
-            Method method = object.getClass().getMethod(methodName);
-            return method.invoke(object);
-
-
-        } catch (Exception e) {
-
-            e.printStackTrace();
-
-        }
-
-        return null;
-    }
-
-
-
-
-    private static Object getInfoByMethod(String className, String dataContent,String methodName){
-        return invokeMethod(getObjectBean(className,dataContent),methodName);
-    }
-
-
-
-
-    public static <T> T createInstance(Class<T> clz) {
-
-        try {
-
-            return clz.newInstance();
-
-        } catch (InstantiationException e) {
-            e.printStackTrace();
-        } catch (IllegalAccessException e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
-
-
-
-    public static  <T> T createInstance(Class<T> checkType,String className){
-
-        try {
-
-            Class<T> clz = (Class<T>)Class.forName(className);
-            Object obj = clz.newInstance();
-            if (!checkType.isInstance(obj)) {
-                throw new Exception("类型不匹配");
-            }
-            return (T)obj;
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-
-        return null;
-    }
-
-}
diff --git a/ModuleProject/lib_data_drive/src/main/java/com/message/bean/GeneralMessageBean.java b/ModuleProject/lib_data_drive/src/main/java/com/message/bean/GeneralMessageBean.java
new file mode 100644
index 0000000..d08fe72
--- /dev/null
+++ b/ModuleProject/lib_data_drive/src/main/java/com/message/bean/GeneralMessageBean.java
@@ -0,0 +1,55 @@
+package com.message.bean;
+
+/**
+ * 事件驱动消息流类
+ *
+ * @author wangtao55
+ * @date 2019/9/19
+ * @mail wangtao55@hikcreate.com
+ */
+public class GeneralMessageBean {
+    private String dataAction;//消息来自于哪个事件
+    private String moduleName;//消息moduleName
+    private String dataClassName;//用于通过反射获取类的字符串
+    private String messageJsonData;//message的json数据
+    private String extraJsonData;//额外的消息的json数据
+    public String getDataAction() {
+        return dataAction;
+    }
+
+    public void setDataAction(String dataAction) {
+        this.dataAction = dataAction;
+    }
+
+    public String getModuleName() {
+        return moduleName;
+    }
+
+    public void setModuleName(String moduleName) {
+        this.moduleName = moduleName;
+    }
+
+    public String getDataClassName() {
+        return dataClassName;
+    }
+
+    public void setDataClassName(String dataClassName) {
+        this.dataClassName = dataClassName;
+    }
+
+    public String getMessageJsonData() {
+        return messageJsonData;
+    }
+
+    public void setMessageJsonData(String messageJsonData) {
+        this.messageJsonData = messageJsonData;
+    }
+
+    public String getExtraJsonData() {
+        return extraJsonData;
+    }
+
+    public void setExtraJsonData(String extraJsonData) {
+        this.extraJsonData = extraJsonData;
+    }
+}
diff --git a/ModuleProject/lib_data_drive/src/main/java/com/message/driver/MessageWrap.java b/ModuleProject/lib_data_drive/src/main/java/com/message/driver/MessageWrap.java
new file mode 100644
index 0000000..8ab88ac
--- /dev/null
+++ b/ModuleProject/lib_data_drive/src/main/java/com/message/driver/MessageWrap.java
@@ -0,0 +1,77 @@
+package com.message.driver;
+
+import android.util.Log;
+import com.message.bean.GeneralMessageBean;
+import com.message.util.ObjectUtil;
+import org.greenrobot.eventbus.EventBus;
+import info.hook.com.lib_data_drive.BuildConfig;
+
+/**
+ * author : taowang
+ * date :2019/9/19
+ * description:消息控制中枢
+ **/
+public final class MessageWrap {
+
+    private static volatile MessageWrap defaultInstance;
+    private  EventBus messageEventBus;
+    private  int messageCount; //消息数量
+    private static final String MESSAGE_TAG = "HIK-MessageWrap";
+
+    public static MessageWrap getMessageWrapDefault() {
+        if (defaultInstance == null) {
+            synchronized (MessageWrap.class) {
+                if (defaultInstance == null) {
+                    defaultInstance = new MessageWrap();
+                }
+            }
+        }
+        return defaultInstance;
+    }
+
+    private MessageWrap() {
+        messageEventBus = new EventBus();
+
+    }
+
+    public void register(Object subscriber) {
+        messageEventBus.register(subscriber);
+        messageCount++;
+    }
+
+    public int getMessageCount() {
+        return messageCount;
+    }
+
+    public void unregister(Object subscriber) {
+        messageEventBus.unregister(subscriber);
+        messageCount--;
+    }
+
+    public void sendMessage(GeneralMessageBean mGeneralMessageBean) {
+        //可以添加一些业务处理的代码,控制消息的发送
+        messageEventBus.post(mGeneralMessageBean);
+        showInfo(mGeneralMessageBean);
+    }
+
+    public void sendMessageSticky(GeneralMessageBean mGeneralMessageBean) {
+        //可以添加一些业务处理的代码,控制消息的发送
+        messageEventBus.postSticky(mGeneralMessageBean);
+        showInfo(mGeneralMessageBean);
+    }
+
+    public String getMessageInfo(GeneralMessageBean mGeneralMessageBean, String name) {
+        return ObjectUtil.readAttributeValueByName(mGeneralMessageBean, name);
+    }
+
+    private void showInfo(GeneralMessageBean mGeneralMessageBean) {
+        if (BuildConfig.DEBUG) {
+            //打印消息信息
+            Log.v(MESSAGE_TAG, "moduleName-----" + mGeneralMessageBean.getModuleName());
+            Log.v(MESSAGE_TAG, "dataAction-----" + mGeneralMessageBean.getDataAction());
+            Log.v(MESSAGE_TAG, "dataClassName-----" + mGeneralMessageBean.getDataClassName());
+            Log.v(MESSAGE_TAG, "messageJsonData-----" + mGeneralMessageBean.getMessageJsonData());
+        }
+    }
+
+}
diff --git a/ModuleProject/lib_data_drive/src/main/java/com/message/util/ObjectUtil.java b/ModuleProject/lib_data_drive/src/main/java/com/message/util/ObjectUtil.java
new file mode 100644
index 0000000..8688f4d
--- /dev/null
+++ b/ModuleProject/lib_data_drive/src/main/java/com/message/util/ObjectUtil.java
@@ -0,0 +1,124 @@
+package com.message.util;
+
+import com.message.bean.GeneralMessageBean;
+import com.google.gson.Gson;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+/**
+ * author : taowang
+ * date :2019/9/19
+ * description:消息实体操作类
+ **/
+public class ObjectUtil {
+
+    /**
+     * @param className   : 全路径的类名
+     * @param dataContent
+     * @return
+     */
+    public static Object getObjectBean(String className, String dataContent) {
+        Object messageBeanObject = null;
+        try {
+            Class messageClass = Class.forName(className);
+            messageBeanObject = messageClass.newInstance();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return messageBeanObject;
+    }
+
+    private static Object invokeMethod(Object object,String methodName){
+        try {
+            Method method = object.getClass().getMethod(methodName);
+            return method.invoke(object);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    private static Object getInfoByMethod(String className, String dataContent,String methodName){
+        return invokeMethod(getObjectBean(className,dataContent),methodName);
+    }
+
+
+    public static <T> T createInstance(Class<T> clz) {
+        try {
+            return clz.newInstance();
+        } catch (InstantiationException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    public static  <T> T createInstance(Class<T> checkType,String className){
+
+        try {
+            Class<T> clz = (Class<T>)Class.forName(className);
+            Object obj = clz.newInstance();
+            if (!checkType.isInstance(obj)) {
+                throw new Exception("类型不匹配");
+            }
+            return (T)obj;
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+    public static void readAttributeValue(Object obj){
+        String nameValues ="";
+        Class cls = obj.getClass();
+        Field[] fields = cls.getDeclaredFields();
+        for (int i=0;i<fields.length;i++){
+            try {
+                Field field = fields[i];
+                field.setAccessible(true);
+                Object value = field.get(obj);
+                nameValues += field.getName()+":"+value+",";
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        }
+        int lastIndex = nameValues.lastIndexOf(",");
+        String  result= nameValues.substring(0,lastIndex);
+        System.out.println(result);
+    }
+
+    public static String  readAttributeValueByName(Object obj,String name){
+        Class cls = obj.getClass();
+        Field[] fields = cls.getDeclaredFields();
+        for (Field field : fields) {
+            try {
+                field.setAccessible(true);
+                if (name.equals(field.getName())) {
+                    return (String) field.get(obj);
+                }
+            } catch (IllegalAccessException e) {
+                e.printStackTrace();
+            }
+        }
+      return null;
+    }
+
+    public static String  readAttributeValueByMethod(GeneralMessageBean mGeneralMessageBean, String name){
+        Object message = getObjectBean(mGeneralMessageBean.getDataClassName(),mGeneralMessageBean.getMessageJsonData());
+        return (String) invokeMethod(message,name);
+    }
+
+    public static String  readAttributeValueByName(GeneralMessageBean mGeneralMessageBean, String name) {
+        try {
+            Class messageClass = Class.forName(mGeneralMessageBean.getDataClassName());
+            Gson gson = new Gson();
+            Object jsonObject = gson.fromJson(mGeneralMessageBean.getExtraJsonData(), messageClass);
+            return readAttributeValueByName(jsonObject, name);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return  null;
+    }
+}
diff --git a/ModuleProject/lib_module_common/.gitignore b/ModuleProject/lib_module_common/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/ModuleProject/lib_module_common/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/ModuleProject/lib_module_common/build.gradle b/ModuleProject/lib_module_common/build.gradle
new file mode 100644
index 0000000..50b8a0b
--- /dev/null
+++ b/ModuleProject/lib_module_common/build.gradle
@@ -0,0 +1,37 @@
+apply plugin: 'com.android.library'
+android {
+    defaultConfig {
+        minSdkVersion build_config.min_sdk
+        targetSdkVersion build_config.target_sdk
+        versionCode build_config.version_code
+        versionName build_config.version_name
+        multiDexEnabled true
+        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+    }
+    compileSdkVersion build_config.compile_sdk
+
+    dexOptions {
+        javaMaxHeapSize "4g"
+        preDexLibraries = false
+        jumboMode = true
+    }
+
+    dataBinding {
+        enabled = true
+    }
+
+    lintOptions {
+        abortOnError false
+    }
+
+    compileOptions {
+        encoding = 'utf-8'
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+}
+
+dependencies {
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    implementation deps.multidex
+}
diff --git a/ModuleProject/lib_module_common/proguard-rules.pro b/ModuleProject/lib_module_common/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/ModuleProject/lib_module_common/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
diff --git a/ModuleProject/lib_module_common/src/androidTest/java/info/hook/com/lib_module_common/ExampleInstrumentedTest.java b/ModuleProject/lib_module_common/src/androidTest/java/info/hook/com/lib_module_common/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..6fe9fda
--- /dev/null
+++ b/ModuleProject/lib_module_common/src/androidTest/java/info/hook/com/lib_module_common/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package info.hook.com.lib_module_common;
+
+import android.content.Context;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+    @Test
+    public void useAppContext() {
+        // Context of the app under test.
+        Context appContext = InstrumentationRegistry.getTargetContext();
+
+        assertEquals("info.hook.com.lib_module_common.test", appContext.getPackageName());
+    }
+}
diff --git a/ModuleProject/lib_module_common/src/main/AndroidManifest.xml b/ModuleProject/lib_module_common/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..6d94bad
--- /dev/null
+++ b/ModuleProject/lib_module_common/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="info.hook.com.lib_module_common" />
diff --git a/ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/AppContext.java b/ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/AppContext.java
new file mode 100644
index 0000000..0a085df
--- /dev/null
+++ b/ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/AppContext.java
@@ -0,0 +1,192 @@
+package com.hikcreate.base;
+import android.app.Activity;
+import android.app.Application;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.support.multidex.MultiDex;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * app初始化类
+ *
+ * @author wangtao55
+ * @date 2019/9/21
+ * @mail wangtao55@hikcreate.com
+ */
+@SuppressWarnings("ALL")
+public class AppContext {
+
+    private Application mContext;
+    private List<String> logicList = new ArrayList<>();
+    private List<BaseAppLogic> logicClassList = new ArrayList<>();
+
+    private List<String> logicActivityLifeList = new ArrayList<>();
+    private List<BaseActivityLifeLogic> logicActivityLifeClassList = new ArrayList<>();
+
+    private static AppContext mAppContext;
+    private AppContext() {
+    }
+
+    public static AppContext getInstance() {
+        if (mAppContext == null) {
+            mAppContext = new AppContext();
+        }
+        return mAppContext;
+    }
+
+    public void registerAppLogic(String logicClass){
+        logicList.add(logicClass);
+    }
+
+    public void registerActivityLifeLogic(String logicClass){
+        logicActivityLifeList.add(logicClass);
+    }
+
+    public void logicOnCreate(Application application){
+
+        for(String logicClass : logicList){
+            try {
+                Class appClass = Class.forName(logicClass);
+                BaseAppLogic appLogic = (BaseAppLogic) appClass.newInstance();
+                logicClassList.add(appLogic);
+                appLogic.onCreate();
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+        for(String logicActivityClass : logicActivityLifeList){
+            try {
+                Class appClass = Class.forName(logicActivityClass);
+                BaseActivityLifeLogic appLogic = (BaseActivityLifeLogic) appClass.newInstance();
+                logicActivityLifeClassList.add(appLogic);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+        init(application);
+    }
+
+    public void logicOnTerminate(){
+        for(BaseAppLogic logicClass : logicClassList){
+            try {
+                logicClass.onTerminate();
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public void logicOnLowMemory(){
+        for(BaseAppLogic logicClass : logicClassList){
+            try {
+                logicClass.onLowMemory();
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public void logicOnConfigurationChanged(Configuration newConfig){
+        for(BaseAppLogic logicClass : logicClassList){
+            try {
+                logicClass.onConfigurationChanged(newConfig);
+            }catch (Exception e){
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public void init(Application application) {
+        mContext = application;
+        initActivityLifeCycle(application);
+        MultiDex.install(application);
+    }
+
+    public void initActivityLifeCycle(Application application){
+        application.registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
+            @Override
+            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
+                for(BaseActivityLifeLogic logicClass : logicActivityLifeClassList){
+                    try {
+                        logicClass.onActivityCreated(activity,savedInstanceState);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+
+            @Override
+            public void onActivityStarted(Activity activity) {
+                for(BaseActivityLifeLogic logicClass : logicActivityLifeClassList){
+                    try {
+                        logicClass.onActivityStarted(activity);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+
+            @Override
+            public void onActivityResumed(Activity activity) {
+                for(BaseActivityLifeLogic logicClass : logicActivityLifeClassList){
+                    try {
+                        logicClass.onActivityResumed(activity);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+
+            @Override
+            public void onActivityPaused(Activity activity) {
+                for(BaseActivityLifeLogic logicClass : logicActivityLifeClassList){
+                    try {
+                        logicClass.onActivityPaused(activity);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+
+            @Override
+            public void onActivityStopped(Activity activity) {
+                for(BaseActivityLifeLogic logicClass : logicActivityLifeClassList){
+                    try {
+                        logicClass.onActivityStopped(activity);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+
+            @Override
+            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
+                for(BaseActivityLifeLogic logicClass : logicActivityLifeClassList){
+                    try {
+                        logicClass.onActivitySaveInstanceState(activity,outState);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+
+            @Override
+            public void onActivityDestroyed(Activity activity) {
+                for(BaseActivityLifeLogic logicClass : logicActivityLifeClassList){
+                    try {
+                        logicClass.onActivityDestroyed(activity);
+                    }catch (Exception e){
+                        e.printStackTrace();
+                    }
+                }
+            }
+        });
+
+    }
+
+    public Context getApplication() {
+        return mContext;
+    }
+}
diff --git a/ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseActivityLifeLogic.java b/ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseActivityLifeLogic.java
new file mode 100644
index 0000000..797a681
--- /dev/null
+++ b/ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseActivityLifeLogic.java
@@ -0,0 +1,26 @@
+package com.hikcreate.base;
+
+import android.app.Activity;
+import android.app.Application;
+import android.content.res.Configuration;
+import android.os.Bundle;
+
+/**
+ * 基础activity配置类
+ *
+ * @author wangtao55
+ * @date 2019/9/23
+ * @mail wangtao55@hikcreate.com
+ */
+public abstract class BaseActivityLifeLogic {
+
+    abstract public void onActivityCreated(Activity activity, Bundle savedInstanceState);
+    abstract public void onActivityStarted(Activity activity);
+    abstract public void onActivityResumed(Activity activity);
+    abstract public void onActivityPaused(Activity activity);
+    abstract public void onActivityStopped(Activity activity);
+    abstract public void onActivityDestroyed(Activity activity);
+    abstract public void onActivitySaveInstanceState(Activity activity, Bundle savedInstanceState);
+
+
+}
diff --git a/ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseAppLogic.java b/ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseAppLogic.java
new file mode 100644
index 0000000..1491126
--- /dev/null
+++ b/ModuleProject/lib_module_common/src/main/java/com/hikcreate/base/BaseAppLogic.java
@@ -0,0 +1,22 @@
+package com.hikcreate.base;
+
+import android.app.Application;
+import android.content.res.Configuration;
+
+/**
+ * 基础app配置类
+ *
+ * @author wangtao55
+ * @date 2019/9/23
+ * @mail wangtao55@hikcreate.com
+ */
+public abstract class BaseAppLogic {
+
+    private Application mApplication;
+    abstract public void onCreate();
+    abstract public void onTerminate();
+    abstract public void onLowMemory();
+    abstract public void onConfigurationChanged(Configuration newConfig);
+
+
+}
diff --git a/ModuleProject/lib_module_common/src/main/res/values/strings.xml b/ModuleProject/lib_module_common/src/main/res/values/strings.xml
new file mode 100644
index 0000000..7309039
--- /dev/null
+++ b/ModuleProject/lib_module_common/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+    <string name="app_name">lib_module_common</string>
+</resources>
diff --git a/ModuleProject/lib_module_common/src/test/java/info/hook/com/lib_module_common/ExampleUnitTest.java b/ModuleProject/lib_module_common/src/test/java/info/hook/com/lib_module_common/ExampleUnitTest.java
new file mode 100644
index 0000000..be51a3a
--- /dev/null
+++ b/ModuleProject/lib_module_common/src/test/java/info/hook/com/lib_module_common/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package info.hook.com.lib_module_common;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+    @Test
+    public void addition_isCorrect() {
+        assertEquals(4, 2 + 2);
+    }
+}
\ No newline at end of file
diff --git a/ModuleProject/lib_network/build.gradle b/ModuleProject/lib_network/build.gradle
index 1b775e2..6ed6a44 100644
--- a/ModuleProject/lib_network/build.gradle
+++ b/ModuleProject/lib_network/build.gradle
@@ -9,8 +9,12 @@ android {
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
         compileSdkVersion build_config.compile_sdk
     }
+
+    dexOptions {
+        preDexLibraries = false
+    }
 }
 
 dependencies {
-    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    compileOnly fileTree(dir: 'libs', include: ['*.jar'])
 }
diff --git a/ModuleProject/settings.gradle b/ModuleProject/settings.gradle
index 0949510..950926c 100644
--- a/ModuleProject/settings.gradle
+++ b/ModuleProject/settings.gradle
@@ -1 +1 @@
-include ':app', ':lib_common_ui', ':lib_data_drive', ':app_common',":lib_network", ':lib_app_common', ':app_passport', ':app_login', ':lib_baidu_audiodect',':buildsrc',":lib_baidu_facedect",":lib_baidu_textdect"
+include ':app', ':lib_common_ui', ':lib_data_drive', ':app_common', ':lib_module_common',":lib_network", ':lib_app_common', ':app_passport', ':app_login', ':lib_baidu_audiodect',':buildsrc',":lib_baidu_facedect",":lib_baidu_textdect"
--
libgit2 0.26.0