概述
插件化是一种动态升级app功能的解决方案,不同于热修复(仅仅是修复功能),类似于RN、Weex(目的类似)。都是为了在不发版本的情况下,可以让用户用上最新的功能。不过RN、Weex还额外支持跨平台。相对于RN和Weex,插件化有以下的优缺点:
优点:
- 对于业务方,无额外的学习成本,基本无感知
- 性能等同于原生、可以做任何原生可以做的事情
- 天然代码隔离、使得插件化的代码更加的“高内聚、低耦合”
- 插件并发开发,开发之间互不影响
缺点:
- 稳定性差,使用了大量大反射来实现,尤其是Android P以后Google对系统API的调用做出了限制,虽然有办法跳过(后面会说),但是却无疑增加了使用风险。
- 安全性低,恶意插件将会有比较大的权限,来做破坏软件的事情。(一般会添加签名校验)
- 插件化目前没有一套通用的规范,基本上都是各用各的,导致插件无法通用
- 只适用于android,无法和iOS保持方案统一
事实上,有一部分的项目采用动态化、不仅仅是为了其动态性,更是为了对模块化的升级,对于大型复杂项目而言,单纯的“模块化”已经不能很好的隔离分解项目的复杂性,而“插件化”可以帮助项目,将独立且足够内聚的业务独立出来成为一个插件,然后交给其他团队来维护。康威定律:软件源代码的组织结构要与开发团队的组织结构尽量保持一致
插件化的功能及优势:
现在美团,支付宝里面都有很多很多功能, “美食,电影,购物,打车,旅游”等。这都是实现插件化的好处,如果没有这些插件化,那这些app会有多大,我们用户手机里面得下载多少个app?举个例子,本来下载一个app可以实现好几个功能的运用,如果没有插件化这个技术,那我们就需要下载好几个app来满足我们的需求。但是每个手机的内存又是有限制的,如果下载的东西过多,会导致运行卡顿,带来极差的体验感。
插件化能给我们业务上带来的帮助:
- APP因为业务的频繁变更而频繁升级客户端,会造成较差的用户体验,插件化可以做到动态升级,不需要更新整个客户端
- APP往往需要集成许多的功能,插件化可以使模块解藕
- 并行开发,提高开发效率
- 插件化突破最大方法数的限制
- 插件化做到了按需加载,提高了内存的使用效率
- 节省了升级流量。
- 插件化可以让一个app的功能模块化。
- 插件化可以并行高效开发、模块解耦、有利于后期的维护。
对于Android开发者而言,插件化技术已经是进阶Android高级工程师的必备技能之一。
我这里有一份【高级Android插件化强化实战】资料,希望能帮到大家!
主要内容分成四大模块:
第一章:插件化技术的前世今生
第二章:插件化原理
第三章:Android插件化初探
第四章:架构演化(大长篇)
第一章:插件化技术的前世今生
-
插件化提要
-
插件化发展历史
第二章:插件化原理
- 类加载
- 双亲委托机制
- 资源加载
- 四大组件支持
- ProxyActivity代理
- hook方式
- 其他组件
- …
第三章:Android插件化初探
1.从零开始实现一个插件化框架(上)
- 概念
- 插件化解决的问题
- 各插件化框架对比
- 插件化实现
- ClassLoader实现类
2.从零开始实现一个插件化框架(中)
- Activity的启动流程
- 寻找Hook点
- 撸码阶段
- 代理对象
- 偷天换日,替换原来的Intent
- ActivityThread
- 将代理的intent替换回来
- …
3.从零开始实现一个插件化框架(下)
- 插件资源加载
- Android中资源加载流程
- ActivityManager
- ActivityThread
- AppCompatActivity
- 总结
第四章:架构演化(大厂篇)
1.360插件开发之DroidPlugin
DroidPlugin是360手机助手在Android系统上实现了一种新的插件机制。它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型APP的架构,实现多团队协作开发具有一定的好处。
2.滴滴VirtualApk实战
VirtualAPK是滴滴在2017年6月开源的一款插件化框架,支持Android四大组件,以及几乎所有的Android特性,通过Gradle来构建插件,集成与构建十分便捷,目前已经应用在 滴滴出行 App上,兼容市面上几乎所有的Android设备。
3.爱奇艺插件化原理分析之 Neptune框架
Neptune是爱奇艺移动端研发的一套灵活,稳定,轻量级的插件化解决方案。经过不断的研发,迭代和线上验证,目前已经完全适配了Android P,能够在数亿的设备上动态加载和运行插件APK,为爱奇艺众多的垂直业务团队提供了稳定的服务。
4.360开源全面插件化框架RePlugin 实战
RePlugin 是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的方案。
5.腾讯插件化框架 Shadow项目解析
Shadow是一个腾讯自主研发的Android插件框架,经过线上亿级用户量检验。Shadow不仅开源分享了插件技术的关键代码,还完整的分享了上线部署所需要的所有设计。更是具有复用独立安装App的源码、零反射无Hack实现插件技术、全动态插件框架、宿主增量极小、Kotlin支持等特点。
最后
插件化技术对于一个进阶Android高级工程师的必备技能之一。一个好的工程师,他不仅要懂得原理,还得去学习把技术运用到实践中去,这是一个优秀的程序员所必须具备的。如果我的这篇文章能帮助到你的话,那就多多支持一下我。
由于篇幅有限,这里只展示了面试题和部分内容截图,有需要完整版《高级Android插件化强化实战》的朋友可以扫描下方【CSDN官方认证二维码】免费领取!