关于Android需要知道的一些事
插件化、热修复 、热更新的理解
插件化 – apk 分为宿主和插件部分,插件在需要的时候才加载进来
热修复 – 更新的类或者插件粒度较小的时候,我们会称之为热修复,一般用于修复bug
热更新 – 2016 Google 的 Android Studio 推出了Instant Run 功能 同时提出了3个名词
“冷部署” – app需要重启,比如继承关系的改变或方法的签名变化等。
“ 热部署” – 方法内的简单修改,无需重启app和Activity。
“暖部署” – app无需重启,但是activity需要重启,比如资源的修改。
站在app开发者角度的“热”是指在不发版的情况来实现更新
而Google提出的“热”是指值是否需要重新启动。 - 同时在开发插件化的时候也有两种情景
一种是插件与宿主apk没有交互,只是在用户使用到的时候进行一次吊起
还有一种是与宿主有很多的交互
你认为android热更新框架哪个好:
1.阿里的热更新框架已经开源 了。但已经很久没有更新过新版本了。当前的版本只支持到了 Android 4.4。由于 5.0 起新的 ART 虚拟机、更严格的 SELinux 策略以及对 64 位的支持之类的事,使得 Xposed 都在开发上做了很多调整。我不知道 Dexposed 现在是否支持,但至少阿里没有开源。
2.在本地动态执行远端下发的代码是极度危险的行为。利用此方法执行非法代码等或用于绕过 Google Play 等市场的审查是违反相关协议的,也是对用户极度不负责任的行为。
3.在一些访问非常密集的地方使用热更新可能会对效率产生相对比较大的影响,应该避免使用。
4.我们可以对 Java 的 Engine 进行一些封装成为一个 HotPatch 类使得它更适合做热更新的工作。
5.首先,检查热更新补丁的管道一定要建立在 https 上,因为下发代码是极其危险的,如果被劫持,后果是无法想象的。其次,请求时最好自动带上 Android 版本、手机型号、地区、版本号等信息,以方便更精确地下发,千万不能下发错。
6.Java在运行时加载对应的类是通过ClassLoader来实现的,ClassLoader本身是一个抽象来,Android中使用PathClassLoader类作为Android的默认的类加载器
7.我们的如果想做hotpatch,一定要保证我们的hotpacth dex文件出现在dexElements列表的前面。
二。常用的热更新技术框架:
基于QQ空间的HotFix →→ 要使用到android dex分包方案→拆分dex的项目的话,可以参考一下谷歌的multidex方案实现。
大众点评的NuWa←项目补丁自动化做的很完整
alibaba/AndFix
阿里巴巴的DexPosed
dalvik_patch实现multidex
使用React-Native实现app热部署的一次实践
alibaba/AndFix
基础
activity生命周期图解
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%