温故知新:深入理解 Android 插件化技术,Android 高级插件化强化实战
现在普通人一听“宿主”第一想到的就是欧美电影里的恐怖画面,甚至感觉瘆得慌。但是在移动开发领域,我们经常会提及的“宿主”却有完全不一样的意义,那就是支持插件的 app 主体。
从 2012 年插件化概念被提出,到 2016 年的时候,插件化技术百家争鸣,被一线大厂广泛使用,可以说成为了 Android 高级工程师所必须具备的技能之一,几乎引领了 Android 技术的进步!
近些年,一线互联网大厂几乎对移动互联网形成了垄断,app 的功能越来越多,比如下面这些 app(美团、支付宝等):
每个 app 都集成了许多功能入口,美团上有“美食”、“电影”、“外卖”、“打车”等,其实每个入口都是一个 app,只不过被集成到这些入口里了。如果没有插件化技术,美团、淘宝这些 app 会有多大?几个 G 都有可能!
这些大型 app 是如何把第三方 app 作为插件集成到自己的 app 里的?
随便一个 app 就能随意调用其他 app 吗?
当然不能!
插件化技术最初源于免安装运行 apk 的想法,这个免安装的 apk 可以理解为插件,而支持插件的 app 我们一般叫宿主。支持插件化的 app 可以在运行时加载和运行插件,这样便可以将 app 中一些功能独立的模块写成独立的插件,一方面减小了安装包的大小,另一方面可以实现 app 功能的动态扩展。想要实现插件化,主要是解决下面三个问题:
1、插件中代码的加载和与主工程的互相调用
2、插件中资源的加载和与主工程的互相访问
3、四大组件生命周期的管理
插件化技术涉及得非常广泛,其中最核心的就是 Android 的类加载机制和反射机制。
高级 Android 插件化强化实战(附源码)
虽然现在很多公司开源了插件化框架,但还有非常多的开发者对插件化一知半解。所以我特地给大家整理了 167 页的**[高级 Android 插件化强化实战(附源码)](
)**,一共分为四个部分:
第一章 插件化技术的前世今生
第二章 插件化原理
第三章 Android 插件化初探
第四章 架构演化(大厂篇)
从基础的插件化原理到 Android 插件化初探再到大厂架构演化实战应用,总结出了较为全面与完整的安卓插件技术与插件化对 Android 开发的重要性。
一、插件化技术的前世今生
1.1 插件化提要
1.2 插件化发展历史
二、插件化原理
2.1 类加载
2.2 双亲委托机制
2.3 资源加载
2.4 四大组件支持
2.5 ProxyActivity 代理
2.6 hook 方式
2.7 其他组件
2.8 Android 动态加载框架
DL 的架构与基本原理解析
2.9 Android 插件化框架 DynamicLoadApk 源码分析
三、Android 插件化初探
3.1 从零开始实现一个插件化框架
3.1.1 概念
3.1.2 插件化解决的问题
3.1.3 各插件化框架对比
3.1.4 插件化实现
3.1.5 ClassLoader 实现类
3.2 从零开始实现一个插件化框架
3.2.1 Activity 的启动流程
3.2.2 寻找 Hook 点
3.2.3 撸码阶段
3.2.4 代理对象
3.2.5 偷天换日,替换原来的 Intent
3.2.6 ActivityThread
3.2.7 将代理的 intent 替换回来
3.2.8 注意
3.3 从零开始实现一个插件化框架
3.3.1 插件资源加载
3.3.2 Android 中资源加载流程
3.3.3 ActivityManager
3.3.4 ActivityThread
3.3.5 AppCompatActivity
四、架构演化(大厂篇)
4.1 360 插件开发之 DroidPlugin
4.1.1 插件开发之 360 DroidPlugin 源码分析
4.1.2 插件开发之 360 DroidPlugin 源码分析之 Hook 机制
4.1.3 Hook 机制的包结构关系
4.1.4 Hook 机制类图关系
4.1.5 Hook 机制的时序图关系
4.1.6 Manifest 权限申请
4.1.7 基类 Hook 做了什么?
4.1.8 ProxyHook
4.1.9 BaseHookHandle
4.1.10 HookedMethodHandler
4.1.11 ReplaceCallingPackageHookedMethodHandler
4.1.12 IO 重定向
4.1.13 递归遍历
4.1.14 以 IPackageManager 为例
4.1.15 插件开发之 360 DroidPlugin 源码分析之 Binder 代理
4.2 滴滴 VirtualApk 实战
4.2.1 配置
4.2.2 应用
4.2.3 原理
4.2.4 总结
4.2.5 问题
4.3 基于 VirtualAPK Android 重构之插件化
评论