(本博文只是对某些博客,资料进行了整理,如果有涉及到侵权的问题,提出来马上删除哈)
一、不同平台热更新的比较
Android 应用的热更新
• 将执行代码预编译为assembly dll。
• 将代码作为TextAsset打包进Assetbundle。
• 运行时,使用Reflection机制实现代码的功能。
• 更新相应的Assetbundle即可实现热更新。
Android 与iOS 热更新的异同
• 苹果官方禁止iOS下的程序热更新;JIT在ios下无效。
• 热更新方案:Unity+Lua插件
二、热更新的各种Lua 插件的对比
3.1、uLua(asset store)
• uLua插件原生版本,开山鼻祖
• 不会产生静态代码
• 反射机制,效率低下,速度慢,gc alloc频繁
• 已停止更新维护,不支持Unity5.x,淡出主流
3.2、XLua(腾讯2017年开源的手游热更新方案)
• 开发只用C#;
• 运行也是C#,性能可以秒杀lua;
• 出问题了才用Lua来改掉C#出问题的部位,替换甚至做到不用重启游戏;
• 补丁需要预打入
• 开头加入几个il指令对性能的开销
开源项目地址
https://github.com/Tencent/xLua