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. 5、基于EasyExcel的导入导出

    一.Apach POI处理Excel的方式: 传统Excel操作或者解析都是利用Apach POI进行操作,POI中处理Excel有以下几种方式: 1.HSSFWorkbook: HSSFWorkbo ...

  2. Service层和Dao层的一些自我理解(╥╯^╰╥)(╥╯^╰╥)(学了这么久,这玩意儿似懂非懂的)

    学习java已经有很长时间了,但由于是在学校学的,基础不怎么扎实. 这几个月系统的学习,弥补了很多的缺陷,虽然大多数时间都在弄算法(咳咳),我前面的博客有写 如果有认真看过我代码的朋友会发现,我其实英 ...

  3. LeetCode-03 无重复字符的最长子串(Longest Substring Without Repeating Characters)

    题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 示例  1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 &qu ...

  4. 可持久化并查集学习笔记 | 题解P3402 可持久化并查集

    简要题意 你需要维护一个并查集,支持版本回退,查连通性,合并两个点. 特别的,没进行一次操作都要新建一个版本. 前置知识 可持久化数组,如果您不会,出门左转 [模板]可持久化线段树 1(可持久化数组) ...

  5. OpenMP 环境变量使用总结

    OpenMP 环境变量使用总结 OMP_CANCELLATION,在 OpenMP 规范 4.5 当中规定了取消机制,我们可以使用这个环境变量去设置是否启动取消机制,如果这个值等于 TRUE 那么就是 ...

  6. MySQL 中一条 sql 的执行过程

    一条 SQL 的执行过程 前言 查询 查询缓存 分析器 优化器 执行器 数据更新 日志模块 redo log (重做日志) binlog (归档日志) undo log (回滚日志) 两阶段提交 为什 ...

  7. C++中进程间相互通信的方法

    详细资料查看https://www.cnblogs.com/swunield/articles/3893250.html 在我看来主要分方式就是 1.共享内存 2.postmessage发送出去 3. ...

  8. Monkey 命令

    1) 参数:  -p 参数-p用于约束限制,用此参数指定一个或多个包(Package,即App).指定 包之后,Monkey将只允许系统启动指定的APP.如果不指定包,Monkey将允许系统启动设备中 ...

  9. Cow Picnic S 更新了(在后面)

    解题思路: 从每头奶牛的节点开始做搜索,用dfs走遍所有路径(走到底,不回头).每遍历到一个节点该节点遍历次数就加一,最后所有奶牛都搜索完之后,检查每个节点的遍历次数,如果该节点的遍历次数等于奶牛数则 ...

  10. SpringBoot+Vue前后端分离项目,在过滤器取值为Null

    SpringBoot+Vue前后端分离项目,在过滤器取值为Null 是因为SessionID的问题,因为axios每次的请求都是一次新的sessionId,所以只需要在main.js下配置如下 axi ...