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 都加了。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);
TheRouter.inject(this);
}
3. 发动跳转
也就是原来应用 startActivity()的办法,都能够改成这样应用了
@Override
protected 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 版本开始反对的