关于app组件化的一点记录

前言

   

        在平常开发过程中,我习惯性会把一个模块的功能放在一个包下(所有的功能和业务都在一个moudle下),但是随着业务的不断增加,
工程的结构越来越复杂,代码的耦合性也来越高,编译速度慢,代码调试路径较深(不易调试),后期维护太费劲,因此对项目进行重构势
在必行,那么接下来来讲如何进行大型项目的重构。

重构的方向

      目前对于大型项目重构。其实就是优化大型项目架构, 便于开发,降低耦合性,易于扩展,易于调试,项目结构清晰,后期维护方便的优点。

那么什么样的App架构能有如上那么多的有点呢?目前网络上对于冗余繁杂的大型app的结构都倾向于插件化。主流的插件化框架方案(并且推广到市场)如下:

(moudle主要是指各个业务模块)

插件化方案比较

框架名称altas(淘宝)DynamicLoadApk(途牛appDroidPlugin(360团队)DynamicAPK(携程)
版本支持Androd 2.2以上系统Androd 2.x以上系统Androd 2.3以上系统Androd 2.3以上系统
rom大小较小较小一般一般
moudle间资源调用支持支持不支持支持
moudle间方法调用支持支持不支持支持
moudle单独调试支持支持支持不支持
moudle间解耦度很高一般很高一般
重构复杂度较高很高(所有的组件必须继承该库的组件,并且目前还不支持services和broadcast)傻瓜式(apk的完全隔离)一般
编译速度一般一般
hot fix支持支持支持支持
稳定性一般较好一般



       对于app的插件化往往都伴随着热修复的功能,解决及时修复线上bug的方案

下面是阿里巴巴做出的总结如下(可作了解)

热修复方案比较

平台SophixhotfixTinker(微信团队)QZone
即时生效yesyesnono
性能损耗较小较小较大较大
侵入式打包无侵入式打包无侵入式打包依赖侵入式打包依赖侵入式打包
Rom体积较小较小较大较小
接入复杂度傻瓜式接入比较简单复杂比较简单
补丁包大小较小较小较小较大
全平台支持yesyesyesyes
类替换yesyesyesyes
so替换yesnoyesno
资源替换yesnoyesyes

如何做重构

对于上面的插件化方案,普遍存在一些问题,
   1.大部分插件化方案是通过hook底层方法实现,存在机型兼容性问题。
   2.目前插件化技术方案不完善导致在生产环境下会遇到各种坑。

也就是上面的插件化技术方案都不能百分百保证适用于所有的项目,在各个项目中可能会遇到各种各样的问题,但是却有这一定的借鉴意义,

综合上面的方案、我们晓助手的特点和目前情况做如下架构拆分

如上图所示,项目结构清晰,按照上面的架构图已完成的如下部分:

1.抽离的底层的utils库,规范重要的依赖。

2.抽离大部分的Framework的作为独立的moudle,并且优化和处理framework的代码

3.抽离了业务层的代码层。













  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值