Hi,今天介绍一下Deer_GF_Wolong,框架基于HybridCLR热更新技术,出IOS热更包

首先我们需要准备的工作:

环境:Mac

Unity 版本 2021.3.1f1c1

热更方案:HybridCLR 热更 HybridCLR官方文档

在此ios出包之前,默认大家已经对Deer_GF_Wolong 已经了解,已经可以构建ab资源在Win平台上正常热更。

接下来我们就开始构建ios包步骤介绍:

  1. 首先安装最新的hybridclr环境,以及【hybridclr_unity】Unity sdk 包,安装步骤,这里不再赘述,请移步到 hybridclr安装

  2. 请查阅官方文档 Unity版本相关特殊操作,因为我们用的Unity 版本是 2021.3.1f1c1,所以我们需要对hybridclr安装需要特殊处理。作者给我们提供的是2021.3.1f1,我们现在用的是c1版本,所以我们现在开始手动制作

  3. 找到UnityEditor.CoreModule.dll反编译修改,首先打开Unity Hub 找到Unity对应版本点击⚙️,在Finder 中显示

  4. 选中Unity图标打开显示包内容

  5. 压缩Contents/Managed/UnityEngine 文件夹,然后传到windows系统环境中。

  6. 请移步到官方文档中查看修改Unity编辑器相关dll

    注意 在用dnspy保存模块时候,要仔细看作者说的,如下图,不然就会报错 There's not enough bytes left to read

  7. 版本对应修改好的UnityEditor.CoreModule.dll 在项目【HybridCLRData~Data\IOS相关\2021.3.1f1c1】文件夹下,可以直接拿去覆盖掉Unity{Editor安装目录}/Editor/Data/Managed/UnityEngine的UnityEditor.CoreModule.dll 如下图:

  8. 注意,注意,注意替换完dll文件重新打开Unity及项目。。

  9. 构建ios包,中间出现错误,是Untiy提示的错误

    小1. LocationService class is used but Locations Usage Description is empty. App will not work on iOS 10+. 如果出现此错误,就到PlayerSetting添加定位描述,如下图:

  10. 出包成功之后我们可以看到如下图:有了很多aot原数据补充dll文件,,如果不反编译修改UnityEditor.CoreModule.dll,如下这个目录不会出现这么多aot补充原数据dll文件,如下图:

  11. 构建ab资源,把构建好的ab资源上传到cdn里

  12. 在DeerSetting里设置cdn信息

  13. 修改Resources组件ResourceMode 模式为 Updatable模式,如下图:

  14. 再次构建IOS xcode项目

  15. 生成 【libil2cpp.a】文件,相关教程请移步官方文档:IOS平台打包

    生成过程中会报错,提示缺少 cmake command 我们去下载一个就可以cmake下载地址,cmake安装教程请移步cmake 安装图文教程;由于需要梯子,下载速度较慢,也可以用框架项目里下载好的安装包去安装,位置目录如下图:

  16. 打开xcode项目,替换【libil2cpp.a】文件,然后生成app,到此,ios出包完成!

  17. 修改项目中的资源和脚本,重新构建ab资源上传到cdn体验热更。祝君成功。。。

欢迎大家体验Deer_Gameframework_Wolong出ios热更包。

框架介绍请移步【Deer_GF之框架介绍】

出包报错可能有下面几个注意的:
  1. Api Compatibility Level 需选择如下图:

Deer_GF之IOS出热更包的更多相关文章

  1. 实现iOS图片等资源文件的热更新化(五): 一个简单完整的资源热更新页面

    简介 一个简单的关于页面,有一个图片,版本号,App名称等,着重演示各个系列的文章完整集成示例. 动机与意义 这是系列文章的最后一篇.今天抽空写下,收下尾.文章本身会在第四篇的基础上,简单扩充下代码, ...

  2. 实现iOS图片等资源文件的热更新化(三):动态的资源文件夹

    简介 此文,将尝试动态从某个不确定的文件夹中加载资源文件.文章,会继续完善自定义的 imageNamed 函数,并为下一篇文章铺垫. 这么做的意义 正如我们经常所说的那样,大多数情景知道做事的意义往往 ...

  3. 实现iOS图片等资源文件的热更新化(零): 序

    必要的序 以后在写系列文章,准备把基本的规划和动机等,单独作为一个小的序言部分给独立出来.序言部分,可以较为完整地交待系列文章的写作动机,所展示的编码技术可能的应用场景等.个人,我还是比较看重文章或者 ...

  4. 实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed

    这篇文章,要解决的是,使用一个自定义的 imageNamed 函数来替代系统的 imageNamed 函数.内部逻辑,将贯穿对比论证 关于"合适"的图片的定义.对iOS加载图片的规 ...

  5. 客户端热更新框架之UI热更框架设计(上)

    什么是热更新,为什么需要热更新?          热更新是目前各大手游等众多App常用的更新方式.简单来说就是在用户通过App Store下载App之后,打开App时遇到的即时更新.对于手游客户端来 ...

  6. Unity热更方案汇总

    http://www.manew.com/thread-114496-1-1.html   谈到目前的代码热更方案:没什么特别的要求   <ignore_js_op>    toLua(效 ...

  7. Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建

    前言 前面铺垫了这么久,终于要开始写热更新了. Unity游戏热更新包含两个方面,一个是资源的更新,一个是脚本的更新. 资源更新是Unity本来就支持的,在各大平台也都能用.而脚本的热更新在iOS平台 ...

  8. 热更新-----为何使用lua进行热更

    事实上我们在安卓端是可以使用c#jit的,但是我们在ios上的代码是AOT(预先编译,静态编译)的,不能用c# jit(实时编译,即时编译). ios不能用c#热更是因为启动了CPU的No eXecu ...

  9. 实操重写IK分词器源码,基于mysql热更新词库

    实操重写IK分词器源码,基于mysql热更新词库参考网址:https://blog.csdn.net/wuzhiwei549/article/details/80451302 问题一:按照这篇文章的介 ...

  10. Unity 代码编译成dll 更新dll实现热更代码

    Unity 代码编译成dll 更新dll实现热更代码 实现流程 代码编译成DLL DLL打包成AssetBundle 加载AssetBundle 加载代码程序集 获取指定类 使用反射赋值 C#代码编译 ...

随机推荐

  1. RedisTemplate设置redis的key时出现\xac\xed\x00\x05t\x00\x0f前缀

    1.问题描述 使用redisTemplate设置redis的key-value,程序运行没有问题,但是却在redis客户端查不到设置的key-value. 2.产生原因 出现这种乱码前缀的原因是没有进 ...

  2. IT编程相关内容汇总 - 进阶者系列 - 学习者系列文章

    笔者工作了十多年了,对于技术也有一定的经验,但是IT编程技术的更新是挺快的,特别是各种框架,各种中间件啥的都涌现出来了.这篇博文笔者打算将IT编程的前端.后端.数据库和移动端做一个博文知识汇总,让阅读 ...

  3. python之路25 面向对象 封装(隐藏、伪装)、多态、反射

    派生方法实战演练 import json import datetime d = { 't1': datetime.date.today(), 't2': datetime.datetime.toda ...

  4. [Unity]限制一个值的大小(Clamp以及Mathf)

    如何限制一个物体的运动范围? 代码实例 public float xMin, xMax, zMin, zMax; rigidbody.position = new Vector3( Mathf.Cla ...

  5. python连接kafka-2.0

    import sysimport timeimport osimport jsonimport vertica_pythonimport loggingimport pykafkafrom pykaf ...

  6. 手把手教你图文并茂windows10安装VMware创建CentOS-7-x86_64运行linux系统

    VMware是什么 VMWare (Virtual Machine ware)可以使你的计算机上同时运行几个系统.例如windows.DOS.LINUX等同时存在,可以将这些系统像程序似的随时切换,并 ...

  7. 用Java写一个分布式缓存——缓存管理

    前言 之前也用过一些缓存中间件,框架,也想着自己是不是也能用Java写一个出来,于是就有了这个想法,打算在写的过程中同步进行总结 源码:weloe/Java-Distributed-Cache (gi ...

  8. Java 进阶P-3.5+P-3.6

    对象数组的for-each循环 for-each是用于遍历数组的另一种形式的for循环.for-each循环显着减少了代码,并且循环中没有使用索引或计数器. 句法: For(<数组/列表的数据类 ...

  9. 让Apache Beam在GCP Cloud Dataflow上跑起来

    简介 在文章<Apache Beam入门及Java SDK开发初体验>中大概讲了Apapche Beam的简单概念和本地运行,本文将讲解如何把代码运行在GCP Cloud Dataflow ...

  10. Unity_UIWidgets - 组件AppBar

    Unity_UIWidgets - 组件AppBar AppBar 构造 构造png观看 使用代码 使用效果 AppBar使用结束 结语 图标Icon QQ 今日无推荐 Unity_UIWidgets ...