一、前言

继JessYan大神推出MVPArms项目框架后,他的又一杰作ArmsComponent组件化项目诞生了,该项目仍然以MVPArms框架为基础,把不同的功能模块拆分成不同的组件,然后通过一个宿主模块将所有功能模块组装在一起,形成一个app应用,这个思路真的是太棒了,我决心继续学习一下!

二、学习历程

1、准备工作

1)准备工作,将大神提供的"一键搭建 MVPArmsModule模版",保存到AndroidStudio Module模版目录下面,具体方法点击链接查看:https://github.com/JessYanCoding/MVPArms-Module-Template

2)准备工作,将大神提供的"一键搭建 MVPArmsPage模版",保存到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、添加混淆

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)重新编译,估计会报错,根据提示更改,一下即可

android mvp快速创建,学习MVPArms历程之Android Studio快速创建ArmsComponent组件化项目相关推荐

  1. Android组件化实践2——经典组件化项目架构

    Android组件化实践2--经典组件化项目架构 京东的采用aab( Android App bundles)之后的架构图 安居客项目架构演化 参考:https://zhuanlan.zhihu.co ...

  2. android mvp 利弊,android mvp模式有什么弊端 - 什么是android mvp模式,android mvp模式有什么弊端...

    android mvp模式有什么弊端 才开始学习使用MVP时,看到大家说了很多MVP的优点,代码复用,条理清晰等等.不过我改下来发现,MVP在我看来,最大的优点还是代码解耦,逻辑清晰,至于代码复用,暂 ...

  3. 什么是Android逆向?如何学习安卓逆向?Android逆向自学笔记入门到实战

    简单地来说,安卓逆向是对已经打包好的APP进行反编译.源码分析了解APP实现逻辑的一门技术.我们可以把安卓安装时用到的APK文件看作一个加密后的压缩包,逆向就是要最大程序地还原出APK打包之前的源码. ...

  4. android两个项目依赖关系图,关于android:Android组件化项目搭建遇到的问题记录

    1. ARouter 的依赖问题 What went wrong: Execution failed for task ':app:kaptDebugKotlin'. A failure occurr ...

  5. android 组件导出,阳光沙滩-android组件化项目,build生成的文件重复的情况

    1.最近弄一个组件化的项目练手.项目第一次run可以跑起来,等我杀死stop项目后,过一段时间在再次run想跑项目,就会报如下错误 这个component_base_back 3.xml文件是第二次r ...

  6. JAVA的学习心路历程之JDK基础入门(上)

    任务需要,需要我学java调用linux下的动态库,于是搜寻java知识更新这篇. 从我上大学起我就听别人说JAVA,不不,应该是初中,那时候流行带键盘的智能手机,里面有好些个游戏都是JAVA写的,可 ...

  7. visual 创建c语言程序吗,visual studio怎么创建c语言

    visual studio创建c语言程序的方法:首先打开VS主程序,选择创建新项目:然后在菜单栏中选择C++:接着进入VS主界面,在右边的解决方案管理器中找到源文件,右键添加,并选择新建项:最后选择添 ...

  8. 前端学习(2886):如何短时间内实现v-for 组件化设计方案

  9. android mvp模式例子_关于Android市场这件事,没有饱和的市场只有饱和的思维

    前言 早在几年之前,我们就一直在讨论Android程序员已经饱和的这个问题,直到2020年,Android程序员也没有饱和,相反对高级程序员的需求越来越大. 为什么会有Android程序员已经饱和的错 ...

  10. android module中获取 app_Android组件化架构 - 4. 动态创建

    Android 组件化中使用动态创建的作用是解耦: 1. 反射机制 反射有两个作用:1.反编译:.class->.java;2.通过反射机制访问java对象中的属性,方法,构造器等: 实现反射, ...

最新文章

  1. Windows Server 2003 服务应用大全之DNS服务使用详解
  2. 【错误记录】Android 文件分享 FileProvider 设置错误
  3. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第1节 异常_8_Throwable类中3个异常处理的方法...
  4. asp.net验证码图片生成示例
  5. node中的Stream-Readable和Writeable解读
  6. 【转】Azure 命令行工具大混战,都是什么,该选哪个?
  7. “此网站使用的安全性配置已过时,这可能会导致您的信息(例如密码、消息或信用卡卡号)”
  8. DEEPNOVA 技术荟系列公开课回顾:释放海量数据价值,尽显数据智能之美
  9. C# 9.0 新功能一览!
  10. 为避免攻击,研究员把严重的比特币漏洞详情焐了两年
  11. 发行版,distutils,setuptools和distutils2之间的区别?
  12. python列表生成式和map效率_Python列表生成式12个小功能,你常用哪几个?
  13. Log4net PatternLayout 参数
  14. 【工作技巧】防止电脑睡眠,让鼠标自动周期性的点击屏幕
  15. 51单片机入门教程(2)——流水灯的实现
  16. Windows设置自己的程序开机自动启动
  17. 关于使用 Connect-Busboy 实现文件上传 优化说明
  18. 【Pytorch】测试单张图片(调用transforms)
  19. 怎么判断二阶导数是否异号_二阶导数判断凹凸性 二阶导数怎么判断凹凸
  20. 计算机考研复试之KY122 找出直系亲属(c++)

热门文章

  1. 考上研究生就脱单?快来看看这些女生多的大学!
  2. 使用TF卡烧录Jetson NX开发板
  3. 25个最好免费下载电子书(Ebooks)的网站
  4. 爬虫爬取金庸小说--回顾经典小说
  5. Vray for UE4 (一)
  6. 使用快捷工具搜狗词库转txt和mmseg
  7. 登录小米帐号怎么会显示服务器错误,小米官网登录不进去怎么办 小米官网无法登陆是怎么回事...
  8. 使用自己的服务器中转远程桌面
  9. 学完 Fluent 官方基础教程,你离一名合格Fluent 流体工程师还有多远?
  10. 一篇文章教你用 java爬虫 下载全站视频