在第一篇中你已经拥有了一个正常的项目,下面我们开始模块化
开始组件化
(1),创建一个用来切换组件化和集成化的开关
a,找到你当前项目下的gradle.properties文件打开
b,添加一个键值对isModule=true在gradle.properties中 true代表模块化,false则是关闭
(2),通过开关控制组件在库与工程之间切换
同时还需要一起切换AndroidManifest.xml文件,因为在组件化后你的你的组件就能直接运行了,所以需要初始化和提供LAUNCHER入口
image.png
manifest.srcFile 'src/main/AndroidManifest.xml' manifest.srcFile函数用来指定AndroidManifest.xml识别的路径,这个时候你需要单独创建一个AndroidManifest.xml文件因为需要单独启动
image.png
MyApplication用来初始化一些依赖库,不需要可以不添加,正常情况是需要的(main,news组件都是同样配置)
需要之注意的是你的app工程需要添加一个判断,否则会编译不通过
image.png
(3),去除login,main,news组件中的重复依赖并只依赖common库,将app中的资源移动common库,这个时候你的build.gradle应该是这样的
[图片上传中...(image.png-f96aa4-1528597215671-0)]
a,去除重复依赖
APP工程
image.png
Login组件
image.png
Main组件
image.png
News组件
image.png
b,将app中的资源移动common库
image.png
image.png
image.png
这个时候其实你的组件化已经基本完成了,你的Run/Debug configurations是这样的,每个组件都可以单独运行
image.png
image.png
(4),界面跳转选择一个路由框架,我这里选用比较火的阿里的arouter框架
a,在common库中添加
api "com.alibaba:arouter-api:1.3.1"
image.png
a,分别在login,news,main组件中添加插件并配置路由
javaCompileOptions {
annotationProcessorOptions {
arguments = [moduleName: project.getName()]
}
}
annotationProcessor "com.alibaba:arouter-compiler:1.1.4"
@Route(path = "/login/loginActivity")
image.png
image.png
切换到集成模式测试
image.png
jump.gif
OK到这里你的项目已经完全组件化了,好了我继续搬砖去