安卓路由技术选型调研

本文侧重调研安卓路由框架,以及简单使用对比,适合不熟悉的人快速上手查字典。

一、路由库选型数据

目前看起来基本的功能都过得去,框架也是大体差不多,互相借鉴的,也都支持路由拦截,回调式onActivityResult等便捷功能。所以这里只做数据展示

选型 所属 更新时间 维护状态 Star 技术文章
ARouter 阿里 2020 - 10 功能冻结 / 基本停更GitHub,最高兼容 AGP 7.x 14.5k 稀土掘金
TheRouter 货拉拉 2026 - 03 活跃维护,支持 Android 15、AGP 9 1.3k 知乎稀土掘金
WMRouter 美团 2021 稳定维护,支持 Kotlin 协程 2.4k 美团技术团队
DRouter 滴滴 2023 - 12 基本停更,功能稳定 777 稀土掘金

目前看起来只有TheRouter维护比较积极,所以后面只好简单分析下TheRouter

二、TheRouter快速上手

TheRouter最简单demo示例

1、基础使用

1、添加依赖

app/build.gradle新增依赖

groovy 复制代码
plugins {
    id 'therouter'
}
dependencies {
    implementation 'cn.therouter:router:1.3.2'
    annotationProcessor 'cn.therouter:apt:1.3.2'
}

根目录build.gradle

groovy 复制代码
// 语法要求buildscript必须放最plugins顶部
buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        classpath "cn.therouter:plugin:1.3.2"
    }
}
2、框架初始化

Application onCreate中初始化

java 复制代码
TheRouter.init(this);
TheRouter.setDebug(true);

页面 onCreate注册 (建议在BaseActivity、BaseFragment统一处理)

复制代码
TheRouter.inject(this);
3、使用

要跳转的页面注解@Route

java 复制代码
import com.therouter.demo.R;
import com.therouter.router.Autowired;
import com.therouter.router.Route;

@Route(path = "router://home")
public class HomeActivity extends BaseActivity {

    @Autowired
    String name;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        TextView tvName = findViewById(R.id.tv_name);
        tvName.setText("欢迎:" + name);
    }
}
4、页面跳转回调功能
java 复制代码
TheRouter.build("router://home")
        .withString("name", "TheRouter Java Demo")
        .navigation(this,new NavigationCallback(){
            
        });
5、统一拦截功能
java 复制代码
// 拦截器
NavigatorKt.setRouterInterceptor(new RouterInterceptor() {
    @Override
    public void process(@NonNull RouteItem routeItem, @NonNull InterceptorCallback interceptorCallback) {
        if (false){
            Toast.makeText(MainActivity.this, "未登录", Toast.LENGTH_SHORT).show();
        }
        interceptorCallback.onContinue(routeItem);
    }
});

2、跑通官方demo

扫码下载 (张涛没有提供二维码,自己打的包)

最小改动运行TheRouter官方demo

官方库

app/build.gradle.kts启动多dex支持

groovy 复制代码
defaultConfig {
    multiDexEnabled = true
}

根目录settings.gradle.kts替换

groovy 复制代码
pluginManagement {
    repositories {
        maven(url = "https://maven.aliyun.com/repository/google")
        maven(url = "https://maven.aliyun.com/repository/gradle-plugin")
        maven(url = "https://maven.aliyun.com/repository/public")
        maven(url = "https://maven.therouter.cn:8443/repository/maven-public/")
    }
}
plugins {
    id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven(url = "https://maven.aliyun.com/repository/google")
        maven(url = "https://maven.aliyun.com/repository/central")
        maven(url = "https://maven.therouter.cn:8443/repository/maven-public/")
    }
}

rootProject.name = "TheRouter"

// Include all modules directly
include(":app")
include(":business-a")
include(":business-b")
include(":business-base")
include(":compose")
include(":router")
include(":apt")
相关推荐
plainGeekDev1 天前
依赖管理 → Version Catalog
android·java·kotlin
韩曙亮1 天前
【Flutter】Flutter 进程保活 ③ ( 屏幕常亮设置 | Flutter 禁止息屏、关闭自动锁屏、屏蔽系统屏保 )
android·flutter·ios·屏幕常亮·禁止息屏
爱笑鱼1 天前
NDK、SDK、APP、Framework、Native 到底怎么区分?
android
私人珍藏库1 天前
[Android] 发票制作器-内置多行业专业模板
android·人工智能·app·软件·多功能
阿pin1 天前
Android随笔-PMS
android·pms
悲凉的紫菜1 天前
dariy
android·ide·android studio
2501_915909061 天前
IPA 深度混淆是什么意思?从混淆强度到实际效果的解读
android·ios·小程序·https·uni-app·iphone·webview
LT10157974441 天前
2026年手机机型兼容性测试选型指南:安卓机型碎片化、APP闪退UI错乱如何解决
android·测试工具·ui·智能手机
阿pin1 天前
Android随笔-view是如何显示到屏幕上
android·view
恋猫de小郭1 天前
Flutter material/cupertino 解耦最新进展,已经在做新样式了
android·前端·flutter