本文介绍软件平台的路由规则设计 ,不限于移动端 ,涵盖 移动端 (手机、平板)、Web 、电脑(桌面) 、手表与手环等智能穿戴。结合官方文档与业界实践,系统介绍路由的理论、演进与工程实现;软件体系覆盖 iOS、Android、HarmonyOS、Flutter、MacOS、WinOS、WebApp、ReactNative、WatchOS 及智能穿戴形态,适用于多端统一路由架构设计参考。
一、引言与定义
1.1 什么是软件平台路由
软件平台路由 (Software Platform Routing)指在任意端态 的应用内部,根据某种规则 (通常是 URL、Path 或路由名)将请求解析并分发 到对应页面、视图、组件或服务的过程。其本质是「地址 → 目标」的映射与执行链路,是模块化、组件化架构下解耦与导航的基础设施。
覆盖范围(不限于移动端):
| 端态 | 说明 | 典型平台/形态 |
|---|---|---|
| 移动端 | 手机、平板上的原生或跨平台 App | iOS、Android、HarmonyOS、Flutter、ReactNative |
| Web | 浏览器内的单页/多页应用、PWA | WebApp、History/Hash 路由、React Router / Vue Router |
| 电脑(桌面) | 桌面操作系统上的应用 | MacOS、WinOS |
| 手表、手环等智能穿戴 | 手表、手环及其他可穿戴设备上的应用 | WatchOS、HarmonyOS 穿戴、第三方手环/手表系统 |
- 狭义:页面/视图跳转(如 Activity、ViewController、Widget、Web 路由、穿戴界面栈)。
- 广义 :除页面外,还包括功能唤醒(调用能力、获取服务、打开弹窗/浮层、执行动作等)、跨进程通信、Web 与 Native 互跳等,即「通过统一入口到达任意可寻址能力」。
本专题同时考虑两类路由诉求:
| 路由类型 | 含义 | 典型场景 | 执行结果 |
|---|---|---|---|
| 页面跳转路由 | 根据 path 打开一个完整页面/视图并压栈或替换 | 列表→详情、设置页、Web 内路由切换 | 导航栈变化,用户看到新页面 |
| 功能唤醒路由 | 根据 path 触发某种能力或获取某种服务,不必然打开整页 | 打开分享面板、调起登录弹窗、获取用户服务实例、执行埋点/动作、打开浮层、调用模块能力 | 可能无新页面(仅执行逻辑)、或弹出模态/浮层、或返回服务实例 |
功能唤醒 示例:/action/share 调起分享、/service/user 获取用户服务、/modal/login 打开登录弹窗、/action/track 执行埋点。与页面跳转共用同一套 path 协议与路由表,通过 路由项类型(page / action / service)区分执行方式。
在超级 App 或跨端统一产品(日活千万级、多业务线、多端发布)中,路由还承担动态下发、权限控制、埋点与降级等职责,成为稳定性与性能的关键环节。[^1]
1.2 为什么需要路由规则
| 需求 | 说明 |
|---|---|
| 解耦 | 调用方不依赖目标页面的具体类名或模块,仅依赖「路径」协议。 |
| 统一入口 | 外部(H5、推送、短链)与内部跳转共用一套规则,便于运营与数据分析。 |
| 动态化 | 通过服务端下发路由表或配置,实现 A/B 测试、活动页替换、降级。 |
| 可观测 | 所有跳转经统一路由层,便于埋点、鉴权与监控。 |
| 同体系跨端协同 | 同一产品在手机、Web、电脑、手表等多端共用 path 协议,一条链接多端一致打开、设备间可接力与状态同步。 |
1.3 同体系跨端跨平台协同
同体系 指同一产品/业务域下的多端应用(如同一款 App 的 iOS 版、Android 版、Web 版、手表版、桌面版)。跨端跨平台协同要求路由设计在体系内保持一致,使同一 path 在不同端打开同一业务目标,并在需要时实现设备间协同。
| 协同维度 | 含义 | 路由设计要点 |
|---|---|---|
| 协议统一 | 各端采用同一套 path、query、路由类型(页面/功能唤醒)规范 | 统一 path 命名空间(如 /app/detail/:id),各端适配层将 path 映射到本端页面或能力 |
| 同一链接多端一致 | 同一 URL/path 在 Web 打开即 Web 页,在 App 打开即 App 页,在手表打开即手表页 | 深链接与 Web URL 使用相同 path;各端路由表对同一 path 指向等价业务目标 |
| 跨端互跳与续传 | Web 跳 App、App 跳 Web、「在电脑上继续」等 | 通过 Universal Links / App Links / 自定义 Scheme 传递 path+query;未安装时 Web 承载,安装后 App 打开同一 path |
| 设备间路由同步 | 手表与手机、手机与电脑等同一用户多设备间路由状态或意图同步 | 手表点击某 path 可同步到手机打开;或通过服务端/账号侧记录「当前 path」,多端拉取后一致展示 |
| 配置与表跨端一致 | 路由表、动态下发、降级策略在体系内统一或可按端裁剪 | 服务端按端态下发路由配置;path 冲突检测、灰度在同一体系内统一管理 |
上述协同建立在统一 path 协议 与各端适配层 之上:协议保证「说什么」,适配层保证「在各端怎么做」;同体系内 path 语义一致,跨端链接、接力与状态同步才可行。详见 08-软件体系与多平台路由对照 与 07-通用路由管理组件设计。
参考:鸿蒙超级终端思想 (HarmonyOS 超级终端)
华为鸿蒙提出的超级终端 ,强调多设备像「一台设备」一样协同工作,而非简单互联。其核心依赖分布式软总线 (设备发现与连接)、分布式数据管理 (跨设备数据与状态同步)、分布式任务调度 (任务与界面在设备间迁移、硬件能力共享)。与本专题的对应关系可理解为:统一 path 协议 相当于在应用层约定「同一任务/同一目标」的寻址方式;设备间路由同步与接力 (同一 path 在多端打开、续传)对应分布式任务调度与「在另一台设备上继续」;路由表与配置跨端一致 则支撑跨设备状态与能力的一致体验。设计多端路由时,可借鉴超级终端「一个账号、多设备一体」的理念,让 path 成为跨端任务与状态迁移的公共契约。参见 08-软件体系与多平台路由对照 中「鸿蒙超级终端与路由设计」小节。
同体系跨端协同示意(同一 path 在多端一致打开,设备间可同步/接力):
1.4 路由规则全貌(思维导图)
二、历史演进
2.1 阶段概览
2.2 各阶段简述
-
原生直接引用(2010 年前后)
直接
startActivity(new Intent(this, TargetActivity.class))或pushViewController(TargetVC())。模块间强依赖,难以支持 H5/运营链接统一跳转。 -
URL Scheme / Intent Filter(约 2010--2015)
- iOS :
myapp://page/detail?id=1,在 Info.plist 声明CFBundleURLSchemes。 - Android :
<intent-filter>声明scheme + host + path,通过Intent.ACTION_VIEW打开应用并解析 Uri。
实现了「链接 → 打开 App」的深链接雏形,但 Scheme 易冲突、无法校验归属,且部分容器(如微信)会拦截自定义 Scheme。[^2][^3]
- iOS :
-
Universal Links / App Links(2015 至今)
- iOS Universal Links :使用 HTTPS URL(如
https://example.com/detail/1),通过apple-app-site-association证明域名归属,系统级跳转、可突破部分容器限制。[^2] - Android App Links :同样基于 HTTPS +
assetlinks.json验证,Android 6.0+ 支持,可免歧义对话框。[^4]
深链接从「自定义 Scheme」升级为「可验证的 Web URL」,与 Web 和 SEO 对齐。
- iOS Universal Links :使用 HTTPS URL(如
-
组件化路由框架(约 2015--2020)
为解决多模块、多团队下的解耦与编译隔离,出现基于注解 + 编译期代码生成的路由框架:
- ARouter (阿里):APT 扫描
@Route生成路由表,支持分组、拦截器、服务发现。[^5][^6] - MGJRouter 、JLRoutes (iOS)等:运行时注册
URL → Block,配合 Scheme 做统一跳转。
特点:编译期生成映射、避免反射、支持按模块分组加载。
- ARouter (阿里):APT 扫描
-
声明式路由与 Navigator 2.0(2020 至今)
- Flutter Navigator 2.0 :路由栈由「状态」驱动,通过
Router、RouteInformationParser、RouterDelegate将 URL 解析为List<Page>,便于深链接、多 Tab、复杂返回栈。[^7][^8] - go_router 等:在 Navigator 2.0 之上封装 path/query、redirect、refreshListenable,与 Web 路由语义一致。
- Flutter Navigator 2.0 :路由栈由「状态」驱动,通过
-
超级 App 路由体系(大厂实践)
在 ARouter 等基础上,针对冷启动、内存、拦截链延迟、AGP 升级等问题,演进为:
- 动态 SPI / 按需加载路由表;
- 热/温/冷分层路由表(LRU 内存 → MMAP → SQLite);
- 拦截器并行化与超时熔断;
- 编译期路由冲突校验与动态下发。[^1]
三、核心概念与原理
3.1 路由三要素与路由类型
| 要素 | 含义 | 示例 |
|---|---|---|
| Path / URL | 唯一标识一个目标(页面或能力/服务) | /detail, /action/share, myapp://goods/123 |
| 路由表(Route Table) | Path → 目标(页面 Class、Handler、服务工厂、Action)的映射 | Map<Path, RouteMeta> 或生成类 |
| 导航方式 | 如何执行目标:页面用 push/replace/present;功能唤醒用 invoke/getService/openModal 等 | 由路由项类型与框架决定 |
路由类型(同一 path 协议下区分执行方式):
| 类型 | 说明 | 典型执行方式 |
|---|---|---|
| 页面跳转 | 打开一个完整页面/视图,改变导航栈 | push、replace、present |
| 功能唤醒 | 触发能力、获取服务、打开弹窗/浮层、执行动作,不必然打开整页 | getService、invokeAction、openModal、openOverlay |
3.2 路由表从何而来
- 编译期生成 :通过 APT (Annotation Processing Tool)扫描
@Route(path = "/detail")等注解,生成如ARouter$$Group$$main的类,在初始化或首次访问时加载。[^5][^6] - 运行时注册 :应用启动或模块加载时调用
register(path, handler),将 path 写入内存表。 - 动态下发:从服务端拉取 JSON 路由表,覆盖或合并本地表,实现活动页、灰度、降级。[^9]
3.3 拦截器链(Interceptor Chain)
路由在「查表 → 执行」之间,通常插入拦截器链,用于:
- 登录态校验、权限检查
- 埋点、风控
- 降级(如目标不可用时跳转兜底页)
- 异步预处理(如预拉取数据)
链式结构便于按优先级顺序执行 与提前中断 (如未登录则拦截并跳转登录页)。在千万级 App 中,拦截器会做并行/异步化 与超时熔断,以控制主线程阻塞与跳转延迟。[^1]
3.4 深链接与路由的衔接
- 外部:用户点击 Universal Link / App Link / 短链 → 系统或 WebView 打开 App,并传入 URL。
- 内部 :App 将 URL 交给路由层 解析:
- 解析 path、query、fragment;
- 查路由表得到目标页面或 Action;
- 经拦截器后执行跳转或服务调用。
因此,统一的路由规则是「外链进 App」与「App 内跳转」一致性的基础。
深链接与 App 内路由的关系可概括为:
四、路由匹配算法
4.1 问题抽象
给定一个输入路径 (如 /user/123/profile)和一组路由规则(可能含静态段、动态段、正则),求:
- 命中的规则;
- 解析出的参数 (如
userId=123)。
4.2 常见规则类型
- 静态路径 :
/home、/setting,精确匹配。 - 动态段 :
/user/:id、/detail/[id],一段匹配任意非空字符串。 - 正则 :如
\/user\/\d+,用于更复杂约束(部分框架如 TheRouter 支持)。[^9] - 通配符 :
/file/*,匹配剩余 path。
4.3 路由匹配算法(伪代码)
以下给出一种基于分段 + 优先精确匹配的算法,与常见路由库(如 go_router、Express)思路一致。
ini
算法:RouteMatch(path, routeTable)
输入:path(如 "/user/123/profile"),routeTable(规则列表,每条含 pattern、handler、priority)
输出:匹配的 route 及解析出的 params,若无则返回 null
1. 将 path 按 '/' 分割为 segments[],去掉首尾空串
2. 将 routeTable 按优先级排序(精确 > 动态 > 通配符)
3. FOR EACH route IN routeTable:
a. 将 route.pattern 按 '/' 分割为 patternSegments[]
b. 若 patternSegments.length != segments.length 且 route 非通配符,则 CONTINUE
c. params = {}
d. FOR i = 0 TO min(segments.length, patternSegments.length) - 1:
- 若 patternSegments[i] 以 ':' 或 '[' 开头,则视为动态段,params[name] = segments[i]
- 否则若 patternSegments[i] != segments[i],则 BREAK 内层循环,CONTINUE 外层
e. 若全部段匹配(或通配符匹配成功),返回 (route, params)
4. 返回 null
复杂度 :规则数 R,路径段数 S,单次匹配 O(R·S)。生产环境会通过 Trie 或树形结构 将公共前缀合并,减少比较次数;带正则时需在命中候选后再做正则校验。[^10]
4.4 路由表查找结构示意
4.5 匹配示例(伪代码)
以 path = /user/123 与两条规则 /user/list、/user/:id 为例:
ini
segments = ["user", "123"]
规则1: patternSegments = ["user", "list"] → 第二段 "list" != "123",不匹配
规则2: patternSegments = ["user", ":id"] → 第二段为动态段,params["id"] = "123",匹配
→ 返回 (RouteMeta(DetailPage), { id: "123" })
五、路由执行流程(含拦截器)
整体流程可概括为:解析 → 查表 → 拦截链 → 执行。下图给出带拦截器的路由执行流程。
六、多平台路由机制概览(九大平台)
本专题软件体系覆盖 iOS 、Android OS 、HarmonyOS 、Flutter 、MacOS 、WinOS 、WebApp 、ReactNative App 、WatchOS 。下表为各平台深链接与 App 内路由的简要对照,详见 08-软件体系与多平台路由对照。
| 平台 | 深链接机制 | App 内路由 / 导航 |
|---|---|---|
| iOS | URL Scheme + Universal Links | Router 单例、UINavigationController、push/present |
| Android | Intent Filter + App Links | ARouter/TheRouter、startActivity、Fragment |
| HarmonyOS | Want / scheme、HTTPS 关联 | 路由表、router.pushUrl、页面栈 |
| Flutter | 宿主配置 + app_links | Navigator 2.0、go_router |
| MacOS | URL Scheme + Universal Links(同 iOS) | NSWindow/ViewController、与 iOS 类似 |
| WinOS | 协议关联、启动参数 | Frame.Navigate、框架内路由 |
| WebApp | 同源/多域即"深链接" | History / Hash、React Router / Vue Router |
| ReactNative | 原生 Scheme + App Links,Linking API | React Navigation、linking 配置 |
| WatchOS | 简化 Scheme、与 iPhone 协同 | 简化路由、WKInterfaceController |
6.1 iOS
- URL Scheme :
Info.plist中CFBundleURLSchemes,打开myapp://path。[^2] - Universal Links :域名下配置
apple-app-site-association,App 内通过NSUserActivity(NSUserActivityTypeBrowsingWeb)接收 URL 并交给路由层解析。[^2][^3] - App 内路由 :多为基于 URL 的 Target-Action 或 Router 单例,将 URL 映射到
UIViewController或工厂 Block。
6.2 Android
- Intent + Intent Filter :
<data android:scheme="myapp" android:host="page" android:pathPrefix="/detail" />,通过Intent.getData()获取 Uri 并解析。[^4] - App Links :HTTPS +
assetlinks.json验证,自动打开 App 无选择框。[^4] - 路由框架 :ARouter、TheRouter 等通过注解生成路由表,
path对应 Activity/Fragment 或服务。
6.3 Flutter
- Navigator 1.x :命令式
push/pop,MaterialApp.routes+onGenerateRoute做命名路由与参数传递。[^11] - Navigator 2.0 :声明式,由
Router、RouteInformationParser、RouterDelegate将RouteInformation(如 URL)解析为List<Page>,再交给Navigator.pages。[^7][^8] - go_router:封装 path/query、redirect、refreshListenable,与 Web 与深链接场景对齐。[^11]
6.4 HarmonyOS
- 深链接 :通过 Want 的 uri 或 scheme 打开指定 Ability;支持 HTTPS 关联配置,思路与 Android App Links 相近。
- App 内路由 :Stage 模型下使用路由表或注解将 path 映射到页面 Ability,通过
router.pushUrl()等 API 导航;可与统一 Router 协议对齐(path + query)。
6.5 MacOS
- 深链接:与 iOS 类似,在 Info.plist 中配置 URL Scheme;支持 Universal Links(同一 AASA 域名)。
- App 内路由:使用 NSWindow、NSViewController 或 SwiftUI 窗口栈;可复用与 iOS 一致的 path 协议与 Router 门面,适配层实现 openPage/replacePage 为窗口或 VC 切换。
6.6 WinOS
- 深链接:通过包清单或注册表关联自定义协议;部分场景使用启动参数传递 path/query。
- App 内路由:WinUI / WPF / UWP 等框架内使用 Frame.Navigate 或等效 API;适配层将 path 映射到对应 Page/View,与统一 Router 协议对齐。
6.7 WebApp
- "深链接" :即 URL 本身(同源或多域);通过
location.pathname、searchParams获取 path 与 query。 - 路由:SPA 使用 History API 或 Hash 路由;React Router、Vue Router 等维护 path 与组件的映射,与 Native 共用 path 规范可实现 H5 与 App 内同一套 path。
6.8 ReactNative App
- 深链接 :依赖原生 iOS/Android 的 URL Scheme 与 App Links 配置;在 JS 层通过 Linking API(getInitialURL、addEventListener)接收 URL,再交给 React Navigation 的 linking 配置解析为路由 state。
- App 内路由:React Navigation 声明式维护导航 state;与统一 Router 协议对齐时,可将 path + query 作为 linking 的 path 规范,各端共用一套 path。
6.9 WatchOS
- 深链接:多与 iPhone 端协同,使用简化 URL Scheme 或通过 Watch Connectivity 传递 path;一般不单独配置 Universal Links。
- App 内路由:界面层级较浅,可用简单路由表或少量界面名映射;适配层可实现精简版 openPage(如 push 到指定 WKInterfaceController),与主 App 共用 path 规范便于联动。
七、超级 App 路由设计要点(业界实践)
以下要点综合自腾讯云开发者社区对「千万级 APP 路由系统」的拆解 [^1]、阿里 ARouter [^5][^6]、货拉拉 TheRouter [^9]、滴滴 DRouter [^12] 等公开资料。
7.1 动态 SPI 与按需加载
- 问题:ARouter 全量加载路由表,模块多时类加载与 DEX 扫描耗时长(如 1.2s+),影响冷启动。
- 思路 :按模块使用 SPI (ServiceLoader)或类似机制,在首次访问某模块时再加载该模块的路由表并合并。
- 效果:启动耗时与内存占用显著下降(文中示例:1.2s → 300ms,内存约降 60%)。[^1]
7.2 分层路由表(防 OOM)
- 热路由:最近访问的 path 放在内存(如 LRU,约 1000 条、30 分钟过期)。
- 温路由:周访问 ≥N 次的放在 MMAP 文件。
- 冷路由 :低频路由放 SQLite,按需加载。
→ 在保证命中率的前提下控制内存占用,避免路由表过大导致 OOM。[^1]
7.3 拦截器并行与熔断
- 并行:将可异步的拦截器(如埋点、日志)并行执行,仅强依赖顺序的(如鉴权 → 业务)保持顺序;文中示例 200ms → 80ms。[^1]
- 熔断 :为单次路由执行设超时(如 500ms),超时则
onInterrupt,避免长时间阻塞主线程。
7.4 编译期路由冲突校验
- 在 Gradle 构建阶段收集所有
@Route的 path,若存在重复则构建失败并报冲突 path。 - 可将线上路由冲突故障率压到接近 0。[^1]
7.5 动态下发与安全
- 路由表 JSON 由服务端下发,支持按版本、灰度覆盖本地表。
- 差分更新(如 BSDiff)、签名校验(RSA + CRC32)、降级开关(回退本地表)是常见做法。[^1]
7.6 框架能力对比(简表)
| 能力 | ARouter | TheRouter | DRouter |
|---|---|---|---|
| 动态路由下发 | ✓ | ✓ | ✓ |
| 路径正则匹配 | ✗ | ✓ | ✓ |
| 跨进程通信 | ✗ | ✗ | ✓ |
| 模块自动初始化 | ✗ | ✓ | ✓ |
资料来源:公开技术博客与社区文章 [^1][^9][^12]。
八、应用场景小结
页面跳转类:
- App 内页面跳转:Tab、首页入口、列表进详情等,统一走路由。
- H5 / 运营链接:同一套 path 规则,H5 跳 Native 或 Native 打开 H5。
- 推送 / 短链:点击后解析 URL,经路由打开对应页并带参数。
- 动态化与灰度:通过下发路由表或配置,将某 path 指向新页面或活动页,实现 A/B 与降级。
功能唤醒类:
- 跨模块服务调用 :路由表映射到「获取某 Service 实例」的 Provider(如
/service/user返回用户服务),不打开页面。 - 能力/动作唤醒 :如
/action/share调起分享、/action/track执行埋点、某 path 触发业务 Action,无需整页跳转。 - 弹窗/浮层唤醒 :如
/modal/login打开登录弹窗、/overlay/picker打开选择器浮层,路由表映射到 openModal/openOverlay。 - 混合:同一 path 协议下,按路由项类型(page / action / service / modal)决定是打开页面还是唤醒功能。
8.1 应用场景与入口(泳道图)
8.2 路由管理门面伪代码(通用逻辑)
以下给出「路由门面」的通用逻辑,各端可据此实现具体 Router 类。
lua
类 Router:
依赖: RouteTable table, InterceptorChain chain, PlatformAdapter adapter
方法 navigate(path, params, options):
1. result = table.lookup(path, params)
2. 若 result 为 null,返回 false(或走兜底页)
3. 遍历 chain 中拦截器(按 order 排序):
若 拦截器.process(result) 为 false:
调用 拦截器.onInterrupt(result)
返回 false
4. 根据 result.type 分发(页面跳转 vs 功能唤醒):
若 type 为 service: 返回 adapter.resolveService(result)
若 type 为 action: 返回 adapter.invokeAction(result)
若 type 为 modal: adapter.openModal(result);返回 true
若 type 为 page: 若 options.mode 为 replace 则 adapter.replacePage(result),否则 adapter.openPage(result)
5. 返回 true
方法 handleOpenURL(url):
1. (path, params) = parseURL(url) // 解析 scheme/host/path/query
2. 若 path 为空,返回 false
3. 返回 navigate(path, params)
九、小结与学习路径
- 基础:理解 Path、路由表、拦截器、深链接(Scheme / Universal Links / App Links)。
- 进阶:掌握编译期注解(APT)生成路由表、路由匹配算法与 Trie/树形优化。
- 高级:针对超级 App / 跨端统一产品的 SPI 按需加载、分层路由表、拦截器并行与熔断、编译期冲突校验与动态下发。
将「软件平台路由规则设计 」视为协议 + 查找 + 执行链 的统一模型,不限于移动端 ,涵盖 移动端 、Web 、电脑(桌面) 、手表与手环等智能穿戴 ;同体系跨端跨平台协同依赖统一 path 协议与各端适配层,使同一链接多端一致打开、设备间可接力与状态同步,有助于在多端与多框架间迁移与选型。
9.1 路由方案选型指引(思维导图)
延伸阅读(本专题详细展开)
以下专题文档在本文基础上分别展开,含多端代码示例、流程图、思维导图、泳道图 ,并给出通用路由管理工具组件的跨平台设计:
| 主题 | 文档 |
|---|---|
| URL Scheme / Intent Filter | 02-URL-Scheme与Intent-Filter详解 |
| Universal Links / App Links | 03-Universal-Links与App-Links详解 |
| 组件化路由框架 | 04-组件化路由框架详解 |
| 声明式路由与 Navigator 2.0 | 05-声明式路由与Navigator2.0详解 |
| 大规模与跨端路由体系 | 06-大规模与跨端路由体系详解 |
| 通用路由管理组件设计 | 07-通用路由管理组件设计 |
| 软件体系与多平台路由对照 | 08-软件体系与多平台路由对照 |
参考文献
\^1\] AntDream. 从 ARouter 到自研框架:拆解千万级 APP 路由系统的 6 大核心设计. 腾讯云开发者社区, 2025. [cloud.tencent.com/developer/a...](https://link.juejin.cn?target=https%3A%2F%2Fcloud.tencent.com%2Fdeveloper%2Farticle%2F2506868 "https://cloud.tencent.com/developer/article/2506868") \[\^2\] iOS 深度跳转(Scheme、Universal Link). 极光社区 / CSDN 等. \[\^3\] Apple. Supporting Universal Links. Apple Developer Documentation. \[\^4\] Android. 创建深层链接 / App Links. Android 官方文档. [developer.android.google.cn/training/ap...](https://link.juejin.cn?target=https%3A%2F%2Fdeveloper.android.google.cn%2Ftraining%2Fapp-links%2Fdeep-linking "https://developer.android.google.cn/training/app-links/deep-linking") \[\^5\] 阿里云开发者社区. ARouter 功能介绍以及实现原理. 腾讯云 / 阿里云等转载. \[\^6\] Android 开源系列-组件化框架 Arouter-(三)APT 技术详解. 阿里云开发者社区. [developer.aliyun.com/article/116...](https://link.juejin.cn?target=https%3A%2F%2Fdeveloper.aliyun.com%2Farticle%2F1161057 "https://developer.aliyun.com/article/1161057") \[\^7\] Flutter. Understanding Navigator 2.0. Flutter 社区文档. [docs.flutter.cn/community/t...](https://link.juejin.cn?target=https%3A%2F%2Fdocs.flutter.cn%2Fcommunity%2Ftutorials%2Funderstanding-navigator-v2 "https://docs.flutter.cn/community/tutorials/understanding-navigator-v2") \[\^8\] Flutter Navigator 2.0 的原理和 Web 端实践. 搜狐技术 / CSDN. \[\^9\] TheRouter. 页面跳转能力介绍. [therouter.cn/docs/2022/0...](https://link.juejin.cn?target=https%3A%2F%2Ftherouter.cn%2Fdocs%2F2022%2F08%2F28%2F01 "https://therouter.cn/docs/2022/08/28/01") \[\^10\] TanStack. How we accidentally made route matching more performant. TanStack Blog. \[\^11\] Flutter. 导航与路由 / Deep linking. [docs.flutter.dev/cookbook/na...](https://link.juejin.cn?target=https%3A%2F%2Fdocs.flutter.dev%2Fcookbook%2Fnavigation "https://docs.flutter.dev/cookbook/navigation"), [docs.flutter.dev/ui/navigati...](https://link.juejin.cn?target=https%3A%2F%2Fdocs.flutter.dev%2Fui%2Fnavigation%2Fdeep-linking "https://docs.flutter.dev/ui/navigation/deep-linking") \[\^12\] DRouter:滴滴乘客端自研的 Android 路由框架. 百度开发者中心等.