ARouter组件化流程
1.所有组件在build.gradle添加
android中default添加如下代码
ConfigjavaCompileOptions { annotationProcessorOptions { arguments = [AROUTER_MODULE_NAME: project.getName()] }
}
implementation 'com.alibaba:arouter-api:x.x.x'
annotationProcessor 'com.alibaba:arouter-compiler:x.x.x'
最新版本号详情https://github.com/alibaba/ARouter/blob/master/README_CN.md
2.主工程Application初始化
if (isDebug(this)) {
ARouter.openLog(); // 打印日志
ARouter.openDebug(); // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
}
ARouter.init(this);
//判断当前应用是否是debug状态
public static boolean isDebug(Context context) { try { ApplicationInfo info = context.getApplicationInfo(); return (info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0; } catch (Exception e) { return false; }}
3.Activity添加注解
@Route(path = "/test/MainActivity")
public class MainActivity extends AppCompatActivity {
//跳转方法
ARouter.getInstance().build("/mylibrary/MActivity").navigation();
}
4.成功运行后
会在build/generated/ap_generated_sources/debug/out/com.alibaba.android.arouter.routes/
生成三个文件 都implements IRouteRoot
5.原理
通过Activity引入注解,通过apt技术编译时生成文件,Application初始化调用,获取到类的对象,通过IO流生成java文件put Key Value,Router 中Map存放,Activity调用Router方法传递Key(String),启动另外模块的activity