最近在学习组件化,看到业界都在使用阿里的ARouter框架
想写个demo集成进来却发现其官方文档比较含糊,项目一直编译不通过,后来在遍查文章才脱坑,特此把脱坑之路娓娓道来。
这套路框架解决的是组件化开发中,组件之间(Module与Module)之间通信的问题,我之前写过一个不用三方库的组件间通信的demo
当时觉得写完之后还小有成就感,没有引用任何一个依赖库,纯原生,但是使用起来才发现要定义很多的常量,而且还得修改一些“核心”源码,这是极其不方便和极其不安全的,所以静下心来研究了阿里的这套框架
1 不要慌集成,因为你不知道在哪个build.gradle文件中集成
2 base 模块 build.gradle中
compile ('com.alibaba:arouter-api:1.3.1'){ exclude group: 'com.android.support' }
3 业务模块 build.gradle 中
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
}
}
dependencies {
...
annotationProcessor 'com.alibaba:arouter-compiler:1.1.4'
implementation project(':base')//base模块里添加依赖
}
4 主模块 build.gradle 中
defaultConfig {
...
//Enabling multidex support.
multiDexEnabled true
}
dependencies {
...
compile 'com.android.support:multidex:1.0.1'
}
5 主模块中Application:需要在AndroidManifest.xml中配置并且在代码中初始化
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
initRouter(this);
}
public static void initRouter(Application application) {
if (BuildConfig.DEBUG) {
ARouter.openLog(); // 打印日志
ARouter.openDebug(); // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
}
ARouter.init(application);
}
}