Deer_GF之IOS出热更包
Hi,今天介绍一下Deer_GF_Wolong,框架基于HybridCLR热更新技术,出IOS热更包
首先我们需要准备的工作:
环境:Mac
Unity 版本 2021.3.1f1c1
热更方案:HybridCLR 热更 HybridCLR官方文档
在此ios出包之前,默认大家已经对Deer_GF_Wolong 已经了解,已经可以构建ab资源在Win平台上正常热更。
接下来我们就开始构建ios包步骤介绍:
首先安装最新的hybridclr环境,以及【hybridclr_unity】Unity sdk 包,安装步骤,这里不再赘述,请移步到 hybridclr安装;
请查阅官方文档 Unity版本相关特殊操作,因为我们用的Unity 版本是 2021.3.1f1c1,所以我们需要对hybridclr安装需要特殊处理。作者给我们提供的是2021.3.1f1,我们现在用的是c1版本,所以我们现在开始手动制作
找到UnityEditor.CoreModule.dll反编译修改,首先打开Unity Hub 找到Unity对应版本点击⚙️,在Finder 中显示
选中Unity图标打开显示包内容
压缩Contents/Managed/UnityEngine 文件夹,然后传到windows系统环境中。
请移步到官方文档中查看修改Unity编辑器相关dll
注意 在用dnspy保存模块时候,要仔细看作者说的,如下图,不然就会报错 There's not enough bytes left to read
版本对应修改好的UnityEditor.CoreModule.dll 在项目【HybridCLRData~Data\IOS相关\2021.3.1f1c1】文件夹下,可以直接拿去覆盖掉Unity{Editor安装目录}/Editor/Data/Managed/UnityEngine的UnityEditor.CoreModule.dll 如下图:
注意,注意,注意替换完dll文件重新打开Unity及项目。。
构建ios包,中间出现错误,是Untiy提示的错误
小1. LocationService class is used but Locations Usage Description is empty. App will not work on iOS 10+. 如果出现此错误,就到PlayerSetting添加定位描述,如下图:
出包成功之后我们可以看到如下图:有了很多aot原数据补充dll文件,,如果不反编译修改UnityEditor.CoreModule.dll,如下这个目录不会出现这么多aot补充原数据dll文件,如下图:
构建ab资源,把构建好的ab资源上传到cdn里
在DeerSetting里设置cdn信息
修改Resources组件ResourceMode 模式为 Updatable模式,如下图:
再次构建IOS xcode项目
生成 【libil2cpp.a】文件,相关教程请移步官方文档:IOS平台打包
生成过程中会报错,提示缺少 cmake command 我们去下载一个就可以cmake下载地址,cmake安装教程请移步cmake 安装图文教程;由于需要梯子,下载速度较慢,也可以用框架项目里下载好的安装包去安装,位置目录如下图:
打开xcode项目,替换【libil2cpp.a】文件,然后生成app,到此,ios出包完成!
修改项目中的资源和脚本,重新构建ab资源上传到cdn体验热更。祝君成功。。。
欢迎大家体验Deer_Gameframework_Wolong出ios热更包。
框架介绍请移步【Deer_GF之框架介绍】
出包报错可能有下面几个注意的:
- Api Compatibility Level 需选择如下图:
Deer_GF之IOS出热更包的更多相关文章
- 实现iOS图片等资源文件的热更新化(五): 一个简单完整的资源热更新页面
简介 一个简单的关于页面,有一个图片,版本号,App名称等,着重演示各个系列的文章完整集成示例. 动机与意义 这是系列文章的最后一篇.今天抽空写下,收下尾.文章本身会在第四篇的基础上,简单扩充下代码, ...
- 实现iOS图片等资源文件的热更新化(三):动态的资源文件夹
简介 此文,将尝试动态从某个不确定的文件夹中加载资源文件.文章,会继续完善自定义的 imageNamed 函数,并为下一篇文章铺垫. 这么做的意义 正如我们经常所说的那样,大多数情景知道做事的意义往往 ...
- 实现iOS图片等资源文件的热更新化(零): 序
必要的序 以后在写系列文章,准备把基本的规划和动机等,单独作为一个小的序言部分给独立出来.序言部分,可以较为完整地交待系列文章的写作动机,所展示的编码技术可能的应用场景等.个人,我还是比较看重文章或者 ...
- 实现iOS图片等资源文件的热更新化(二):自定义的动态 imageNamed
这篇文章,要解决的是,使用一个自定义的 imageNamed 函数来替代系统的 imageNamed 函数.内部逻辑,将贯穿对比论证 关于"合适"的图片的定义.对iOS加载图片的规 ...
- 客户端热更新框架之UI热更框架设计(上)
什么是热更新,为什么需要热更新? 热更新是目前各大手游等众多App常用的更新方式.简单来说就是在用户通过App Store下载App之后,打开App时遇到的即时更新.对于手游客户端来 ...
- Unity热更方案汇总
http://www.manew.com/thread-114496-1-1.html 谈到目前的代码热更方案:没什么特别的要求 <ignore_js_op> toLua(效 ...
- Unity3D热更新之LuaFramework篇[08]--热更新原理及热更服务器搭建
前言 前面铺垫了这么久,终于要开始写热更新了. Unity游戏热更新包含两个方面,一个是资源的更新,一个是脚本的更新. 资源更新是Unity本来就支持的,在各大平台也都能用.而脚本的热更新在iOS平台 ...
- 热更新-----为何使用lua进行热更
事实上我们在安卓端是可以使用c#jit的,但是我们在ios上的代码是AOT(预先编译,静态编译)的,不能用c# jit(实时编译,即时编译). ios不能用c#热更是因为启动了CPU的No eXecu ...
- 实操重写IK分词器源码,基于mysql热更新词库
实操重写IK分词器源码,基于mysql热更新词库参考网址:https://blog.csdn.net/wuzhiwei549/article/details/80451302 问题一:按照这篇文章的介 ...
- Unity 代码编译成dll 更新dll实现热更代码
Unity 代码编译成dll 更新dll实现热更代码 实现流程 代码编译成DLL DLL打包成AssetBundle 加载AssetBundle 加载代码程序集 获取指定类 使用反射赋值 C#代码编译 ...
随机推荐
- 在IQuery中使用除法提示"Numeric value does not fit in a System.Decimal"
起因 有个需求是需要汇总(单耗=单件用量*1+损耗率)的值,由于现在我们数据库中存的XX率都是放大了一百倍(即10%数据库存的是10),然后就很自然的写了个linq汇总如下 materialOrder ...
- Spark详解(02) - Spark概述
Spark详解(02) - Spark概述 什么是Spark Hadoop主要解决,海量数据的存储和海量数据的分析计算. Spark是一种基于内存的快速.通用.可扩展的大数据分析计算引擎. Hadoo ...
- 一文读懂 Kubernetes 存储设计
在 Docker 的设计中,容器内的文件是临时存放的,并且随着容器的删除,容器内部的数据也会一同被清空.不过,我们可以通过在 docker run 启动容器时,使用 --volume/-v 参数来指定 ...
- Blazor Hybrid (Blazor混合开发)更好的读取本地图片
在 Blazor Hybrid 应用中,Razor 组件在设备上本机运行. 组件通过本地互操作通道呈现到嵌入式 Web View 控件. 组件不在浏览器中运行,并且不涉及 WebAssembly. R ...
- 创建型模式 - 简单工厂模式StaticFactoryMethod
简单工厂模式的定义 创建型模式: 我们把被创建的对象称为产品,把创建产品的对象称为工厂.如果要创建的产品不多,只要一个工厂类就可以完成,这种模式叫简单工厂模式. 在简单 ...
- Unity_UIWidgets - 组件Container
Unity_UIWidgets - 组件Container Container 构造 效果 结语 QQ 今日无推荐 Unity_UIWidgets - 组件Container 上周给大家讲完了Scaf ...
- 前端知识点(js部分)
目录 一.JS简介 简介 ECMAScript的历史 二.JS基础 1.注释语法 2.引入js的多种方式 3.结束符号 三.变量与常量 编写和运行js代码的两种方式 变量声明 四.基本数据类型 1.数 ...
- WPF 使用动画绘制一个点赞大拇指
效果图 好久没有写wpf了. 最近看到飞书的点赞动画非常有意思,决定试试,虽然不及飞书那样的绚丽,但是练手还是可以的,希望自己的手艺还在! 那么如何写一个这样的动画呢? 首先需要刨析这个动画的构成: ...
- python判断密码连续,重复,大小写、数字、符号混合密码复杂度要求
一.python 判断密码连续,重复,大小写.数字.符号混合密码复杂度要求 1. 运行环境 python 3.6.8 2. 密码必须包含大小写.数字.特殊符号中的3种且长度为8-16位 def ver ...
- java数据库连接池笔记
(课程笔记来源于跟着老师敲,老师是黑马程序b站白嫖课程~) #数据库连接池: 1.概念:就是一个容器(集合),存放数据连接的容器 当容器初始化好后,容器会被创建,容器中会申请一些连接对象,当用户来 ...