瀏覽代碼

提交人:江天明
提交内容:ARouter相关

19198 2 年之前
父節點
當前提交
122b5a83ca

+ 1 - 1
BusinessAuth/build.gradle

@@ -39,7 +39,7 @@ android {
 }
 
 dependencies {
-    implementation project(path: ':libThirdParty')
     implementation project(path: ':libBase')
     implementation project(path: ':BusinessRouter')
+    kapt 'com.alibaba:arouter-compiler:1.5.1'
 }

+ 18 - 0
BusinessAuth/src/main/java/com/develop/auth/init/AuthInitApp.kt

@@ -0,0 +1,18 @@
+package com.develop.auth.init
+
+import android.content.res.Configuration
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.develop.router.Screens
+import com.develop.router.init.BaseModuleInit
+
+@Route(path = Screens.InitRouter.MODULE_AUTH)
+class AuthInitApp : BaseModuleInit() {
+
+    override fun onApplicationCreate() {
+
+    }
+
+    override fun onApplicationConfigChange(newConfig: Configuration?) {
+
+    }
+}

+ 0 - 1
BusinessRouter/build.gradle

@@ -37,6 +37,5 @@ android {
 
 dependencies {
     implementation project(path:':libBase')
-    implementation project(path: ':libThirdParty')
     kapt 'com.alibaba:arouter-compiler:1.5.1'
 }

+ 57 - 2
BusinessRouter/src/main/java/com/develop/router/ARouterUtils.kt

@@ -2,15 +2,70 @@ package com.develop.router
 
 import android.app.Activity
 import android.app.Application
+import android.content.Context
+import android.content.res.Configuration
+import android.util.Log
 import androidx.fragment.app.Fragment
 import com.alibaba.android.arouter.facade.Postcard
+import com.alibaba.android.arouter.facade.annotation.Autowired
 import com.alibaba.android.arouter.facade.callback.NavigationCallback
 import com.alibaba.android.arouter.launcher.ARouter
+import com.develop.router.init.ModuleInit
 
 object ARouterUtils {
 
-    fun init(application: Application) {
-        ARouter.init(application)
+    @JvmField
+    @Autowired(name = Screens.InitRouter.MODULE_AUTH)
+    var mAuthInit: ModuleInit? = null
+
+    @JvmField
+    @Autowired(name = Screens.InitRouter.MODULE_SETTING)
+    var mSettingInit: ModuleInit? = null
+
+    /**
+     * 负责初始化
+     *
+     * @return
+     */
+    val initService: ModuleInit
+
+    init {
+        initService = InInit()
+    }
+
+    private class InInit : ModuleInit {
+        override fun init(context: Context) {}
+        override fun onApplicationCreate() {
+            if (mAuthInit != null) {
+                Log.i("AppInit", "proxy auth init")
+                mAuthInit?.onApplicationCreate()
+            }
+            if (mSettingInit != null) {
+                Log.i("AppInit", "proxy setting init")
+                mSettingInit?.onApplicationCreate()
+            }
+
+        }
+
+        override fun onApplicationConfigChange(newConfig: Configuration?) {
+            if (mAuthInit != null) {
+                Log.i("AppInit", "proxy main config init")
+                mAuthInit?.onApplicationConfigChange(newConfig)
+            }
+            if (mSettingInit != null) {
+                Log.i("AppInit", "proxy setting config init")
+                mSettingInit?.onApplicationConfigChange(newConfig)
+            }
+        }
+    }
+
+    fun init(application: Application,isDebug :Boolean) {
+        ARouter.openLog() // 打印日志
+        if (isDebug) {
+            ARouter.openDebug() // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
+        }
+        ARouter.init(application) // 尽可能早,推荐在Application中初始化
+        ARouter.getInstance().inject(this)
     }
 
 }

+ 5 - 0
BusinessRouter/src/main/java/com/develop/router/Screens.kt

@@ -2,6 +2,11 @@ package com.develop.router
 
 object Screens {
 
+    object InitRouter {
+        const val MODULE_AUTH = "/init_auth/provider"
+        const val MODULE_SETTING = "/init_setting/provider"
+    }
+
     object Auth {
         private const val SCHEMA = "/auth"
         const val MEMBER = "${SCHEMA}/member"

+ 10 - 0
BusinessRouter/src/main/java/com/develop/router/init/BaseModuleInit.kt

@@ -0,0 +1,10 @@
+package com.develop.router.init
+
+import android.content.Context
+
+
+abstract class BaseModuleInit : ModuleInit {
+    override fun init(context: Context?) {
+
+    }
+}

+ 12 - 0
BusinessRouter/src/main/java/com/develop/router/init/ModuleInit.kt

@@ -0,0 +1,12 @@
+package com.develop.router.init
+
+import android.content.res.Configuration
+import com.alibaba.android.arouter.facade.template.IProvider
+
+/**
+ * 模块化,提供初始化内容
+ */
+interface ModuleInit : IProvider {
+    fun onApplicationCreate()
+    fun onApplicationConfigChange(newConfig: Configuration?)
+}

+ 12 - 7
BusinessSetting/build.gradle

@@ -1,6 +1,7 @@
 plugins {
     id 'com.android.library'
     id 'org.jetbrains.kotlin.android'
+    id 'kotlin-kapt'
 }
 
 android {
@@ -12,6 +13,11 @@ android {
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         consumerProguardFiles "consumer-rules.pro"
+        kapt {
+            arguments {
+                arg("AROUTER_MODULE_NAME", project.getName())
+            }
+        }
     }
 
     buildTypes {
@@ -27,14 +33,13 @@ android {
     kotlinOptions {
         jvmTarget = '1.8'
     }
+    viewBinding {
+        enabled = true
+    }
 }
 
 dependencies {
-
-    implementation 'androidx.core:core-ktx:1.6.0'
-    implementation 'androidx.appcompat:appcompat:1.3.0'
-    implementation 'com.google.android.material:material:1.4.0'
-    testImplementation 'junit:junit:4.13.2'
-    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
-    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+    implementation project(path: ':libBase')
+    implementation project(path: ':BusinessRouter')
+    kapt 'com.alibaba:arouter-compiler:1.5.1'
 }

+ 20 - 0
BusinessSetting/src/main/java/com/develop/setting/init/SettingInitApp.kt

@@ -0,0 +1,20 @@
+package com.develop.setting.init
+
+import android.content.res.Configuration
+import com.alibaba.android.arouter.facade.annotation.Route
+import com.develop.router.Screens
+import com.develop.router.init.BaseModuleInit
+
+
+
+@Route(path = Screens.InitRouter.MODULE_SETTING)
+class SettingInitApp : BaseModuleInit() {
+
+    override fun onApplicationCreate() {
+
+    }
+
+    override fun onApplicationConfigChange(newConfig: Configuration?) {
+
+    }
+}

+ 3 - 1
app/build.gradle

@@ -38,7 +38,9 @@ android {
 }
 
 dependencies {
-    implementation project(path: ':libThirdParty')
     implementation project(path: ':libBase')
     implementation project(path: ':BusinessRouter')
+    implementation project(path: ':BusinessAuth')
+    implementation project(path: ':BusinessSetting')
+    kapt 'com.alibaba:arouter-compiler:1.5.1'
 }

+ 8 - 2
app/src/main/java/com/develop/foodcooking/FoodCookApp.kt

@@ -1,15 +1,21 @@
 package com.develop.foodcooking
 
+import android.content.res.Configuration
 import com.develop.food.base.FoodCookBaseApp
 import com.develop.food.base.utils.MmkvUtils
 import com.develop.router.ARouterUtils
 
-class FoodCookApp: FoodCookBaseApp() {
+class FoodCookApp : FoodCookBaseApp() {
 
     override fun onCreate() {
         super.onCreate()
         MmkvUtils.initialize(this)
-        ARouterUtils.init(this)
+        ARouterUtils.init(this, BuildConfig.DEBUG)
+        ARouterUtils.initService.onApplicationCreate()
     }
 
+    override fun onConfigurationChanged(newConfig: Configuration) {
+        super.onConfigurationChanged(newConfig)
+        ARouterUtils.initService.onApplicationConfigChange(newConfig)
+    }
 }

+ 2 - 1
app/src/main/java/com/develop/foodcooking/MainActivity.kt

@@ -9,8 +9,9 @@ class MainActivity : AppCompatActivity() {
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
-        setContentView(R.layout.activity_main)
+
 
         navigateTo(Screens.Auth.MEMBER)
+        finish()
     }
 }

+ 4 - 1
libBase/build.gradle

@@ -33,5 +33,8 @@ android {
 }
 
 dependencies {
-    implementation project(path: ':libThirdParty')
+    api 'androidx.core:core-ktx:1.6.0'
+    api 'androidx.appcompat:appcompat:1.3.0'
+    api 'com.google.android.material:material:1.4.0'
+    api project(path: ':libThirdParty')
 }

+ 9 - 2
libBase/src/main/java/com/develop/food/base/FoodCookBaseApp.kt

@@ -1,15 +1,22 @@
 package com.develop.food.base
 
 import android.app.Application
-import androidx.multidex.MultiDexApplication
+import android.content.Context
+import androidx.multidex.MultiDex
 
-open class FoodCookBaseApp: MultiDexApplication() {
+open class FoodCookBaseApp: Application() {
 
     override fun onCreate() {
         super.onCreate()
         application = this
     }
 
+    override fun attachBaseContext(base: Context?) {
+        super.attachBaseContext(base)
+        MultiDex.install(this)
+    }
+
+
     companion object {
         lateinit var application: Application
     }