TheRouter是货拉拉开源的路由框架,针对Android平台实现组件化、跨模块调用、动态化等性能的集成框架,基本上算以后最先进的路由库了。
Github: https://github.com/HuolalaTech/hll-wp-therouter-android/
官网:http://therouter.cn/
查看最新版本
TheRouter的版本分为两种,稳定版和rc版,个别不谋求新性能咱们就用稳定版就行,能够在官网看到最新的版本号和各种版本的阐明:https://therouter.cn/docs/2022/09/06/01
接入
新建一个Demo工程,关上Demo的根目录build.gradle
。
1. 新版本接入classpath
如果是新版本的Gradle,classpath
曾经改为用plugins
的形式引入,只须要在闭包内加这一句就行了
id 'cn.therouter' version '1.1.1' apply false
2. 老版本接入classpath
对于老版本的Gradle,须要手动引入classpath
,在TheRouter官网Github首页也有接入介绍
classpath "cn.therouter:plugin:1.1.1"
3. 引入插件
找到我的项目里全副的app模块(个别只会有一个,非凡我的项目会有多个)。也就是整个工程的所有build.gradle
文件外面,只有是有com.android.application
这个的模块,都要加上如下代码
// 老版本这样写apply plugin: 'therouter'// 新版本这样写id 'therouter'
新版本的Gradle | 老版本的Gradle |
---|---|
,这里我是用了更先进的ksp) |
4. 引入kapt
TheRouter的注解解决依赖kapt执行,所以要在我的项目外面手动引入,否则无奈解决注解
注:所有的模块都必须引入kapt,否则就有可能造成某些路由表不生成。我最开始认为简略,就在最底层模块依赖了kapt,后果下层模块路由表都没有生成,查了良久才发现,所有模块都要加。
如果报找不到kapt,可能是因为没有引入kotlin-kapt的插件,参考步骤3外面的截图,接入对应的kapt。如果是纯Java工程,须要用Java的APT解决,APT就不必引入插件了,间接把kapt
改成annotationProcessor
annotationProcessor "cn.therouter:apt:1.1.1"
应用
1. 申明路由
给须要跳转的页面加上路由表申明
@Route(path = "http://therouter.com/home")public class HomeActivity extends BaseActivity {}
2. 增加参数注入
这一步如果在base外面写了的话就不必每个Activity都加了。
@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); TheRouter.inject(this);}
3. 发动跳转
也就是原来应用startActivity()的办法,都能够改成这样应用了
@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); TheRouter.build("要跳转的指标页Path") .withInt("intValue", 12345678) .withString("str_123_Value", "传中文字符串") .withBoolean("boolValue", true) .withLong("longValue", 123456789012345L) .withChar("charValue", 'c') .withDouble("double", 3.14159265358972) .withFloat("floatValue", 3.14159265358972F) .navigation(); TheRouter.build("如果没有参数,能够什么都不传").navigation();}
KSP接入(可选,用于代替kapt)
1. 降级Gradle
KSP 依赖Gradle7.X,所以须要把 Gradle 版本号跟 AGP 版本号都降级到最新。
比方我的版本号是这样的(我的项目目录/gradle/wrapper/gradle-wrapper.properties)
AGP我用的是 8.0 的,根目录build.gradle
中插件列表
因为新版本的Gradle强制要求最新版本的Android Studio Preview
,并且必须Java11
编译,所以还得要下载最新的AS预览版,并批改编译环境。
2. 增加KSP依赖
根目录build.gradle
中,插件列表闭包内引入KSP
插件依赖
3. 增加KSP申明
所有模块都要加上KSP插件的申明,否则会提醒找不到KSP工具。
4. 应用KSP
在所有模块的dependencies
闭包内,引入therouter的依赖,须要留神的是,所有模块都要引入ksp "cn.therouter:apt:1.1.3-beta1"
,不能只在最底层模块引入ksp。
(上面的 implementation 能够只在最底层引入,上传传递依赖)。
- KSP 是从 1.1.3-beta1 版本开始反对的