【无标题】

TheRouter是货拉拉开源的一款先进的Android路由框架,支持组件化、跨模块调用及动态化功能。本文详细介绍如何接入TheRouter,包括不同Gradle版本的配置方法、kapt的引入方式及如何使用该框架进行页面跳转。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值