diff --git a/README.md b/README.md index b8a984ceb..d1603580f 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ - [x] [Chucker](https://github.com/ChuckerTeam/chucker/releases) - [x] [Coil](https://github.com/coil-kt/coil/releases) - [x] [Glide](https://github.com/bumptech/glide/releases) -- [x] [ARouter](https://github.com/alibaba/ARouter/releases) +- [ ] [ARouter](https://github.com/alibaba/ARouter/releases) - [x] [FastJson](https://github.com/alibaba/fastjson) - [x] [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode/releases) - [x] [PermissionX](https://github.com/guolindev/PermissionX) diff --git a/app/src/main/kotlin/io/goooler/demoapp/DemoApplication.kt b/app/src/main/kotlin/io/goooler/demoapp/DemoApplication.kt index ed020ed45..056d72fc1 100644 --- a/app/src/main/kotlin/io/goooler/demoapp/DemoApplication.kt +++ b/app/src/main/kotlin/io/goooler/demoapp/DemoApplication.kt @@ -2,6 +2,13 @@ package io.goooler.demoapp import dagger.hilt.android.HiltAndroidApp import io.goooler.demoapp.common.CommonApplication +import io.goooler.demoapp.common.router.RouterManager @HiltAndroidApp -class DemoApplication : CommonApplication() +class DemoApplication : CommonApplication() { + + override fun initImmediately() { + super.initImmediately() + RouterManager.impl = RouterManagerImpl + } +} diff --git a/app/src/main/kotlin/io/goooler/demoapp/RouterManagerImpl.kt b/app/src/main/kotlin/io/goooler/demoapp/RouterManagerImpl.kt new file mode 100644 index 000000000..83980119f --- /dev/null +++ b/app/src/main/kotlin/io/goooler/demoapp/RouterManagerImpl.kt @@ -0,0 +1,45 @@ +package io.goooler.demoapp + +import android.content.Context +import android.content.Intent +import io.goooler.demoapp.common.router.RouterManager +import io.goooler.demoapp.login.ui.LoginActivity +import io.goooler.demoapp.main.ui.AudioPlayActivity +import io.goooler.demoapp.main.ui.MainActivity +import io.goooler.demoapp.web.WebActivity + +object RouterManagerImpl : RouterManager { + + private const val LOGIN = "/login/" + private const val MAIN = "/main/" + private const val WEB = "/web/" + private const val AUDIO_PLAY = "/audioPlay/" + + override fun go(context: Context, url: String) { + TODO("Not yet implemented") + } + + override fun goLogin(context: Context, isReLogin: Boolean) { + Intent(context, LoginActivity::class.java) + .setAction(if (isReLogin) RouterManager.RE_LOGIN else null) + .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) + .let(context::startActivity) + } + + override fun goMain(context: Context) { + Intent(context, MainActivity::class.java) + .let(context::startActivity) + } + + override fun goAudioPlay(context: Context) { + Intent(context, AudioPlayActivity::class.java) + .let(context::startActivity) + } + + override fun goWeb(context: Context, url: String, useChrome: Boolean) { + Intent(context, WebActivity::class.java) + .putExtra(RouterManager.PARAMS, url) + .setAction(if (useChrome) RouterManager.USE_CHROME else null) + .let(context::startActivity) + } +} diff --git a/build.gradle.kts b/build.gradle.kts index d0d746029..34e76375a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,6 @@ buildscript { rootProject.extra["androidPlugin"].toString(), rootProject.extra["kotlinPlugin"].toString(), Libs.hiltPlugin, - Libs.arouterPlugin, Libs.ktlintPlugin ) } @@ -42,12 +41,6 @@ allprojects { } } } - - tasks.matching { - it.name.contains("transformClassesWithCom.alibaba.arouter") - }.configureEach { - notCompatibleWithConfigurationCache("https://github.com/alibaba/ARouter/issues/984") - } } tasks { diff --git a/buildSrc/src/main/kotlin/Extensions.kt b/buildSrc/src/main/kotlin/Extensions.kt index ac6a769b6..96ddf5ab0 100644 --- a/buildSrc/src/main/kotlin/Extensions.kt +++ b/buildSrc/src/main/kotlin/Extensions.kt @@ -157,13 +157,12 @@ inline fun Project.setupCommon( create("online") } dependencies { - implementations(Libs.arouter, *Libs.hilt, *Libs.room, *Libs.moshi) - kapts(Libs.arouterCompiler, Libs.moshiCompiler, Libs.roomCompiler, Libs.hiltCompiler) + implementations(*Libs.hilt, *Libs.room, *Libs.moshi) + kapts(Libs.moshiCompiler, Libs.roomCompiler, Libs.hiltCompiler) } - applyPlugins(Plugins.kotlinParcelize, Plugins.arouter, Plugins.hilt) + applyPlugins(Plugins.kotlinParcelize, Plugins.hilt) kapt { arguments { - arg("AROUTER_MODULE_NAME", project.name) arg("room.incremental", "true") } } diff --git a/buildSrc/src/main/kotlin/Libs.kt b/buildSrc/src/main/kotlin/Libs.kt index 1b689d8cc..16a32b59f 100644 --- a/buildSrc/src/main/kotlin/Libs.kt +++ b/buildSrc/src/main/kotlin/Libs.kt @@ -1,7 +1,6 @@ @file:Suppress("SpellCheckingInspection") private const val retrofitVersion = "2.9.0" -private const val arouterVersion = "1.5.2" private const val moshiVersion = "1.13.0" private const val srlVersion = "2.0.3" private const val glideVersion = "4.13.0" @@ -27,7 +26,6 @@ object Plugins { const val androidLibrary = "com.android.library" const val androidApplication = "com.android.application" const val hilt = "dagger.hilt.android.plugin" - const val arouter = "com.alibaba.arouter" const val ktlint = "org.jlleitschuh.gradle.ktlint" } @@ -45,7 +43,6 @@ object Libs { const val cardView = "androidx.cardview:cardview:1.0.0" const val collection = "androidx.collection:collection-ktx:$collectionVersion" const val fastjson = "com.alibaba:fastjson:1.1.72.android" - const val arouter = "com.alibaba:arouter-api:$arouterVersion" const val leakCanary = "com.squareup.leakcanary:leakcanary-android:2.8.1" const val flycoTabLayout = "com.flyco.tablayout:FlycoTabLayout_Lib:2.2.0" const val utils = "com.blankj:utilcodex:1.31.0" @@ -60,12 +57,10 @@ object Libs { const val chuckerDebug = "com.github.chuckerteam.chucker:library:$chuckerVersion" const val chuckerRelease = "com.github.chuckerteam.chucker:library-no-op:$chuckerVersion" - const val arouterPlugin = "com.alibaba:arouter-register:1.0.2" const val hiltPlugin = "com.google.dagger:hilt-android-gradle-plugin:$hiltVersion" const val ktlintPlugin = "org.jlleitschuh.gradle:ktlint-gradle:10.2.1" const val roomCompiler = "androidx.room:room-compiler:$roomVersion" - const val arouterCompiler = "com.alibaba:arouter-compiler:$arouterVersion" const val moshiCompiler = "com.squareup.moshi:moshi-kotlin-codegen:$moshiVersion" const val hiltCompiler = "com.google.dagger:hilt-android-compiler:$hiltVersion" diff --git a/common/src/main/kotlin/io/goooler/demoapp/common/CommonApplication.kt b/common/src/main/kotlin/io/goooler/demoapp/common/CommonApplication.kt index a1bcbf862..b5f2792de 100644 --- a/common/src/main/kotlin/io/goooler/demoapp/common/CommonApplication.kt +++ b/common/src/main/kotlin/io/goooler/demoapp/common/CommonApplication.kt @@ -1,14 +1,12 @@ package io.goooler.demoapp.common import android.webkit.WebView -import com.alibaba.android.arouter.launcher.ARouter import com.scwang.smart.refresh.footer.ClassicsFooter import com.scwang.smart.refresh.header.ClassicsHeader import com.scwang.smart.refresh.layout.SmartRefreshLayout import io.goooler.demoapp.base.core.BaseApplication import io.goooler.demoapp.common.util.CrashHandler import io.goooler.demoapp.common.util.ImageLoader -import io.goooler.demoapp.common.util.debugRun abstract class CommonApplication : BaseApplication() { @@ -16,20 +14,11 @@ abstract class CommonApplication : BaseApplication() { super.initImmediately() app = this CrashHandler.init() - initArouter() initImageLoader() initWebView() initSmartRefresh() } - private fun initArouter() { - debugRun { - ARouter.openLog() - ARouter.openDebug() - } - ARouter.init(this) - } - private fun initImageLoader() { ImageLoader.init(this) } diff --git a/common/src/main/kotlin/io/goooler/demoapp/common/network/RetrofitHelper.kt b/common/src/main/kotlin/io/goooler/demoapp/common/network/RetrofitHelper.kt index fa9024d15..3c3b2f301 100644 --- a/common/src/main/kotlin/io/goooler/demoapp/common/network/RetrofitHelper.kt +++ b/common/src/main/kotlin/io/goooler/demoapp/common/network/RetrofitHelper.kt @@ -28,7 +28,7 @@ object RetrofitHelper : BaseRetrofitHelper() { override val statusListener: StatusListener = StatusListener { AppUserInfoManager.logout() - RouterManager.goLogin(true) + RouterManager.goLogin(CommonApplication.app, true) } override fun Retrofit.Builder.addCallAdapterFactories(): Retrofit.Builder { diff --git a/common/src/main/kotlin/io/goooler/demoapp/common/router/RouterManager.kt b/common/src/main/kotlin/io/goooler/demoapp/common/router/RouterManager.kt index 1bfbe5b87..8867997da 100644 --- a/common/src/main/kotlin/io/goooler/demoapp/common/router/RouterManager.kt +++ b/common/src/main/kotlin/io/goooler/demoapp/common/router/RouterManager.kt @@ -1,53 +1,44 @@ package io.goooler.demoapp.common.router -import android.content.Intent -import androidx.core.net.toUri -import com.alibaba.android.arouter.facade.Postcard -import com.alibaba.android.arouter.launcher.ARouter - -@Suppress("unused", "MemberVisibilityCanBePrivate") -object RouterManager { - const val TARGET = "target" - const val PARAMS = "params" - const val RE_LOGIN = "reLogin" - const val USE_CHROME = "useChrome" - - fun go(url: String) { - url.toUri().path?.let { - buildPostcard(it).navigation() - } - } +import android.content.Context - fun goLogin(isReLogin: Boolean) { - val action = if (isReLogin) RE_LOGIN else null - buildPostcard(RouterPath.LOGIN) - .withAction(action) - .withFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) - .navigation() - } +interface RouterManager { - fun goMain() { - buildPostcard(RouterPath.MAIN) - .navigation() - } + fun go(context: Context, url: String) - fun goMap() { - buildPostcard(RouterPath.MAP) - .navigation() - } + fun goLogin(context: Context, isReLogin: Boolean) - fun goAudioPlay() { - buildPostcard(RouterPath.AUDIO_PLAY) - .navigation() - } + fun goMain(context: Context) - fun goWeb(url: String, useChrome: Boolean = false) { - val action = if (useChrome) USE_CHROME else null - buildPostcard(RouterPath.WEB) - .withAction(action) - .withString(PARAMS, url) - .navigation() - } + fun goAudioPlay(context: Context) + + fun goWeb(context: Context, url: String, useChrome: Boolean = false) + + companion object : RouterManager { + const val PARAMS = "params" + const val RE_LOGIN = "reLogin" + const val USE_CHROME = "useChrome" + + lateinit var impl: RouterManager - private fun buildPostcard(path: String): Postcard = ARouter.getInstance().build(path) + override fun go(context: Context, url: String) { + impl.go(context, url) + } + + override fun goLogin(context: Context, isReLogin: Boolean) { + impl.goLogin(context, isReLogin) + } + + override fun goMain(context: Context) { + impl.goMain(context) + } + + override fun goAudioPlay(context: Context) { + impl.goAudioPlay(context) + } + + override fun goWeb(context: Context, url: String, useChrome: Boolean) { + impl.goWeb(context, url, useChrome) + } + } } diff --git a/common/src/main/kotlin/io/goooler/demoapp/common/router/RouterPath.kt b/common/src/main/kotlin/io/goooler/demoapp/common/router/RouterPath.kt deleted file mode 100644 index 1aa34d18a..000000000 --- a/common/src/main/kotlin/io/goooler/demoapp/common/router/RouterPath.kt +++ /dev/null @@ -1,9 +0,0 @@ -package io.goooler.demoapp.common.router - -object RouterPath { - const val LOGIN = "/login/" - const val MAIN = "/main/" - const val MAP = "/map/" - const val WEB = "/web/" - const val AUDIO_PLAY = "/audioPlay/" -} diff --git a/login/src/main/kotlin/io/goooler/demoapp/login/ui/LoginActivity.kt b/login/src/main/kotlin/io/goooler/demoapp/login/ui/LoginActivity.kt index 6dc4c12ab..6b8b637ae 100644 --- a/login/src/main/kotlin/io/goooler/demoapp/login/ui/LoginActivity.kt +++ b/login/src/main/kotlin/io/goooler/demoapp/login/ui/LoginActivity.kt @@ -1,19 +1,16 @@ package io.goooler.demoapp.login.ui import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route import io.goooler.demoapp.common.base.binding.BaseBindingActivity import io.goooler.demoapp.common.router.RouterManager -import io.goooler.demoapp.common.router.RouterPath import io.goooler.demoapp.login.databinding.LoginActivityBinding -@Route(path = RouterPath.LOGIN) class LoginActivity : BaseBindingActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) if (intent.action != RouterManager.RE_LOGIN) { - RouterManager.goMain() + RouterManager.goMain(this) finish() } } diff --git a/login/src/main/kotlin/io/goooler/demoapp/login/ui/SplashActivity.kt b/login/src/main/kotlin/io/goooler/demoapp/login/ui/SplashActivity.kt index b8f73a456..9dda61947 100644 --- a/login/src/main/kotlin/io/goooler/demoapp/login/ui/SplashActivity.kt +++ b/login/src/main/kotlin/io/goooler/demoapp/login/ui/SplashActivity.kt @@ -9,7 +9,7 @@ class SplashActivity : BaseActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - RouterManager.goMain() + RouterManager.goMain(this) overridePendingTransition(0, 0) finish() } diff --git a/main/src/main/kotlin/io/goooler/demoapp/main/ui/AudioPlayActivity.kt b/main/src/main/kotlin/io/goooler/demoapp/main/ui/AudioPlayActivity.kt index 1674b6240..0887db82c 100644 --- a/main/src/main/kotlin/io/goooler/demoapp/main/ui/AudioPlayActivity.kt +++ b/main/src/main/kotlin/io/goooler/demoapp/main/ui/AudioPlayActivity.kt @@ -2,16 +2,13 @@ package io.goooler.demoapp.main.ui import android.os.Bundle import android.view.View -import com.alibaba.android.arouter.facade.annotation.Route import io.goooler.demoapp.common.base.binding.BaseBindingActivity import io.goooler.demoapp.common.router.RouterManager -import io.goooler.demoapp.common.router.RouterPath import io.goooler.demoapp.common.service.AudioPlayService import io.goooler.demoapp.common.util.getString import io.goooler.demoapp.main.R import io.goooler.demoapp.main.databinding.MainAudioPlayActivityBinding -@Route(path = RouterPath.AUDIO_PLAY) class AudioPlayActivity : BaseBindingActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -36,7 +33,7 @@ class AudioPlayActivity : BaseBindingActivity() { AudioPlayService.stopPlay(this) } binding.btGoMain -> { - RouterManager.goMain() + RouterManager.goMain(this) } } } diff --git a/main/src/main/kotlin/io/goooler/demoapp/main/ui/MainActivity.kt b/main/src/main/kotlin/io/goooler/demoapp/main/ui/MainActivity.kt index 666a65d06..115f2072d 100644 --- a/main/src/main/kotlin/io/goooler/demoapp/main/ui/MainActivity.kt +++ b/main/src/main/kotlin/io/goooler/demoapp/main/ui/MainActivity.kt @@ -3,13 +3,11 @@ package io.goooler.demoapp.main.ui import android.Manifest import android.content.Intent import android.os.Bundle -import com.alibaba.android.arouter.facade.annotation.Route import dagger.hilt.android.AndroidEntryPoint import io.goooler.demoapp.adapter.vp.CommonFragmentStatePagerAdapter import io.goooler.demoapp.base.util.PermissionHelper import io.goooler.demoapp.base.util.unsafeLazy import io.goooler.demoapp.common.base.binding.BaseBindingActivity -import io.goooler.demoapp.common.router.RouterPath import io.goooler.demoapp.common.util.log import io.goooler.demoapp.main.databinding.MainActivityBinding import io.goooler.demoapp.main.ui.fragment.MainHomeFragment @@ -17,7 +15,6 @@ import io.goooler.demoapp.main.ui.fragment.MainPagingFragment import io.goooler.demoapp.main.ui.fragment.MainSrlFragment @AndroidEntryPoint -@Route(path = RouterPath.MAIN) class MainActivity : BaseBindingActivity() { private val pagerAdapter by unsafeLazy { diff --git a/main/src/main/kotlin/io/goooler/demoapp/main/ui/fragment/MainHomeFragment.kt b/main/src/main/kotlin/io/goooler/demoapp/main/ui/fragment/MainHomeFragment.kt index 9931952ae..596de9694 100644 --- a/main/src/main/kotlin/io/goooler/demoapp/main/ui/fragment/MainHomeFragment.kt +++ b/main/src/main/kotlin/io/goooler/demoapp/main/ui/fragment/MainHomeFragment.kt @@ -40,11 +40,10 @@ class MainHomeFragment : BaseBindingLazyFragment() { private val listener = View.OnClickListener { when (it) { - binding.bt1 -> RouterManager.goWeb("bilibili.com") - binding.bt2 -> RouterManager.goMap() + binding.bt1 -> RouterManager.goWeb(requireContext(), "bilibili.com") binding.bt4 -> vm.countDown() binding.bt6 -> FullScreenDialogFragment.show(childFragmentManager) - binding.bt7 -> RouterManager.goAudioPlay() + binding.bt7 -> RouterManager.goAudioPlay(requireContext()) binding.bt8 -> createShortcut(requireContext()) } } diff --git a/web/src/main/kotlin/io/goooler/demoapp/web/WebActivity.kt b/web/src/main/kotlin/io/goooler/demoapp/web/WebActivity.kt index 68592da31..143340b3f 100644 --- a/web/src/main/kotlin/io/goooler/demoapp/web/WebActivity.kt +++ b/web/src/main/kotlin/io/goooler/demoapp/web/WebActivity.kt @@ -5,15 +5,12 @@ import android.os.Bundle import android.view.View import androidx.browser.customtabs.CustomTabsIntent import androidx.core.net.toUri -import com.alibaba.android.arouter.facade.annotation.Route import com.blankj.utilcode.util.BarUtils import io.goooler.demoapp.base.util.addFragment import io.goooler.demoapp.common.base.binding.BaseBindingActivity import io.goooler.demoapp.common.router.RouterManager -import io.goooler.demoapp.common.router.RouterPath import io.goooler.demoapp.web.databinding.WebActivityBinding -@Route(path = RouterPath.WEB) class WebActivity : BaseBindingActivity() { private var webFragment: WebFragment? = null