android组件化之旅(二)
2018-06-10 本文已影响0人
宁静世界
在第一篇中你已经拥有了一个正常的项目,下面我们开始模块化
开始组件化
(1),创建一个用来切换组件化和集成化的开关
a,找到你当前项目下的gradle.properties文件打开
b,添加一个键值对isModule=true在gradle.properties中 true代表模块化,false则是关闭
(2),通过开关控制组件在库与工程之间切换
同时还需要一起切换AndroidManifest.xml文件,因为在组件化后你的你的组件就能直接运行了,所以需要初始化和提供LAUNCHER入口

manifest.srcFile 'src/main/AndroidManifest.xml' manifest.srcFile函数用来指定AndroidManifest.xml识别的路径,这个时候你需要单独创建一个AndroidManifest.xml文件因为需要单独启动

MyApplication用来初始化一些依赖库,不需要可以不添加,正常情况是需要的(main,news组件都是同样配置)
需要之注意的是你的app工程需要添加一个判断,否则会编译不通过

(3),去除login,main,news组件中的重复依赖并只依赖common库,将app中的资源移动common库,这个时候你的build.gradle应该是这样的
[图片上传中...(image.png-f96aa4-1528597215671-0)]
a,去除重复依赖
APP工程

Login组件

Main组件

News组件

b,将app中的资源移动common库



这个时候其实你的组件化已经基本完成了,你的Run/Debug configurations是这样的,每个组件都可以单独运行


(4),界面跳转选择一个路由框架,我这里选用比较火的阿里的arouter框架
a,在common库中添加
api "com.alibaba:arouter-api:1.3.1"

a,分别在login,news,main组件中添加插件并配置路由
javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
}
annotationProcessor "com.alibaba:arouter-compiler:1.1.4"
@Route(path = "/login/loginActivity")


切换到集成模式测试


OK到这里你的项目已经完全组件化了,好了我继续搬砖去