最精简的插件补丁框架

[复制链接]
来自: MrlLee 分类: Android精品源码 上传时间: 2016-10-20 11:22:01
Tag:Failed commit create latest 修复

项目介绍:



可能是最精简的插件补丁框架




支持特性




  1. 支持插件的安装、升级、卸载、版本管理

  2. 支持插件调用宿主的类与资源。要在插件中使用宿主的资源ID,需要使用public.xml将资源ID固定,public.xml如何使用请自行搜索,并将该ID添加到sdk-jar中,如果只是插件调用宿主中的某个类,然后这个使用了宿主资源则不需处理。

  3. 支持运行时动态升级加载插件。调用PluginManager.getPlugin(pluginId).install()安装完成之后,只需要调用
    [Java] 查看源文件 复制代码
    PluginManager.loadLastVersionPlugin(pluginName)
    如果没加载过插件会加载最新插件,如果已加过老版本的该插件则会替换为该插件的最新版本。

  4. 插件与宿主的关系和apk与android系统的关系接近。
    如果插件中有与宿主重名的类,这个插件中的类只能被插件使用,宿主是不会使用插件中的类的。宿主只能通过显式loadClass的方式才能访问插件。

  5. 当插件版本过多又怕新插件在早期apk中不支持,应编写一个类CTS测试(google强制厂商执行的兼容性测试)的小插件,该插件中会调用所有之前插件用到的宿主中的所有方法和成员等等。如果该小程序跑过了则说明新版本apk兼容所有插件。

  6. 支持so以及so的动态实时升级。

  7. 插件与补丁支持加固方案,单dex或者多个dex文件情况,已对android 1.5以上版本(已适配最新的android N)和厂商定制的android系统进行了适配,适配了各种机型和厂商自己的系统(包括yunOS等)。测试无资源加载找不到的问题,存在极个别的第一次加载后类找不到的情况,尝试几次就可以了。(概率极低,<0.0001%)

  8. 对性能无明显影响。经过在android 2.2及以上进行高强度测试,对性能无明显影响。

  9. 支持bug fix的补丁功能,补丁修复最小单位是java中的class,补丁中可以有资源,也可以使用宿主的资源,它其实跟插件是一样的,只不过补丁的class与宿主的class重名了,发现重名就替换,支持单dex、多dex(方法数超了的情况)。补丁对性能有微弱影响(个人认为可以忽略),android 4.4及以上完全无影响。

  10. 如果你的apk没有进行代码混淆,补丁也可以产生与插件相同的作用来进行功能的更新。



不支持的特性




  1. 不支持插件中使用activity动画。如果要使用activity动画请将activity动画用到的xml文件放到宿主中,否则卡死。

  2. 不支持插件有自己的Application,插件获取的是宿主的application。

  3. 不支持动态升级插件的AndroidManifest.xml文件,所有试图修改AndroidManifest.xml的功能都需要升级宿主。不过这种情况很少,目前我们还没遇到过。

  4. 不支持补丁实时加载,下次启动才能加载,否则内存中的对象会乱掉,如之前保存了A类的实例,现在A类已经被实时替换为B类了,那么之前的A类实例就不能转为B类了。

  5. 不支持插件在xml使用宿主的自定义属性。(支持这个性价比太低,请使用其他替代方法)

  6. 其他还不清楚,还请大家进行测试。



文档



使用方法及代码原理见 Zeus Wiki

相关源码推荐:

我来说两句
所有评论(5)
Mr_Zhao 2016-10-20 11:24:09
好好 学习了 确实不错
回复
18692214100 2016-10-20 11:29:02
虽不明,但觉厉!
回复
Frank_z 2016-10-20 11:45:39
学习...学习...
回复
春城计算机 2016-10-20 11:56:30
学习...学习...
回复
tintins 2016-10-20 12:31:37
不错不错,楼主辛苦了。。。
回复
是个宝宝 2016-10-20 13:07:56
感谢分享,楼主V5~
回复
东西南北 2016-10-20 13:14:46
感谢分享,安卓巴士有你更精彩:lol
回复
提取码:  下载次数:21 状态:已购或VIP 售价:10(原价:10)金钱 下载权限:初级码农 
1361 0 21
代码贡献英雄榜
用户名 下载数
联系我们
首页/微信公众账号投稿
帖子代码编辑/版权问题
QQ:435399051,1294855032
如何获得代码达人称号?
如何成为签约作者?
领先的中文移动开发者社区
18620764416
7*24全天服务
意见反馈:1294855032@qq.com

扫一扫关注我们

Powered by Discuz! X3.2© 2001-2019 Comsenz Inc.( 粤ICP备15117877号 )