学习
实践
活动
专区
工具
TVP
写文章
专栏首页开源实验室从零接入 TheRouter
原创

从零接入 TheRouter

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
TheRouter

2. 老版本接入classpath

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

classpath "cn.therouter:plugin:1.1.1"
TheRouter

3. 引入插件

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

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

// 新版本这样写
id 'therouter'

新版本的Gradle

老版本的Gradle

TheRouter
,这里我是用了更先进的ksp)
TheRouter

4. 引入kapt

TheRouter的注解处理依赖kapt执行,所以要在项目里面手动引入,否则无法处理注解

注:所有的模块都必须引入kapt,否则就有可能造成某些路由表不生成。我最开始以为简单,就在最底层模块依赖了kapt,结果上层模块路由表都没有生成,查了好久才发现,所有模块都要加。

TheRouter

如果报找不到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)

TheRouter

AGP我用的是 8.0 的,根目录build.gradle中插件列表

TheRouter

由于新版本的Gradle强制要求最新版本的Android Studio Preview,并且必须Java11编译,所以还得要下载最新的AS预览版,并修改编译环境。

TheRouter
TheRouter

2. 添加KSP依赖

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

TheRouter

3. 添加KSP声明

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

TheRouter

4. 使用KSP

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

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

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

原创声明,本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

登录 后参与评论
0 条评论

相关文章

  • 干货 | 必看!从零接入微信小程序支付

    小程序支付指南 微信小程序与php 实现微信支付 | 链接 微信小程序---设计支付密码的输入框| 链接 e玩转小程序支付之付款(统一下单)| 链接 小程序支付...

    极乐君
  • 从零到一搭建基础架构(8)-业务服务接入基础架构

    本文为稀土掘金技术社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究!

    柏炎
  • TheRouter 页面跳转源码分析

    TheRouter是货拉拉开源的 Android 平台中对页面、服务模块化整合开发、提供路由功能的中间件,提倡的是简单且够用。

    kymjs张涛
  • 从零开始接入腾讯云智能推荐

    本文介绍如何接入腾讯云智能推荐, 快速获得上百人专业算法团队、二十亿+用户画像、几乎覆盖全部网民的推荐系统能力。

    安斌
  • ARouter 迁移到 TheRouter 使用感受

    之前项目中一直用的是 ARouter,但是一直很卡,特意用adb查了一下ARouter的初始化用了131ms。最近发现货拉拉开源了一套更先进的路由框架 TheR...

    kymjs张涛
  • Python系列之零——从零说起!!!

    2017年可谓是人工智能元年,要问哪个行业最火,詹小白不敢确定,但要问哪个编程语言最热门,好吧,詹小白还是不敢说太满。但是!至少从舆论Pytho...

    小小詹同学
  • 从零认识 iptables

    在使用Linux的过程中,很多人和我一样经常接触iptables,但却只知道它是用来设置Linux防火墙的工具,不知道它具体是怎么工作的。今天,我们就从零开始认...

    我是阳明
  • 从零到一,构建你的持续交付(终):从零到一,易;从零到一,难

    如果从这个系列的第一篇看起,直至这一篇为止,我相信一个共识应该是:在技术上实现它非常简单

    御剑
  • 说回 TheRouter

    大约在17年底到18年初的时候,我经常会讲一些当时做模块化开发的心得和踩坑历程。比如这几篇都是那时候写的:《Android 模块化平台设计》、《优雅移除模块间耦...

    用户1907613
  • 货拉拉 Android 模块化路由框架:TheRouter

    TheRouter 是一个 Kotlin 编写,用于 Android 模块化开发的一整套解决方案框架。

    kymjs张涛
  • 从零学习Spring(一)

    今天我们便踏上Spring框架的学习之路,熟悉此公众号的读者知道,公众号正在连载关于MyBatis,Spring MVC,Spring Boot框架的教程。如果...

    用户1093975
  • 从零搭建vue工程

    由于公司的发展,需要使用最新的技术搭建一套前后端分离的代码,于是前端使用了vue来进行搭建页面,所以在学习的过程中遇到的问题以及解决的方案,现在做一下记录,供同...

    小马哥学JAVA
  • 从零玩转Yaip使用

    YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi ...

    杨不易呀
  • idea从零搭建springcloud

    用户5899361
  • 从零玩转QQ登录

    在真正开始对接之前,我们先来聊一聊后台的方案设计。既然是对接第三方登录,那就免不了如何将用户信息保存。首先需要明确一点的是,用户在第三方登录成功之后, 我们能...

    杨不易呀
  • 从零爬着学spark

    为啥叫爬着学 在此之前,我连spark是什么都不清楚,在看完《Spark快速大数据分析》(Learning Spark:Lighting-fast Data A...

    用户1148523
  • 从零配置cdn监控

    注意:腾讯云访问日志中的0状态码对应访问失败请求,所以0状态码的监控可以监控到请求异常信息。如果client访问某个资源在加载时主动断开请求也会记录为0状态码。

    杜志强
  • 从零新建小程序

    一:项目生成 自行下载微信开发者工具-打开微信开发者工具 如下图: 项目:就是项目要存的位置。 AppID:企业级需(小程序申请成功的时候会有这个,个人的不用填...

    企鹅号小编

扫码关注腾讯云开发者

领取腾讯云代金券