一、前言
继JessYan大神推出MVPArms项目框架后,他的又一杰作ArmsComponent组件化项目诞生了,该项目仍然以MVPArms框架为基础,把不同的功能模块拆分成不同的组件,然后通过一个宿主模块将所有功能模块组装在一起,形成一个app应用,这个思路真的是太棒了,我决心继续学习一下!
二、学习历程
1、准备工作
1)准备工作,将大神提供的"一键搭建 MVPArms Module模版",保存到AndroidStudio Module模版目录下面,具体方法点击链接查看:https://github.com/JessYanCoding/MVPArms-Module-Template
2)准备工作,将大神提供的"一键搭建 MVPArms Page模版",保存到AndroidStudio Activity模版目录下面,具体方法请点击链接查看:https://github.com/JessYanCoding/MVPArmsTemplate
*注意:以上两步操作完成之后,要重启一下AS
3)准备工作,将大神提供的“MVPArms 官方快速组件化方案”源码下载下来,在我创建新项目时会用到,下载地址请点击链接查看:https://github.com/JessYanCoding/ArmsComponent
2、解压ArmsComponent源码的压缩包,并重名已解压的文件夹名称(不想重命名可忽略此步骤),如下图:
3、使用Android Studio打开该项目(此时项目已经被重命名为文件夹的名称),如下图:
4、将app模块的包名,修改为我们自己的包名,
1)具体方法请看我的另一篇文章:https://www.jianshu.com/p/5f99092f192e,介绍了如何使用android studio 修改包名,更改包名结构,减少层级的具体操作步骤,如下图:
5、添加混淆
1)一定要给MVPArms模块添加混淆,具体操作说明请点击链接查看:https://github.com/JessYanCoding/MVPArms/wiki#1.5,如下图:
6、新建一个Library模块
*这里推荐使用大神提供的"一键搭建 ArmsComponent 快速组件化方案的整体组件架构"来快速创建模块,下载"ArmsComponent-Template",并将其保存到AndroidStudio Module模版目录下面,具体方法点击链接查看:https://github.com/JessYanCoding/ArmsComponent-Template
如果你想通过老方法新建模块,那么请你继续往下看:
7、解决新建Library模块的问题
1)将原有的module-gank模块中的build.gradle文件,覆盖新建的module-contacts的build.gradle(记住:资源名限制符要改成自己的),如下图:
2)在新建的module-contacts中的main文件夹下面新增debug和release两个文件夹,并将原有的module-gank中相应文件夹下的AndroidManifest.xml文件,复制到新建的module-contacts相应文件夹下(记住:包名要改成自己的,删除无用的activity节点),删除新建的module-contacts的原有的AndroidManifest.xml文件,如下图:
3)根据根据原有的module-gank模块中res文件夹下的资源文件,删除不需要的问题,增加需要的文件,如下图:
3)根据原有的module-gank模块中的app包名下的文件,修改新建的module-contacts对应的文件,不需要的文件删除掉,如下图
4)编译一下,此时应该已经编译成功了,如果不通过,请根据提示修改,一般都是资源文件找不到的问题
8、实现宿主调启module-contacts模块中的activity页面
1) 修改项目根目录下的gradle.properties文件中的 isBuildModule=false,如果已经是false请忽略
2)依照原来的app模块,在新建的appmain宿主模块中添加module-contacts模块的调启入口
3)依照module-gank模块,在新建的module-contacts模块中,暴露相关的服务
4)依照module-gank模块,在新建的module-contacts模块中,暴露页面,如果没有页面,请新建页面,如下图:
4)在新建的appmain宿主模块的build.gradle中,增加module-contacts模块的编译配置,如下图:(*注意:该步骤一定不要忘记,否则一直提示路由无法匹配,我就被坑了)
5)编译运行,如果报错,一般是资源文件的问题,根据提示修改即可
9、单独运行module-contacts模块
1) 修改项目根目录下的gradle.properties文件中的 isBuildModule=true
2)设置module-contacts模块中debug目录下的manifest文件,将某个activity为启动页面,如果没有页面需新增页面并设置为启动页面,如果有页面直接设置为app的启动页面即可,如下图:
3)重新编译,估计会报错,根据提示更改,一下即可