如何学习插件化?Android插件化学习笔记,技术与实战齐飞

概述

插件化是一种动态升级app功能的解决方案,不同于热修复(仅仅是修复功能),类似于RN、Weex(目的类似)。都是为了在不发版本的情况下,可以让用户用上最新的功能。不过RN、Weex还额外支持跨平台。相对于RN和Weex,插件化有以下的优缺点:

优点:
  • 对于业务方,无额外的学习成本,基本无感知
  • 性能等同于原生、可以做任何原生可以做的事情
  • 天然代码隔离、使得插件化的代码更加的“高内聚、低耦合”
  • 插件并发开发,开发之间互不影响
缺点:
  • 稳定性差,使用了大量大反射来实现,尤其是Android P以后Google对系统API的调用做出了限制,虽然有办法跳过(后面会说),但是却无疑增加了使用风险。
  • 安全性低,恶意插件将会有比较大的权限,来做破坏软件的事情。(一般会添加签名校验)
  • 插件化目前没有一套通用的规范,基本上都是各用各的,导致插件无法通用
  • 只适用于android,无法和iOS保持方案统一

事实上,有一部分的项目采用动态化、不仅仅是为了其动态性,更是为了对模块化的升级,对于大型复杂项目而言,单纯的“模块化”已经不能很好的隔离分解项目的复杂性,而“插件化”可以帮助项目,将独立且足够内聚的业务独立出来成为一个插件,然后交给其他团队来维护。康威定律:软件源代码的组织结构要与开发团队的组织结构尽量保持一致

插件化的功能及优势:

现在美团,支付宝里面都有很多很多功能, “美食,电影,购物,打车,旅游”等。这都是实现插件化的好处,如果没有这些插件化,那这些app会有多大,我们用户手机里面得下载多少个app?举个例子,本来下载一个app可以实现好几个功能的运用,如果没有插件化这个技术,那我们就需要下载好几个app来满足我们的需求。但是每个手机的内存又是有限制的,如果下载的东西过多,会导致运行卡顿,带来极差的体验感。

插件化能给我们业务上带来的帮助:

  • APP因为业务的频繁变更而频繁升级客户端,会造成较差的用户体验,插件化可以做到动态升级,不需要更新整个客户端
  • APP往往需要集成许多的功能,插件化可以使模块解藕
  • 并行开发,提高开发效率
  • 插件化突破最大方法数的限制
  • 插件化做到了按需加载,提高了内存的使用效率
  • 节省了升级流量。
  • 插件化可以让一个app的功能模块化。
  • 插件化可以并行高效开发、模块解耦、有利于后期的维护。

对于Android开发者而言,插件化技术已经是进阶Android高级工程师的必备技能之一。
我这里有一份【高级Android插件化强化实战】资料,希望能帮到大家!

主要内容分成四大模块:

第一章:插件化技术的前世今生

第二章:插件化原理

第三章:Android插件化初探

第四章:架构演化(大长篇)

第一章:插件化技术的前世今生

  • 插件化提要

  • 插件化发展历史

    如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第1张图片

第二章:插件化原理

  • 类加载
  • 双亲委托机制
  • 资源加载
  • 四大组件支持
  • ProxyActivity代理
  • hook方式
  • 其他组件

如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第2张图片

第三章:Android插件化初探

1.从零开始实现一个插件化框架(上)

  • 概念
  • 插件化解决的问题
  • 各插件化框架对比
  • 插件化实现
  • ClassLoader实现类
    如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第3张图片

2.从零开始实现一个插件化框架(中)

  • Activity的启动流程
  • 寻找Hook点
  • 撸码阶段
  • 代理对象
  • 偷天换日,替换原来的Intent
  • ActivityThread
  • 将代理的intent替换回来
  • 如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第4张图片

3.从零开始实现一个插件化框架(下)

  • 插件资源加载
  • Android中资源加载流程
  • ActivityManager
  • ActivityThread
  • AppCompatActivity
  • 总结
    如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第5张图片

第四章:架构演化(大厂篇)

1.360插件开发之DroidPlugin

DroidPlugin是360手机助手在Android系统上实现了一种新的插件机制。它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型APP的架构,实现多团队协作开发具有一定的好处。

如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第6张图片

2.滴滴VirtualApk实战

VirtualAPK是滴滴在2017年6月开源的一款插件化框架,支持Android四大组件,以及几乎所有的Android特性,通过Gradle来构建插件,集成与构建十分便捷,目前已经应用在 滴滴出行 App上,兼容市面上几乎所有的Android设备。

如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第7张图片

3.爱奇艺插件化原理分析之 Neptune框架

Neptune是爱奇艺移动端研发的一套灵活,稳定,轻量级的插件化解决方案。经过不断的研发,迭代和线上验证,目前已经完全适配了Android P,能够在数亿的设备上动态加载和运行插件APK,为爱奇艺众多的垂直业务团队提供了稳定的服务。

如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第8张图片

4.360开源全面插件化框架RePlugin 实战

RePlugin 是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的方案。

如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第9张图片

5.腾讯插件化框架 Shadow项目解析

Shadow是一个腾讯自主研发的Android插件框架,经过线上亿级用户量检验。Shadow不仅开源分享了插件技术的关键代码,还完整的分享了上线部署所需要的所有设计。更是具有复用独立安装App的源码、零反射无Hack实现插件技术、全动态插件框架、宿主增量极小、Kotlin支持等特点。

如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第10张图片

最后

插件化技术对于一个进阶Android高级工程师的必备技能之一。一个好的工程师,他不仅要懂得原理,还得去学习把技术运用到实践中去,这是一个优秀的程序员所必须具备的。如果我的这篇文章能帮助到你的话,那就多多支持一下我。

由于篇幅有限,这里只展示了面试题和部分内容截图,有需要完整版《高级Android插件化强化实战》的朋友可以扫描下方【CSDN官方认证二维码】免费领取!

如何学习插件化?Android插件化学习笔记,技术与实战齐飞_第11张图片

你可能感兴趣的:(插件化,android,程序人生,职场和发展)