“一表四图”读懂Android插件化

一、Android插件化发展历程

序号插件方案名发布时间厂商特点开源地址
1dynamicApkLoader2012年7月大众点评(屠毅敏)利用Fragment代理实现页面跳转,首次使用了通过反射AssetManager来调用addAsset()方法实现处理插件中的资源https://github.com/mmin18/AndroidDynamicLoader
2dynamic-load-apk百度(任玉刚)利用壳Activity来代理实现插件中的PluginActivity,Service也类似https://github.com/singwhatiwanna/dynamic-load-apk
3CJFrameForAndroid张涛DynamicLoadApk类似,但是解决了Activity的LaunchMode问题https://github.com/kymjs/CJFrameForAndroid
4android-pluginmgrhoukx首次提出在AndroidManifest中埋stubActivity实现欺骗AMS,使用dexmaker.jar动态生成stubActivityhttps://github.com/houkx/android-pluginmgr
5direct-load-apkloady对android-pluginmgr实现改造,hook了Instrumentation,并结合了dynamicLoadApk的静态代理和stub桩位欺骗AMS思想https://github.com/mmyydd/Direct-Load-apk
6virtualAppvirtualAppAndroid虚拟化技术,可以直接加载独立的第三方应用。完全模拟了一个Android运行环境https://github.com/asLody/VirtualApp
7android-plugin-frameworklimpoxeAndroid插件框架,免安装运行插件APK ,支持独立插件和非独立插件https://github.com/limpoxe/Android-Plugin-Framework
8android-dynamical-loadingkaedeahttps://github.com/kaedea/android-dynamical-loading
9DroidPlugin360通过stub欺骗AMS和hook instrumentation实现Activity的启动,完全模拟了一个Android运行环境。可以加载独立的第三方apphttps://github.com/DroidPluginTeam/DroidPlugin
10openAtlas(ACDD)阿里通过修改aapt来修改插件的资源id。hook了instrumentation来实现Activity启动,hook了ContextWrapper并重写getResource来获取插件资源
11DynamicApk携程基于阿里的openAtlas,定制了一些相关业务特性
12small林光亮单个classloader。hook了instrumentation,修改了R.java与sources.arsc文件的idhttps://github.com/wequick/Small
13zeus掌阅https://github.com/iReaderAndroid/ZeusPlugin
14Atlas阿里https://github.com/alibaba/atlas
15RePlugin360https://github.com/Qihoo360/RePlugin
16VirtualApk滴滴https://github.com/didi/VirtualAPK
17shadow腾讯https://github.com/Tencent/Shadow

二、插件化技术的演变
在这里插入图片描述

三、插件化的技术细节

  1. Activity的启动过程分析
    1.1、Android版本小于26
    在这里插入图片描述
    1.2、Android版本大于等于26
    在这里插入图片描述
    1.3、原理归纳
    在这里插入图片描述

关注我公众号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值