一、什么是路由库?
路由库是一种用于在 Android 应用中管理页面跳转和组件通信的工具,它可以帮助开发者实现:
- 解耦:页面之间的跳转不再需要直接依赖具体的 Activity/Fragment 类
- 灵活配置:支持动态路由、拦截器、降级策略等高级功能
- 统一管理:集中管理所有路由配置,便于维护和扩展
- 类型安全:支持编译时检查,减少运行时错误
二、本路由库的特点
本路由库是一个轻量级、功能强大的 Android 路由框架,具有以下特点:
- 注解驱动 :使用简洁的注解标记需要路由的页面和参数
- 编译时生成 :通过注解处理器在编译时生成路由表,无运行时反射开销
- 类型安全 :支持参数自动注入和类型检查
- 功能丰富 :支持 Activity、Fragment 路由,拦截器,降级策略等
- 易于扩展 :模块化设计,易于定制和扩展
三、库的模块结构
本路由库由以下几个核心模块组成:

image.png
四、环境搭建
1. 创建 Android 项目
首先,创建一个新的 Android 项目,或者在现有项目中集成路由库。
2. 集成路由库 方法一:本地依赖(推荐用于开发和调试)
- 将路由库模块复制到项目根目录
- 在 settings.gradle.kts 中添加模块引用:
include(":app")
include(":route-annotation")
include(":route-core")
include(":route-api")
// 如果需要使用插件,还需添加:
// include(":route-plugin"
在 app/build.gradle.kts 中添加依赖:
dependencies {
// 注解依赖
implementation(project(":route-annotation"))
// 路由核心依赖
implementation(project(":route-core"))
// 路由 API 依赖
implementation(project(":route-api"))
// 注解处理器依赖
kapt(project(":route-core"))
}
方法二:远程依赖(推荐用于生产环境)
在 settings.gradle.kts 中添加 JitPack 仓库:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
在 app/build.gradle.kts 中添加依赖(使用符合 Gitee 标签命名要求的版本号)
implementation("com.gitee.nextT.route:route-annotation:v1.3.0")
//
// // 路由核心模块
implementation("com.gitee.nextT.route:route-api:v1.3.0")
//
// // 路由 API 模块
implementation("com.gitee.nextT.route:route-core:v1.3.0")
kapt("com.gitee.nextT.route:route-core:v1.3.0")
// 如果需要使用插件,还需添加:
// kapt("com.gitee.nextT.route:route-plugin:v1.3.0")
3. 基本配置
在 app/build.gradle.kts 中添加 kapt 配置:
// kapt 块(放在顶层,与 android 块同级)
kapt {
arguments {
// 传递模块名参数(值为当前模块名称)
arg("ROUTE_MODULE_NAME", "app")
}
}
// 如果需要使用插件,还需添加:
在项目的根目录添加
classpath("com.android.tools.build:gradle:8.0.2")
classpath("com.gitee.nextT.route:com.isheji.router.plugin.gradle.plugin:v1.3.0")
混淆
# ============================================
# 1. 保留所有路由注解
# ============================================
-keepattributes *Annotation*
-keep @com.isheji.route_annotation.IRoute class * { *; }
-keep @com.isheji.route_annotation.RouteMethod class * { *; }
-keep @com.isheji.route_annotation.RouteInterceptor class * { *; }
-keep @com.isheji.route_annotation.RouteParam class * { *; }
# ============================================
# 2. 保留路由核心类
# ============================================
-keep class com.isheji.route_core.core.RouterCore { *; }
-keep class com.isheji.route_core.model.RouteParamCore { *; }
-keep class com.isheji.route_api.IRouterManager { *; }
-keep class com.isheji.route_core.model.RouteRequest { *; }
-keep class com.isheji.route_core.model.NavigationResult { *; }
# ============================================
# 3. 保留所有 SPI 实现类(重要!)
# ============================================
-keep class * implements com.isheji.route_core.api.IRouteTable { *; }
-keep class * implements com.isheji.route_core.api.IRouteMethod { *; }
-keep class * implements com.isheji.route_core.api.IRouteInterceptor { *; }
-keep class * implements com.isheji.route_core.IRouteParamInjector { *; }
-keep class * implements com.isheji.route_core.api.IDegradeStrategy { *; }
# ============================================
# 4. 保留自动生成的路由表类
# ============================================
-keep class com.isheji.route_core.autogen.UnifiedRouteTable_* { *; }
-keep class com.isheji.route_core.autogen.RouteRegister_* { *; }
-keep class com.isheji.route_core.generated.RouteMethod_* { *; }
-keep class com.isheji.route_core.generated.RouteMethodRegistry { *; }
-keep class com.isheji.route_core.generated.ParamInjector_* { *; }
# ============================================
# 5. 保留路由注册方法
# ============================================
-keepclassmembers class * {
public void register();
public static void registerRoutes();
public static void registerMethods();
public static void registerInjectors();
}
# ============================================
# 6. 保留被 @RouteParam 注解的字段
# ============================================
-keepclassmembers class * {
@com.isheji.route_annotation.RouteParam <fields>;
}
# ============================================
# 7. 保留被 @RouteMethod 注解的方法
# ============================================
-keepclassmembers class * {
@com.isheji.route_annotation.RouteMethod <methods>;
}
# ============================================
# 8. 保留拦截器类
# ============================================
-keep class * implements com.isheji.route_core.api.IRouteInterceptor {
public <init>();
public <methods>;
}
# ============================================
# 9. 保留降级策略类
# ============================================
-keep class * implements com.isheji.route_core.api.IDegradeStrategy {
public <init>();
public <methods>;
}
# ============================================
# 10. 保留 Kotlin 相关
# ============================================
-keepclassmembers class **$WhenMappings {
<fields>;
}
-keep class kotlin.Metadata { *; }
-keepclassmembers class kotlin.Metadata {
public <methods>;
}
# ============================================
# 11. 保留序列化相关
# ============================================
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
!static !transient <fields>;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve();
}
# ============================================
# 12. 保留枚举类
# ============================================
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
# ============================================
# 13. 保留泛型信息
# ============================================
-keepattributes Signature
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes EnclosingMethod
# ============================================
# 14. 保留调试信息(可选,用于定位问题)
# ============================================
-keepattributes SourceFile,LineNumberTable
-renamesourcefileattribute SourceFile
# ============================================
# 15. 警告抑制(可选)
# ============================================
# 如果遇到警告,可以根据实际情况添加 -dontwarn
# -dontwarn com.isheji.route_core.**
五、验证环境搭建
- 同步 Gradle 项目
- 构建项目,确保没有编译错误
- 如果使用本地依赖,检查各模块是否正确导入
- 如果使用远程依赖,检查依赖是否成功下载
至此,路由库的环境搭建已经完成,接下来我们将开始学习如何使用路由库实现页面跳转和参数传递。
地址:https://gitee.com/nextT/route