热修复热点框架简析,Android插件框架机制研商

日期:2019-09-07编辑作者:编程应用

笔者 百度任玉刚 插件化框架 途牛已上线使用帮衬代码 能源文件以插件情势加入到host。

插件化的主干形式是将二个apk 中的差异功效模块进行拆分,并打入到差别的dex文件或然apk 文件中,主工程只是叁个空壳,提供了用来加载模块dex 也许apk 的框架。

缺陷:
  1. 不支持Service和BroadcastReceiver。
  2. 搬迁花费,需求修改插件,插件app须要一连自proxyActivity
优点:
  1. 插件没有须求安装host即可吊起
  2. 支撑Wrangler访谈插件能源
  3. 插件帮助Activity和FragmentActivity
  4. 主导无反射调用
  5. 插件安装后任可单独运营

小编 奇虎360张勇 360手提式有线电话机帮手已上线使用可完毕几近无法规吊起

插件化的收益

缺陷:
  1. 不恐怕运用自定义能源的通报
  2. 没辙登记一些新鲜Intent Filter的零部件
  3. 对Native匡助不佳
优点:
  1. 插件无需任何更动,可独立设置运营,也能够做插件运维
  2. 四大组件无需在Host程序注册
  3. 超强隔断性,分化插件运转在不一致的经过中
  4. 能源完全割裂 5.实现进度管理,插件的空进度会被及时回收,占用内部存储器低
  5. 插件的静态广播会被看作动态管理,假如插件未有运营,静态广播永久不会接触
  6. API侵入性低

小编 携程移动集团 携程游览已上线使用基于多dex/apk加载的消除方案

进级Android studio 工程的创设速度

优点:
  1. 搬迁开销低(没有须求做任何activity/fragment/resource的proxy完结)不应用代理来治本插件的activity/fragment的生命周期。修改后aapt会管理插件种的能源,Evoque.java中的能源援用和普通Android工程并未有分别,开荒者可以保持原本的支出标准
  2. 更进一竿方便并发开荒
  3. 提高编写翻译速度
  4. 升级运转速度。dex解压、dexopt、加载耗费时间较长,使用按需加载运行时间过长
  5. 适合HotFix
  6. 按需下载和加载率性作用模块

深深摸底DynamicApk

修改ClassLoader加载顺序并修改CLASS_ISPREVECR-VIFIED达到热修复效果

晋级利用的运行速度:

优点:
  1. 自动化热修复
  2. 热修复全数优点

笔者 阿里Baba(Alibaba)活动公司 阿里旗下多款app已上线使用

原理 在Native层使用指针替换的方法替换bug方法,已高达修复bug的指标

对该框架了然不多,建议参照他事他说加以考察Coolspan Alibaba(Alibaba)-AndFix Bug热修复框架原理及源码解析和 Air bolg的三篇AndFix深入分析举办深切摸底。

那地点的框架还或者有众多,列举了多少个相比较优秀的供小友人们参照他事他说加以考察;由于作者水平有限,长远明白请遵照源码和笔者文书档案精通学习。

协助多组织并行开垦

在线动态加载或然更新模块

按需加载区别的模块,完毕灵活的机能配置

在android 中贯彻插件框架,需求解决的主题素材如下:

财富和代码的加载

android 生命周期的管住和组件的挂号

插件Apk 和宿主Apk

基本概念

宿主和插件

宿主apk 完结了一套插件的加载和保管的框架,它看做利用的主工程存在,插件apk 都以依托于宿主apk 而存在的

插件apk 是每一种独立的作用模块,能够通过在线配置和翻新达成插件apk 在宿主apk 中的上线和底线,以及动态更新达成插件apk 在宿主中的上线和底线,以及动态更新等成效。

ClassLoader 机制

android 中的ClassLoader 机制首要用来加载dex 文件,系统提供了多少个api 可供采取

PathClassLoader:只可以加载已经安装到Android 系统中的apk 文件,因而不吻合插件化的需要,不作思量。

DexClassLoader: 支持加载外界的apk ,jar 可能dex 文件,整好符合插件化的急需,全体的插件化方案都以选拔DexClassLoader 来加载插件apk 中的.dex 文件的。

开源框架介绍

android-pluginmgr

项目地址

贯彻原理是利用DexMaker 的动态布署更能来生成Activity ,让这么些Activity 集成指标插件所在的activity。

主要优点

插件app 不必要安装任何准则也许限制

技巧格局绝对成熟牢固

首要特色

遵照热安插完结,隐敝框架的男耕女织有待 抓实,OOM 难题叫非凡

只援救activity ,不协助别的组件,通用性非常糟糕

dynamic-load-apk

花色地址

依照代理的主意贯彻插件框架,要求依据一定的平整来开垦插件apk,插件中的组件须要贯彻经过更换后的Activity,FragmentActivity,瑟维斯等的子类。

首要特征

插件须求依据一定的平整,由此安全方面越来越可控。

方案大约,适用于自家少些代码的插件化改动

第一劣势

不协理通过this调用组件的方法,须要经过that 去调用

是因为Apk 中的Activity 未有注册,不援救隐式调用APK 内部的Activity

插件编写和改换进程中,必要思索包容性难题非常多,联调起来会相比较费时费力

DynamicAPK

品种地址

是携程达成的一种多APK/DEX 加载的插件框架解决方案,使用那么些框架,我们得以兑现android studio 三个module 工程并行开荒方式,同有时候能够完结在线热修复功能。

首要特征

非常少的修改就能够兑现插件化改变

晋升工程的编写翻译速度,越来越好的贯彻互动开荒

按需下载和换代模块的代码和能源,完毕在线热更新和热修复

巩固app 运营速度

驷不及舌症结

插件工程不帮忙Native 代码,举例不辅助so 库

插件工程不支持对Library 工程、aar、maven 远程货仓的信赖性

DroidPlugin

品种地址

是360 手提式无线电话机帮手达成的一种插件化框架,它能够平素运行第三方的独立apk 文件,完全没有须求对apk 实行修改大概安装。

重视特点

支撑android 第四次全国代表大会组件,何况插件中的组件没有供给再宿主apk 中注册

支持android 2.3 及以上的种类,帮衬具有的系统api

插件与插件间接,插件与宿主间接的代码和财富是一点一滴隔断的

贯彻了经过管理,插件的空进程会被立马回收,占用内存低

至关重要症结

插件apk中不能登记具备极其IntentFilter 的四大组件

插件apk 中不扶助自定义财富的notification

缺失对native 层的Hook 操作,对于一些含有Native 代码的插件apk 补助不佳,恐怕不能够符合规律运营

由于插件与插件,插件与宿主之间的代码完全切断,由此,插件与插件,插件与宿主直接通讯只好通过android 系统级其他通讯形式。

Small

体系地址

Small 目标是贯彻最轻盈的跨平台插件化框架,它最低支持Android api level 8 和 ios 7.0.

首要特点

具有的插件辅助内放置宿主包中

插件的编码和财富文件的应用与平时应用尚未异样

透过设定 URubiconI,宿主以及Nativie 应用插件,Web 插件,在线网页等力所能致有助于的举行通讯

帮助android ,ios 和html5 ,三者能够由此一样套javascript 接口实现通讯

Small 近来独一的供应不能满足需求时暂不支持Service的动态注册,可是那几个能够经过瑟维斯 预首先登场记在宿主的AndroidManifest.xml 文件中实行避让,因为Service 的更新频率常常相当的低。

本文由今晚最快开奖现场直播发布于编程应用,转载请注明出处:热修复热点框架简析,Android插件框架机制研商

关键词:

阅读笔记,线程安全性

首先使代码正确运行,然后再提高代码速度。【正确编写并发程序的方法】 线程安全:当多个线程访问某个类(对象...

详细>>

Android开辟方式探求,Bitmap的加载和Cache

BitmapFactory 类提供四种方法:decodeFile、decodeResource、decodeStream和decodeByteArray;其中decodeFile和decodeResource间接的调用了...

详细>>

Android开发艺术探索,Bitmap获取缩略图

前言 追思了下此前写的调用相机和相册的机能,准备把它们构成下,想起已经用Motorola在赢得大图时OOM的主题素材,...

详细>>

读书笔记

RemoteViews是一种远程View,能够在别的进程中显得,为了能够更新它的分界面,RemoteViews提供了一组基础操成效于跨进度...

详细>>