Unity应用的iOS热更新

作者:丁治宇

Unity TechnologiesChina

Agenda

? 什么是热更新

? 为何要热更新

? 如何在iOS 上对Unity 应用进行热更新

? 支持Unity iOS 热更新的各种Lua 插件的对比

什么是热更新

? 广义定义

? 无需关闭服务器,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码。

? 狭义定义( iOS热更新)

? 无需将代码重新打包提交至AppStore,即可更新客户端的执行代码,即不用下载app而自动更新程序。

? 现状

? 苹果禁止了C#的部分反射操作,禁止JIT(即时编译,程序运行时创建并运行新代码),不允许逻辑热更新,只允许使用AssetBundle进行资源热更新。

为何要热更新

? 缩短用户获取新版应用的客户端的流程,改善用户体验。

? 具体到iOS平台的应用上,有以下几个原因

? App Store的审核周期难控制。

? 手机应用更新频繁。

? 对于大型应用,更新成本太大。

? 终极状态

? 不重新下载、不停机状态下完全变换一个应用的内容。

如何在iOS 上对Unity 应用进行热更新

? Android 应用的热更新

? 将执行代码预编译为assemblydll。

? 将代码作为TextAsset打包进Assetbundle。

? 运行时,使用Reflection机制实现代码的功能。

? 更新相应的Assetbundle即可实现热更新。

? Android 与iOS 热更新的 异同

? 苹果官方禁止iOS下的程序热更新;JIT在iOS下无效。

? 热更新方案:Unity+Lua插件。

? 使用Lua 插件进行iOS 热更新的 原理

? Unity 热更新的注意点

? 需要更新的代码、资源,都必须打包成AssetBundle(建议使用未压缩的格式打包)

? 熟悉Unity的几个重要的路径

? Resources(只读)

? StreamingAssets(只读)

? Application.dataPath(只读)

? Application.persistentDataPath(可读写)

? 重要路径之 之Resources

? Resources文件夹下的资源无论使用与否都会被打包

? 资源会被压缩,转化成二进制

? 打包后文件夹下的资源只读

? 无法动态更改,无法做热更新

? 使用Resources.Load加载

? 重要路径之StreamingAssets

? 流数据的缓存目录

? 文件夹下的资源无论使用与否都会被打包

? 资源不会被压缩和加密

? 打包后文件夹下的资源只读,主要存放二进制文件

? 无法做热更新

? WWW类加载(一般用CreateFromFile ,若资源是AssetBundle,依据其打包方式看是否是压缩的来决定)

? 相对路径,具体路径依赖于实际平台

?Application.streamingAssetsPath

? IOS: Application.dataPath + “/Raw” 或Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw

? 重要路径之Application.dataPath

? 游戏的数据文件夹的路径(例如在Editor中的Assets)

? 很少用到

? 无法做热更新

? IOS路径: Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data

? 重要路径之Application.persistentDataPath

? 持久化数据存储目录的路径( 沙盒目录,打包之前不存在 )

? 文件夹下的资源无论使用与否都会被打包

? 运行时有效,可读写

? 无内容限制,从StreamingAsset中读取二进制文件或从AssetBundle读取文件来写入PersistentDataPath中

? 适合热更新

? IOS路径: Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents

? 使用Lua 插件进行iOS 热更新的总体流程

支持Unity iOS 热更新的各种Lua 插件的对比

? uLua(asset store)

? uLua插件原生版本,开山鼻祖

? 不会产生静态代码

? 反射机制,效率低下,速度慢,gcalloc频繁

? 已停止更新维护,不支持Unity5.x,淡出主流

? uLua & cstoLua

? 开发平台成熟稳定,Bug修复迅速

? 开发者众多,资源丰富

? 静态方法,性能优

?有成功商业产品案例(啪啪三国、超神战队、酷鱼吧捕鱼、绝地战警、这不是刀塔等) 鱼、绝地战警、这不是刀塔等)

? 都是基于原生版本的改进;未来,两者会合并成一个插件

? sLua

? 静态方法,性能优

? 核心代码简洁

? 资源较少,开发平台不够成熟稳定

? 无 无成功商业产品案例 成功商业产品案例

? 基于原生版本的改进

支持Unity iOS 热更新的各种Lua 插件的对比

? C#Light(L#)

? 淡出主流

? uniLua

? c#实现的Lua虚拟机,非完整方案

? 淡出主流

支持Unity iOS 热更新的各种Lua 插件的对比

然后就是 uLua 和 sLua的测试代码。

综合来看 肯定是 uLua 会更好一些。

Unity应用的iOS热更新相关推荐

  1. iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET

    iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET Weex

  2. iOS热更新解读(三)—— JSPatch 之于 Swift

    继承自 NSObject 的 Swift 类 修改属性 新建 Swift 工程 SwiftJSPatch. AppDelegate.swift: // in AppDelegate.swift --- ...

  3. iOS热更新实现方式

    转发 链接:https://www.jianshu.com/p/00111d447e7e 苹果静止热更新,可惜我的是企业app,没有这些约束了,随便用.(当然有些热更新已经可以通过苹果审核了,比如JS ...

  4. 沉浸式iOS热更新方案

    沉浸式iOS热更新方案 iOS动态热更技术使得用户无需重新下载APP,就能修复线上BUG,提高用户体验,为APP快速迭代开发提供良好支持.此前业界的热更方案,多数是利用脚本语言修改Objective- ...

  5. IOS热更新-JSPatch实现原理+Patch现场恢复

    关于HotfixPatch 在IOS开发领域,由于Apple严格的审核标准和低效率,IOS应用的发版速度极慢,稍微大型的app发版基本上都在一个月以上,所以代码热更新(HotfixPatch)对于IO ...

  6. iOS 热更新,实时代码更新,动态更新,动态库framework

    允许转载! demo 下载 只要审核通过后,无须再次审核,就可以动态更新,iOS有三种处理方案: 一.开源框架 reactive native,但是编程语言是js 二.lua 脚本 三.使用oc语言的 ...

  7. Ios热更新,实时代码更新,动态更新,动态库framework

    动态更新,iOS有三种处理方案 1,开源框架reactive native,但是编程语言是js iOS app可以在运行时从服务器拉去最新的js文件到本读,然后执行,因为js是一门动态的脚本语言 所以 ...

  8. iOS热更新方案(过AppStore审核)

    一.查阅了几种热更新的方案, JSPatch . Aspects . Stringer . TTPatch .Mango.OCRunner.下面用一个表格对这几种方案分别做个对比:        方案 ...

  9. iOS 热更新/热修复

    热更新/热修复(调研的可能不全) 热更新 1.* Flutter * 由于渲染的基础(gdi)是自己实现的,所以实现跨平台.性能优化.摆脱平台约束方面的裕度更大.从实际体验来看, Flutter 的性 ...

最新文章

  1. Idea SpringBoot 基于 Docker容器环境进行远程调试
  2. 解析SharedPreferences
  3. Git图文教程:从零到上传GitHub项目
  4. 02.centos6.4找不到ifcfg-eth0(静态ip配置)
  5. Visual Studio “类视图”和“对象浏览器”图标含义
  6. python什么是交换算法_python算法-015将链表元素两两交换元素(交换值、就地翻转)...
  7. 在没有适当上下文的情况下引发异常是一种不良习惯
  8. 《Java编程思想》第四版读书笔记 第四章
  9. 晨哥真有料丨这样的你很掉价!
  10. 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。
  11. vivado下载失败并报 End of startup status:LOW
  12. 白名单模板_亚马逊白名单申请流程全解析
  13. 全球制造业“看上去很美”
  14. Class-Balanced Loss Based on Effective Number of Samples - 1 - 论文学习
  15. HTML实现A4模板
  16. 抖音吸粉_抖音吸粉5大实用方法首次分享!轻松实现粉丝10000+
  17. 论文阅读23 - Mixture Density Networks(MDN)混合密度网络理论分析
  18. [Unity][blender]在blender中新建标准两足人形骨骼模型动作导入到Unity中
  19. if,while选择结构和while,dowhile,for循环的使用
  20. Media Foundation——媒体类型(1)

热门文章

  1. android开发论坛!原生Android开发的路该怎么走?系列篇
  2. S32K144 PWM实践
  3. 2020年12月国产数据库排行榜:榜首TiDB 2.7亿融资再破纪录;openGauss晋级十强!
  4. 【课后习题】高等数学第七版上第一章 函数与极限 第六节 极限存在准则 两个重要极限
  5. (附源码)计算机毕业设计ssm高校勤工助学管理系统
  6. 西门子S7-200PLC系列(二)
  7. 这些科技公司们的名字,都是从何而来?
  8. Unity查找游戏对象及组件
  9. Log4j2研究之Filter
  10. 【赠书】重磅神经机器翻译“百科全书”,你想学习的机器翻译内容,都在这里...