XRouter

一个轻量级的Android路由框架,基于ARouter上进行改良,优化Fragment的使用,可结合XPage使用。

XRouter

api I Star

一个轻量级的Android路由框架,基于ARouter上进行改良,优化Fragment的使用,可结合XPage使用。

特征

由于是借鉴了ARouter,拥有ARouer所有特征,并在此基础上加入了Fragment的路由。

典型应用

添加Gradle依赖

1.先在项目根目录的 build.gradle 的 repositories 添加:

allprojects {
     repositories {
        ...
        maven { url "https://jitpack.io" }
    }
}

2.再在项目根目录的 build.gradle 的 dependencies 添加xrouter-plugin插件:

buildscript {
    ···
    dependencies {
        ···
        classpath 'com.github.xuexiangjys.XRouter:xrouter-plugin:1.1.0'
    }
}

3.在主项目的 build.gradle 中增加依赖并引用xrouter-plugin插件

apply plugin: 'com.xuexiang.xrouter' //引用xrouter-plugin插件实现自动注册

dependencies {
    ···
    implementation 'com.github.xuexiangjys.XRouter:xrouter-runtime:1.1.0'
    annotationProcessor 'com.github.xuexiangjys.XRouter:xrouter-compiler:1.1.0'
}

4.进行moduleName注册

defaultConfig {
    ...
    javaCompileOptions {
        annotationProcessorOptions {
            arguments = [ moduleName : project.getName() ]
        }
    }
}

5.在主项目的Application中初始化XRouter

private void initXRouter() {
    if (isDebug()) {           // 这两行必须写在init之前,否则这些配置在init过程中将无效
        XRouter.openLog();     // 打印日志
        XRouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
    }
    XRouter.init(this);
}

private boolean isDebug() {
    return BuildConfig.DEBUG;
}

在Library中使用XRouter的配置

1.进行moduleName注册

defaultConfig {
    ...
    javaCompileOptions {
        annotationProcessorOptions {
            arguments = [ moduleName : project.getName() ]
        }
    }
}

2.在项目的 build.gradle 中增加XRouter依赖。

dependencies {
    ···
    implementation 'com.github.xuexiangjys.XRouter:xrouter-runtime:1.1.0'
    annotationProcessor 'com.github.xuexiangjys.XRouter:xrouter-compiler:1.1.0'
}

在Kotlin项目中使用XRouter的配置

1.引用kotlin-kapt插件

apply plugin: 'kotlin-kapt'

2.进行moduleName注册

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

3.在项目的 build.gradle 中增加XRouter依赖。

dependencies {
    ···
    implementation 'com.github.xuexiangjys.XRouter:xrouter-runtime:1.1.0'
    kapt 'com.github.xuexiangjys.XRouter:xrouter-compiler:1.1.0'
}

代码混淆

-keep public class com.xuexiang.xrouter.routes.**{*;}
-keep class * implements com.xuexiang.xrouter.facade.template.ISyringe{*;}

# 如果使用了 byType 的方式获取 Service,需添加下面规则,保护接口
-keep interface * implements com.xuexiang.xrouter.facade.template.IProvider

# 如果使用了 单类注入,即不定义接口实现 IProvider,需添加下面规则,保护实现
-keep class * implements com.xuexiang.xrouter.facade.template.IProvider

特别感谢

https://github.com/alibaba/ARouter

联系方式