当前位置: 首页 > 后端技术 > Java

从零开始TheRouter

时间:2023-04-02 01:28:54 Java

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中加上这句话'应用false2。旧版本访问类路径。对于老版本的Gradle,需要手动导入classpath。TheRouter官方Github主页也介绍了类路径“cn.therouter:plugin:1.1.1”3.导入插件找到项目中所有的app模块(一般只会有一个,对于特殊项目)。即在整个项目的所有build.gradle文件中,只要有com.android.application这个模块,就必须添加下面的代码//老版本是这样写applyplugin:'therouter'//新版本像这样写id'therouter'新版本Gradle和旧版本Gradle,这里我用的是更高级的ksp)4.导入kaptTheRouter的注解处理依赖kapt执行,所以必须在项目中手动引入,否则cannotprocessannotations注意:所有模块都必须引入Kapt,否则可能无法生成某些路由表。一开始觉得很简单,就依赖了底层模块的kapt。导致上层模块的路由表没有生成。查了半天发现所有模块都要加。如果报告找不到kapt,可能是因为没有引入kotlin-kapt插件。参考步骤3中的屏幕截图访问相应的kapt。如果是纯Java项目,需要进行JavaAPT处理。APT不需要引入插件,直接把kapt改成annotationProcessorannotationProcessor"cn.therouter:apt:1.1.1"使用1.声明路由,在需要重定向的页面添加路由表声明@Route(path="http://therouter.com/home")publicclassHomeActivityextendsBaseActivity{}2.添加参数注入如果这一步是写在base中的,就没有必要在每个Activity中都添加。@OverrideprotectedvoidonCreate(@NullableBundlesavedInstanceState){super.onCreate(savedInstanceState);TheRouter.inject(this);}3.发起跳转原来是使用startActivity()的方法,可以改成使用@OverrideprotectedvoidonCreate(@NullableBundlesavedInstanceState){super.onCreate(savedInstanceState);TheRouter.build("要跳转的目标页面路径").withInt("intValue",12345678).withString("str_123_Value","传汉字String").withBoolean("boolValue",true).withLong("longValue",123456789012345L).withChar("charValue",'c').withDouble("double",3.14159265358972).withFloat("floatValue",3.14159).navigation();TheRouter.build("Ifthereisnoparameter,youcanpassnothing").navigation();}KSP接入(可选,用于替代kapt)1.升级GradleKSP依赖Gradle7.X,所以Gradle版本号和AGP版本号需要升级到最新。比如我的版本号是这样的(项目目录/gradle/wrapper/gradle-wrapper.properties)我用的是AGP8.0,根目录build.gradle里面的插件列表是AndroidStudio最新版本必填的,因为新版GradlePreview,Java11必须要编译,所以要下载最新的ASPreview,修改编译环境。2、添加KSP依赖在根目录build.gradle中,在插件列表闭包中引入KSP插件依赖3、添加KSP声明所有模块必须添加KSP插件声明,否则会提示找不到KSP工具。4、使用KSP在所有模块的依赖闭包中导入router的依赖。需要注意的是,所有模块都必须导入ksp"cn.therouter:apt:1.1.3-beta1",不仅仅在底层模块ksp。(以下实现只能在底层引入,上传传递依赖)。从1.1.3-beta1版本开始支持KSP