零基础接入TheRouter

简介: TheRouter是货拉拉开源的路由框架,针对Android平台实现组件化、跨模块调用、动态化等功能的集成框架,基本上算当前最先进的路由库了。

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

  1. 老版本接入classpath

对于老版本的Gradle,需要手动引入classpath,在TheRouter官方Github首页也有接入介绍

classpath "cn.therouter:plugin:1.1.1"

  1. 引入插件

找到项目里全部的app模块(一般只会有一个,特殊项目会有多个)。也就是整个工程的所有build.gradle文件里面,只要是有com.android.application这个的模块,都要加上如下代码

// 老版本这样写
apply plugin: 'therouter'

// 新版本这样写
id 'therouter'
新版本的Gradle 老版本的Gradle
(被注释掉的那个就是kapt插件,这里我是用了更先进的ksp)
  1. 引入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 {
}
  1. 添加参数注入

这一步如果在base里面写了的话就不用每个Activity都加了。

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    TheRouter.inject(this);
}
  1. 发起跳转

也就是原来使用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预览版,并修改编译环境。

  1. 添加KSP依赖

根目录build.gradle中,插件列表闭包内引入KSP插件依赖

  1. 添加KSP声明

所有模块都要加上KSP插件的声明,否则会提示找不到KSP工具。

  1. 使用KSP

在所有模块的dependencies闭包内,引入therouter的依赖,需要注意的是,所有模块都要引入ksp "cn.therouter:apt:1.1.3-beta1",不能只在最底层模块引入ksp。

(下面的 implementation 可以只在最底层引入,上传传递依赖)。

  • KSP 是从 1.1.3-beta1 版本开始支持的

目录
相关文章
|
7月前
|
负载均衡 网络协议 安全
【开源视频联动物联网平台】SIP协议的特点
【开源视频联动物联网平台】SIP协议的特点
101 1
|
7月前
|
消息中间件 DataWorks 物联网
MQTT问题之接入阿里云物联网平台如何解决
MQTT接入是指将设备或应用通过MQTT协议接入到消息服务器,以实现数据的发布和订阅;本合集着眼于MQTT接入的流程、配置指导以及常见接入问题的解决方法,帮助用户实现稳定可靠的消息交换。
432 1
EMQ
|
Prometheus 监控 物联网
EMQX 5.0 全新网关框架:轻松实现多物联网协议接入
本文将对EMQX全新的网关框架及功能使用进行详细解读,帮助读者更好地利用EMQX的多协议接入能力连接各类设备,满足更多物联网场景的数据接入需求。
EMQ
829 16
EMQX 5.0 全新网关框架:轻松实现多物联网协议接入
|
7月前
|
XML JSON 网络协议
【开源视频联动物联网平台】设备接入
【开源视频联动物联网平台】设备接入
74 2
|
存储 JavaScript 物联网
设备接入物联网平台|学习笔记
快速学习设备接入物联网平台
422 15
设备接入物联网平台|学习笔记
|
JSON 运维 物联网
设备接入 | 学习笔记
快速学习设备接入
 设备接入 | 学习笔记
|
JSON JavaScript 安全
服务器接入指南|学习笔记
快速学习服务器接入指南
118 0
服务器接入指南|学习笔记
|
编解码 数据安全/隐私保护
中继网关转码设备与IMS对接说明
中继网关转码设备与IMS对接说明
|
传感器 数据采集 存储
物联网平台如何支持设备的多样化接入
我们常说,物联网平台的使命就是将物理世界映射到数字世界,而对于具体的一个物联网设备而言,要完成数字化的前提,首先是必须要能够通过某种方式直接或者间接的“接入”到云端。从“接入”这个视角去看,传统的互联网场景下,往往以app、web接入为主,app和浏览器在接入上的实现一般都是比较标准的,相应的提供接入服务的云端实现也就比较标准。而在物联网世界中,情况就大不相同了,千奇百怪的设备,特点各异的应用场景,组合出非常多样化的接入需求,因而对于物联网的接入层的实现也就提出了多样化的挑战。
2430 16