Router-Android

Introduction: 通过注解实现路由跳转规则
More: Author   ReportBugs   
Tags:

简单的说功能大部分和阿里美团的路由都半斤八两吧,以前公司拿来做组件化拆分的,支持编译时注册以及增量编译等等,整体 kt 重构过一次。

支持参数跳转,以及 startActivityForResult 操作,并提供成功失败回掉监听等。

同时项目升级了 kapt 版本,已经支持 kapt 的增量编译了。

wmrouter 增量编译

如果使用 wmrouter 的各位,可以直接用我的插件替换工程内的路由初始化,应该能解决项目编译的问题。基本测试都通过了。

buildscript {
    dependencies {
        classpath 'com.kronos.plugin:AutoRegister:0.5.5'
          }
}
apply plugin: 'router-register'
AutoRegister {
    REGISTER_PACKAGE_NAME = "com.sankuai.waimai.router.generated.service"
    REGISTER_CLASS_NAME = "com.sankuai.waimai.router.generated.ServiceLoaderInit"
    REGISTER_FUNCTION_NAME = "init"
    REGISTER_CLASS_FUNCTION_NAME = "init"
}

使用大法

  1. 根目录 build.gradle 添加
buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.kronos.plugin:AutoRegister:0.5.4'
    }
}
  1. 项目目录增加路由注册插件
apply plugin: 'router-register'

dependencies {
    compile 'com.github.leifzhang:routerLib:0.5.1'
    kapt "com.github.leifzhang:compiler:0.5.1"
}
万一你不想用 plugin 了,我给你准备了一个慢一点的还在方式,以前偷的 arouter 的类反射机制的。
dependencies {
    // 如果你不要用 transform
    implementation project(':EmptyLoader')
}
  1. ActivityRouterCallback添加注解
@BindRouter(urls = {"https://wwww.github.com"})
public class TestActivity extends Activity {

}
@BindRouter(urls = {"https://wwww.baidu.com"}, interceptors = {TestInterceptor.class})
public class SimpleCallBack implements RouterCallback {
    @Override
    public void run(RouterContext context) {
        Toast.makeText(context.getContext(), "testing", Toast.LENGTH_SHORT).show();
    }
}
  1. 万一有高仿的路由出现,可以这样
 @BindRouter(urls = { "https://github.com/leifzhang"}, weight=10)
 public class TestActivity extends Activity {

 }
  1. 启动一个路由跳转

直接启动可以用这个:

    Router.sharedRouter().open("https://github.com/leifzhang", this);

复杂的多参数传递可以用这个:

  val request = KRequest("https://www.baidu.com/test", onSuccess = {
                    Log.i("KRequest", "onSuccess")
                }, onFail = {
                    Log.i("KRequest", "onFail")
                }).apply {
                    activityResultCode = 12345
                }.start(this)

如果是 Module 的特别注意

kapt {
    arguments {
        arg("ROUTER_MODULE_NAME", project.getName())
    }
}

有事?

可以 qq 找我 454327998

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools