一个用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦
使用
1. 在工程build.gradle中添加
classpath 'com.alibaba:arouter-register:1.0.2'
2. 在工程中添加arouter.gradle文件
apply plugin: 'com.alibaba.arouter'
android{
defaultConfig {
//arouter配置
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName(),AROUTER_GENERATE_DOC: “enable”]
}
}
}
}
dependencies {
annotationProcessor ‘com.alibaba:arouter-compiler:1.2.2’
api ‘com.alibaba:arouter-api:1.5.0’
}
3.在各module中的build.gradle中导入arouter.gradle
apply from: '../arouter.gradle'
4.添加注解
// 在支持路由的页面上添加注解(必选)
// 这里的路径需要注意的是至少需要有两级,/xx/xx
@Route(path = "/test/activity")
public class YourActivity extend Activity {
…
}
详情见官方文档
https://github.com/alibaba/ARouter/blob/master/README_CN.md
注意scheme host问题
/**
- example : app://account/login?a=b => /app/account/login?a=b
- @param content
- @return
- 将scheme host格式转换位Arouter可使用的格式,才能路由跳转
*/
private static String wrapPathQuery(String content){
try {
Uri uri = Uri.parse(content);
if (!TextUtils.isEmpty(uri.getScheme()) && !TextUtils.isEmpty(uri.getHost())) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(“/“);
stringBuilder.append(uri.getScheme());
stringBuilder.append(“/“);
stringBuilder.append(uri.getHost());
stringBuilder.append(““);
stringBuilder.append(uri.getPath());
//添加query
String splits []=content.split(“\?”);
if(splits.length>1){
stringBuilder.append(“?”);
stringBuilder.append(splits[1]);
}
Log.e(“sssssss”,stringBuilder.toString());
return stringBuilder.toString();
}
} catch (Exception e) {
e.printStackTrace();
}
return content;
}
Arouter测试使用地址
- 本文链接: https://blog.hansong.icu/2019/09/14/Arouter/
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。