diff --git a/compiler/src/main/java/com/zhangke/krouter/compiler/KRouterProcessor.kt b/compiler/src/main/java/com/zhangke/krouter/compiler/KRouterProcessor.kt index ef28b77..0464705 100644 --- a/compiler/src/main/java/com/zhangke/krouter/compiler/KRouterProcessor.kt +++ b/compiler/src/main/java/com/zhangke/krouter/compiler/KRouterProcessor.kt @@ -92,7 +92,7 @@ class KRouterVisitor( existsFile.outputStream().use { ServicesFiles.writeServiceFile(services, it) } } else { environment.codeGenerator.createNewFile( - dependencies = Dependencies(aggregating = false, serviceClassDeclaration.containingFile!!), + dependencies = Dependencies(aggregating = true, serviceClassDeclaration.containingFile!!), packageName = "", fileName = resourceFileName, extensionName = "", diff --git a/core/src/main/java/com/zhangke/krouter/Destination.kt b/core/src/main/java/com/zhangke/krouter/Destination.kt index 0201efc..aed94bc 100644 --- a/core/src/main/java/com/zhangke/krouter/Destination.kt +++ b/core/src/main/java/com/zhangke/krouter/Destination.kt @@ -5,6 +5,6 @@ import kotlin.reflect.KClass @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.RUNTIME) annotation class Destination( - val router: String, + vararg val router: String, val type: KClass<*> = Unit::class, ) diff --git a/core/src/main/java/com/zhangke/krouter/ZZZKRouterInternalUtil.kt b/core/src/main/java/com/zhangke/krouter/ZZZKRouterInternalUtil.kt index fb05246..fa33a8c 100644 --- a/core/src/main/java/com/zhangke/krouter/ZZZKRouterInternalUtil.kt +++ b/core/src/main/java/com/zhangke/krouter/ZZZKRouterInternalUtil.kt @@ -21,20 +21,16 @@ object ZZZKRouterInternalUtil { ): Any? { val routerUri = URI.create(router).baseUri val service = serviceClassList.firstOrNull { - val serviceRouter = getRouterFromClassAnnotation(it::class) - if (serviceRouter.isNullOrEmpty().not()) { - val serviceUri = URI.create(serviceRouter!!).baseUri - serviceUri == routerUri - } else { - false - } + getRouterFromClassAnnotation(it::class).map { route -> + URI.create(route).baseUri + }.contains(routerUri) } return service } - private fun getRouterFromClassAnnotation(targetClass: KClass<*>): String? { - val routerAnnotation = targetClass.findAnnotation() ?: return null - return routerAnnotation.router + private fun getRouterFromClassAnnotation(targetClass: KClass<*>): Array { + val routerAnnotation = targetClass.findAnnotation() ?: return emptyArray() + return arrayOf(*routerAnnotation.router) } fun getFilledRouterService(router: String, service: Any): Any { diff --git a/sample/app/src/main/java/com/zhangke/kouter/sample/app/Main.kt b/sample/app/src/main/java/com/zhangke/kouter/sample/app/Main.kt index c228f86..fd38d94 100644 --- a/sample/app/src/main/java/com/zhangke/kouter/sample/app/Main.kt +++ b/sample/app/src/main/java/com/zhangke/kouter/sample/app/Main.kt @@ -5,7 +5,8 @@ import com.zhangke.krouter.sample.core.Screen fun main() { KRouter.route("screen/home?name=zhangke")?.content() - KRouter.route("scree/home/detail?name=zhangke")?.content() + KRouter.route("krouter://sample.com/screen/home?name=zhangke")?.content() + KRouter.route("screen/home/detail?name=zhangke")?.content() KRouter.route("screen/profile?name=zhangke")?.content() KRouter.route("screen/profile/detail?name=zhangke")?.content() KRouter.route("screen/setting")?.content() diff --git a/sample/home/src/main/java/com/zhangke/krouter/sample/home/HomeDetailScreen.kt b/sample/home/src/main/java/com/zhangke/krouter/sample/home/HomeDetailScreen.kt index 92be594..fa3dd18 100644 --- a/sample/home/src/main/java/com/zhangke/krouter/sample/home/HomeDetailScreen.kt +++ b/sample/home/src/main/java/com/zhangke/krouter/sample/home/HomeDetailScreen.kt @@ -4,7 +4,7 @@ import com.zhangke.krouter.Destination import com.zhangke.krouter.Router import com.zhangke.krouter.sample.core.Screen -@Destination(router = "scree/home/detail") +@Destination("screen/home/detail") class HomeDetailScreen(@Router val router: String = "") : Screen { override fun content() { diff --git a/sample/home/src/main/java/com/zhangke/krouter/sample/home/HomeScreen.kt b/sample/home/src/main/java/com/zhangke/krouter/sample/home/HomeScreen.kt index fd287b4..cd4c1ab 100644 --- a/sample/home/src/main/java/com/zhangke/krouter/sample/home/HomeScreen.kt +++ b/sample/home/src/main/java/com/zhangke/krouter/sample/home/HomeScreen.kt @@ -4,7 +4,7 @@ import com.zhangke.krouter.Destination import com.zhangke.krouter.Router import com.zhangke.krouter.sample.core.Screen -@Destination("screen/home") +@Destination("screen/home", "krouter://sample.com/screen/home") class HomeScreen(@Router val router: String = "") : Screen { override fun content() { diff --git a/sample/profile/src/main/java/com/zhangke/krouter/sample/home/ProfileDetailScreen.kt b/sample/profile/src/main/java/com/zhangke/krouter/sample/home/ProfileDetailScreen.kt index 18fd0f0..f0aea3b 100644 --- a/sample/profile/src/main/java/com/zhangke/krouter/sample/home/ProfileDetailScreen.kt +++ b/sample/profile/src/main/java/com/zhangke/krouter/sample/home/ProfileDetailScreen.kt @@ -3,5 +3,5 @@ package com.zhangke.krouter.sample.home import com.zhangke.krouter.Destination import com.zhangke.krouter.sample.core.Screen -@Destination(router = "scree/profile/detail") +@Destination("screen/profile/detail") class ProfileDetailScreen: Screen \ No newline at end of file diff --git a/sample/setting/src/main/java/com/zhangke/krouter/sample/setting/SettingsDetailScreen.kt b/sample/setting/src/main/java/com/zhangke/krouter/sample/setting/SettingsDetailScreen.kt index 508eece..eba18db 100644 --- a/sample/setting/src/main/java/com/zhangke/krouter/sample/setting/SettingsDetailScreen.kt +++ b/sample/setting/src/main/java/com/zhangke/krouter/sample/setting/SettingsDetailScreen.kt @@ -3,5 +3,5 @@ package com.zhangke.krouter.sample.setting import com.zhangke.krouter.Destination import com.zhangke.krouter.sample.core.Screen -@Destination(router = "screen/setting/detail") +@Destination("screen/setting/detail") class SettingsDetailScreen : Screen \ No newline at end of file