
TheRouter 核心功能具备四大能力:
最新版本号,请访问:(github/releases)
// 项目根目录 build.gradle 引入
classpath 'cn.therouter:plugin:1.2.2'
// app module 中引入
apply plugin: 'therouter'
// 依赖
kapt "cn.therouter:apt:1.2.2"
implementation "cn.therouter:router:1.2.2"
框架内部包含自动初始化功能,详见单模块自动初始化能力
无需任何初始化代码。但推荐你根据业务设置否为Debug环境,用以查看日志信息。
Application.attachBaseContext() 方法中尽可能早设置当前是否为Debug环境。
@Override
protected void attachBaseContext(Context base) {
TheRouter.setDebug(true or false);
super.attachBaseContext(base);
}
在Activity 或 Fragment 的 onCreate()方法中调用,建议直接在BaseActivity(BaseFragment)中做
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TheRouter.inject(this);
}
关于注解@Route的参数含义,请查看文档:页面导航跳转能力
@Route(path = "http://therouter.com/home", action = "action://scheme.com",
description = "第二个页面", params = {"hello", "world"})
public class HomeActivity extends BaseActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TheRouter.build("要跳转的目标页Path")
.withInt("intValue", 12345678) // 传 int 值
.withString("str_123_Value", "传中文字符串")
.withBoolean("boolValue", true)
.withLong("longValue", 123456789012345L)
.withChar("charValue", 'c')
.withDouble("double", 3.14159265358972)
.withFloat("floatValue", 3.14159265358972F)
.navigation();
}
}
可在local.properties配置编译期属性(warning输出日志,error直接报错)
从 1.2.3-rc1版本开始,编译器配置已经迁移到build.gradle中,具体请查看:1.2.3版本编译改动
THEROUTER_OPEN_INCREMENTAL=true (true/false可选,默认是false)Activity检测Activity,通常是因为旧代码删除时忘记清理路由表了,这里可选报错或警告,提供参考。CHECK_ROUTE_MAP=warning (warning/error可选,不加则不会执行检测)@FlowTask的dependsOn参数声明了一个不存在的任务,通常情况下是由于任务名书写错误,建议设置为error,尽早在编译期发现问题。
CHECK_FLOW_UNKNOW_DEPEND=warning (warning/error可选,不加则不会执行检测)# 如果使用了 Fragment 路由,需要保证类名不被混淆
# -keep public class * extends android.app.Fragment
# -keep public class * extends androidx.fragment.app.Fragment
# -keep public class * extends android.support.v4.app.Fragment
-keep class androidx.annotation.Keep
-keep @androidx.annotation.Keep class * {*;}
-keepclassmembers class * {
@androidx.annotation.Keep *;
}
-keepclasseswithmembers class * {
@androidx.annotation.Keep <methods>;
}
-keepclasseswithmembers class * {
@androidx.annotation.Keep <fields>;
}
-keepclasseswithmembers class * {
@androidx.annotation.Keep <init>(...);
}
-keepclasseswithmembers class * {
@com.therouter.router.Autowired <fields>;
}
可使用迁移工具一键迁移:
如果项目中使用了ARouter的IProvider.init()方法,可能需要手动处理初始化逻辑。
如下图:

TheRouter
├─app
│ └──代码使用示例Demo
├─business-a
│ └──用于模块化业务模块的演示模块
├─business-b
│ └──用于模块化业务模块的演示模块
├─business-base
│ └──用于模块化基础模块的演示模块
├─apt
│ └──注解处理器相关代码
├─plugin
│ └──编译期 Gradle 插件源码
└─router
└──路由库核心代码
local.properties,声明你想要调试的模块
例如希望源码调试apt模块,则声明apt=true即可plugin调试比较特殊,需要修改module名。
plugin文件夹名为buildSrc(注意大小写)build.gradle中的classpath引用(不需要了)