在工作之余,有时候我就在想,什么样的程序员属于高级程序员呢?或者说,高级程序员有哪些特性呢?工作年限一定不是关键的指标,许多工作多年的程序员依然写不出优雅的程序。无论是在Android 开发还是其他领域,高级程序员一定是勤奋的,可以快速地掌握大量的新技术、新框架,不仅懂得原理,还能把新的技术落地到公司的产品中去。这是衡量程序员工作能力的一个重要标准,那么怎样才能将技术运用自如呢?唯有实践。基于此,我将大厂中用到的一些技术经典案例,总结成了学习文档↓↓↓,以便为想要进步的Android 程序员增加更多的实战经验。
有需要的可以复制下方链接,传送直达!!!
https://qr21.cn/CaZQLo?BIZ=ECOMMERCE
本文主要以Android 组件化篇为主题,其目的是帮助程序员建立产品的思想,对于技术而言,孤立的存在是没有任何意义的,技术只有与需求相结合,才能具有自身的价值。技术人员在开发的过程中, 要时刻了解所完成的功能可以为公司带来哪些价值,是提升用户的访问兴趣,还是提升用户的 使用流畅度,抑或是其他。当以产品思维去思考技术的时候,就会有动力、有目的地学习更多有价值的技术,而不是哗众取宠地学一些“看似有用”的新技术。
首先我想问大家知道组件化、插件化、模块化的区别是什么不? 欢迎大家在评论区进行讨论这问题!!!
组件化、插件化、模块化的区别
- 组件化的重心主要是放在业务逻辑层,主要是为了拆分业务逻辑,只针对业务逻辑
- 模块化的重心主要是为了功能的重用,那功能拆分一个个的插件,针对整个项目
- 组件化是不管开发中把业务拆分为多少个模块,最终在打包上线的时候,开发都会生成一个apk
- 而插件化也是拆分为很多插件模块,但是在最终打包之后,成为了很多apk,最终我们把它上传到我们的服务器上面,用户使用的时候,只需要下载响应的apk即可,然后使用动态加载技术,加载里面相应的Activity
组件化开发优势
- 当每次需要进行功能测试时,不需要整个项目运行,而是运行单一的组件即可
- 如果要将某一个模块用到新项目中去,就很简单了,因为我们每一个模块都是一个独立的Application
- 因为Application是不能依赖其他的Application
- 不需要解耦合了、资源等等
- 大团队开发中,组件化开发是开发的基石
组件化开发需要注意的点:
- 主要注意包名和资源文件命名冲突问题
- Gradle 中的版本号的统一管理
- 组件在Application 和 Library 之间如何做到随意切换
- AndroidManifest.xml文件的区分
- Library 不能在 Gradle 文件中有Applicationld
从组件化实战来分析解决问题
模块化和组件化
模块化:具体的业务模块,例如商品详情模块,商品发布模块 ,搜索模块
组件化:单一的功能组件,如视频播放组件、分享组件等,每个组件都可以以一个单独的module 开发,并且可以单独抽出来作为 SDK 对外发布使用。
模块化和组件化的思想是一样的,都是对代码进行拆分,但模块化是按功能模块进行查分(业务导向),组件化是按功能模块进行查分(功能导向),模块化的颗粒度更大一些,组件的颗粒度更小一些,一个项目中模块和组件同时存在也是很常见的,各自负责各自的事情
如上图所示 是个组件化项目的基本架构:
- 基础库、公共库:项目所需要的基础操作类,工具类 ,第三方库的引入封装 ,app宿主功能,各个模块,各个组件都依赖这个库
- 组件层:项目用的功能模块或者业务模块,如:登录模块,视频播放组件,分享组件等
- 应用层:宿主工程,APP的主项目,APP入口和主架子
组件化演示案例
WanAndroid APP 组件化项目实战附demo
得到 App
- 提到了组件生命周期、服务注册的实现
- 提到了公共层定义组件服务、base层定义通用资源
- 提到了 implementation 与 runtimeOnly 的代码 / 资源隔离效果;
- 提到了 JIMU 插件的调试切换、智能配置功能;
- 提到了 2 种调用组件声明周期的方法: javassist 和反射;
- 提到了有序初始化组件的解决方案:StartUp、DAU
微信 App
- 提到了微信架构演进:简单分层架构 -> 多进程架构 -> 多子工程并行开发架构;
- 提到了基础工程存在中心化的问题:越来越多的代码/事件很“自然的”被下沉到基础工程;
- 提出了重塑模块化的 3 个目标:改变通信方式、重新设计模块、约束代码边界
- 提出了服务注册的通信方式
- 提出了新颖的接口暴露方法:将文件后缀修改为 .api (需配合include_with_api 命令)
- 设计了模块生命周期:dependency()、configure()、execute()
- 设计了 pins 工程结构,用于约束代码边界
- 提出了组件化的考量问题:动态性、隔离性
美团 App
- 设计了组件消息总线 modular-event
- 设计了组件化路由框架 WMRouter
其实还有一些大厂APP 所用到组件化实例记录,像支付宝、爱奇艺、猫眼、有赞、携程……等,由于文章篇幅有限,无法进行一一展现,所以其整理成了学习文档,并命名为《高级Android组件化强化实战》,有需要的可以往下看↓↓↓
有需要的可以复制下方链接,传送直达!!!
https://qr21.cn/CaZQLo?BIZ=ECOMMERCE
再厉害的武功秘籍,修炼完后,都需要去进行实践,否则无法检测出自己的成果。
网友评论