unity打包sdk热更新笔记

基础打包需要知识:
安装包大小不要超过2G,AB包数量过多会影响加载和构建,多次IO,用Gradle打包,要支持64位系统,不同的渠道包:让做sdk的人支持,提供渠道包的打包工具
配置系统环境变量,可快速执行某个exe bat命令
删除模型默认材质(因为用的是ab的,所以没用,默认的没用)
设置图集Tag
静态资源只被一个资源依赖不给ab包名(例如材质和贴图,材质生成,但是贴图不生成资源索引)
生成xlua,如果有用到lua
收集shader变体
打ab的策略:
1.先根据配置确定动态资源分包,然后根据以下原则,循环确定静态资源分包
2.只被一个(动态/静态)包依赖的资源,打进同一包
3.被多个(动态/静态)包依赖的资源,单独分一个包
4.纹理和fbx的模型,一般不生成,不给包名
打包时候下载ab资源的时候使用的unitywebrequest
ab下载的路径在Application.persistentDataPath可读可写,被称为外包路径,window在appdata/用户名下面
版本号,本次版本修改的ab文件相对于上一次和ab文件的差异的ab会记录在csv表格中
gradle工程是一个在IL2CPP文件夹下的工程
同一个游戏不同unity工程的资源的guid不能不一样,否则别人提交会有问题,资源管理的基础,图片的guid被prefab依赖
游戏运行时候是先从persistentDataPath加载ab,找不到再到内包上找
启用ab的Disable Write TypeTree,可以提高打包速度

Unity3D项目Plugins目录组织

https://blog.csdn.net/linxinfa/article/details/102978005

IPreprocessBuild

继承提供打包前,打包后接口

BuildAssetBundles

UnityWebRequest’s DownloadHandlerAssetBundle / LoadFromFile / LoadFromMemoryAsync

数据完整性校验方式

AndroidManfiest对象获得依赖

替代ab的addressable

https://blog.csdn.net/u012338130/article/details/104135468
https://blog.csdn.net/linxinfa/article/details/122390621
要注意addressable热更新之后没有删除的重复缓存问题,在这里插入图片描述
下载的时候这个mergenode要选择none,某教程教我们写union,就是同个key保留了

AssetStudio 对没有加密的ab包进行逆向

Host的作用

https://blog.csdn.net/qq_35246620/article/details/66970211,一般谁做服务器谁提供一个端口给外面客户端连接,有开放端口了要配置一个Host

HybridClr

https://blog.csdn.net/u013774978/article/details/131565741

Gradle

https://linxinfa.blog.csdn.net/article/details/118553713

Jenkins

https://blog.csdn.net/linxinfa/article/details/118816132
https://www.jenkins-zh.cn/tutorial/management/mirror/ 中文社区,上面有镜像源,下载出问题先设置
在这里插入图片描述
jenkins的归档路径,密码,端口配置相关基本都在配置文件上
jenkins restart
unity 插件直接使用unity命令
-quit -batchmode -projectPath “C:\D\UnityProject\BuildApkAndHotUpdate” -executeMethod BuildTool.BuildApk productName=&productName -logFile C:\D\UnityProject\apk\output.log"

Bat文件

打包中常用Bat命令:

svn:

1.svn update %WorkPath% --username 用户名 --password 密码
2.svn clearup
3.svn revert * 更新之前应该先还原
4.Unity.exe -projectpath unity工程路径 -quit -batchmode -executeMethod 类名.方法名 -logFile log文件路径
5.Winrar.exe -a -r -ep1 文件夹路径 归档路径
jenkins和unity中传参,通过文件传参
6,java 安卓生成密钥 在这里插入图片描述
在这里插入图片描述
用一样的密码,密码要在打包代码里面用代码输入

打包相关参数:

EditorUserBuildSettings.development=true;
EditorUserBuildSettings.connectProfiler=true; 这个开启profiler
projectNama和版本号:
在这里插入图片描述
分别会显示在你手机这个app的应用信息里面
安卓需要 密钥 keystore
ios需要开发者账号和开发者证书(调试版和发布版),先注册账号进入账号界面操作,ipa跟apk一样是ios的包代表

打包常用API相关

1.String:StartWith用于判断是否是某个目录下的资源,根据路径。
2.string[] guids = AssetDatabase.FindAssets(null, SearchFolder.ToArray()); 从路径集合下搜索所有的文件返回guid列表
3.string path = AssetDatabase.GUIDToAssetPath(guids[i]);
4.AssetDatabase.GetAssetDependencyHash(path).ToString();用来生成文件的hash,增加比较效率
5.string[] dps = AssetDatabase.GetDependencies(path, false);获得path这个文件的依赖资源路径列表
6.String:SubString()例如截取到相对于Asset的路径
7.ath.GetFileNameWithoutExtension(assetPath);直接获取文件名称
8.EditorUtility.DisplayCancelableProgressBar($“动态资源:生成资源包名映射:({i}/{assetCount})”, assetPath, i * 1.0f / assetCount);进度相关显示进度条
9.EditorUtility.ClearProgressBar();清除进度条
10.HashSet 经常使用可以去重
11. var manifest = BuildPipeline.BuildAssetBundles(path:string, buildList:List, option:BuildAssetBundleOptions, buildPlatform); 用这个接口,就不用调用那个设置prefab ab包名的接口了,直接把包名和对应的assetname名传进去。相对于asset的路径。AssetBundleBuild,所有对应的文件对应一个包名
12. //设置签名
PlayerSettings.Android.keystoreName = _buildApkConfig[BuildKeystoreNameKey];
PlayerSettings.Android.keystorePass = _buildApkConfig[BuildKeystorePassKey];
PlayerSettings.Android.keyaliasName = _buildApkConfig[BuildKeyaliasNameKey];
PlayerSettings.Android.keyaliasPass = _buildApkConfig[BuildKeyaliasPassKey];
13. CSObjectWrapEditor.Generator.ClearAll();
CSObjectWrapEditor.Generator.GenAll(); XLUA的
14. Directory.GetDirectories
15. option |= BuildAssetBundleOptions.ForceRebuildAssetBundle; BuildAssetBundles的时候加上这个标签,会强制从0开始ab,否则会比对目录下只打增量修改的ab
16. Application.version可以用来判断是不是第一次安装包,热更了资源的包的这个字段还是不变
17.在这里插入图片描述
VersionCode可以用来表示是不是新的版本的包

打包常见报错:

1.gradle没找到,配置一下国内镜像在settingTemplate文件里面
https://blog.csdn.net/RabbitLikeCitrus/article/details/107022571

华佗热更DLL

华佗热更dll就是用华佗把dll变成byte打进某个ab里面去,然后更新ab,下下来,从ab里面读取字节流加载成dll
在这里插入图片描述
Assembly.Load(dllByte.bytes)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/1433.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文笔记(六十一)Implicit Behavioral Cloning

Implicit Behavioral Cloning 文章概括摘要1 引言2 背景:隐式模型的训练与推理3 隐式模型与显式模型的有趣属性4 policy学习成果5 理论见解:隐式模型的通用逼近性6 相关工作7 结论 文章概括 引用: inproceedings{florence2022implicit,titl…

【Rust自学】12.3. 重构 Pt.1:改善模块化

12.3.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print),是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步: 接收命令行参数读取…

Vue2+OpenLayers调用WMTS服务初始化天地图示例(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、WMTS服务详解 四、完整代码 五、Gitee源码 一、案例截图 二、安装OpenLayers库 npm install ol 三、WMTS服务详解 WMTS(Web Map Tile Service)是一种标准的网络地图服务协议,用于提供基于…

【STM32-学习笔记-6-】DMA

文章目录 DMAⅠ、DMA框图Ⅱ、DMA基本结构Ⅲ、不同外设的DMA请求Ⅳ、DMA函数Ⅴ、DMA_InitTypeDef结构体参数①、DMA_PeripheralBaseAddr②、DMA_PeripheralDataSize③、DMA_PeripheralInc④、DMA_MemoryBaseAddr⑤、DMA_MemoryDataSize⑥、DMA_MemoryInc⑦、DMA_DIR⑧、DMA_Buff…

lerna使用指南

lerna版本 以下所有配置命令都是基于v8.1.9,lerna v5 v7版本差别较大,在使用时,注意自身的lerna版本。 lerna开启缓存及缓存配置 nx缓存是v5版本以后才有的,小于该版本的无法使用该功能。 初始化配置 缓存配置文件nx.json&am…

html辅助标签与样式表

一、HTML其它常用标签 1.meta标签 &#xff08;1&#xff09;meta标签是一个特殊的HTML标签&#xff0c;提供有关网页的信息&#xff0c;如作者姓名、公司名称和联系信息等 &#xff08;2&#xff09;许多搜索引擎都使用meta标签 <head> <meta name"keyword…

用 Python 从零开始创建神经网络(十九):真实数据集

真实数据集 引言数据准备数据加载数据预处理数据洗牌批次&#xff08;Batches&#xff09;训练&#xff08;Training&#xff09;到目前为止的全部代码&#xff1a; 引言 在实践中&#xff0c;深度学习通常涉及庞大的数据集&#xff08;通常以TB甚至更多为单位&#xff09;&am…

DolphinScheduler自身容错导致的服务器持续崩溃重大问题的排查与解决

01 问题复现 在DolphinScheduler中有如下一个Shell任务&#xff1a; current_timestamp() { date "%Y-%m-%d %H:%M:%S" }TIMESTAMP$(current_timestamp) echo $TIMESTAMP sleep 60 在DolphinScheduler将工作流执行策略设置为并行&#xff1a; 定时周期调度设置…

【机器学习案列】学生抑郁可视化及预测分析

&#x1f9d1; 博主简介&#xff1a;曾任某智慧城市类企业算法总监&#xff0c;目前在美国市场的物流公司从事高级算法工程师一职&#xff0c;深耕人工智能领域&#xff0c;精通python数据挖掘、可视化、机器学习等&#xff0c;发表过AI相关的专利并多次在AI类比赛中获奖。CSDN…

Docker Desktop 构建java8基础镜像jdk安装配置失效解决

Docker Desktop 构建java8基础镜像jdk安装配置失效解决 文章目录 1.问题2.解决方法3.总结 1.问题 之前的好几篇文章中分享了在Linux(centOs上)和windows10上使用docker和docker Desktop环境构建java8的最小jre基础镜像&#xff0c;前几天我使用Docker Desktop环境重新构建了一个…

【Uniapp-Vue3】页面生命周期onLoad和onReady

一、onLoad函数 onLoad在页面载入时触发&#xff0c;多用于页面跳转时进行参数传递。 我们在跳转的时候传递参数name和age: 接受参数&#xff1a; import {onLoad} from "dcloudio/uni-app"; onLoad((e)>{...}) 二、onReady函数 页面生命周期函数中的onReady其…

【STM32-学习笔记-8-】I2C通信

文章目录 I2C通信Ⅰ、硬件电路Ⅱ、IIC时序基本单元① 起始条件② 终止条件③ 发送一个字节④ 接收一个字节⑤ 发送应答⑥ 接收应答 Ⅲ、IIC时序① 指定地址写② 当前地址读③ 指定地址读 Ⅳ、MPU6050---6轴姿态传感器&#xff08;软件I2C&#xff09;1、模块内部电路2、寄存器地…

WINFORM - DevExpress -> devexpress版--报表(report)

devexpress report模板 1.安装devexpress(DevExpress 总结【安装、案例】_caoyanchao1的博客-CSDN博客_devexpress) 2.新建vs项目且添加standarReportDesigner控件 涛神设计器注意 3.运行后步骤 点击New Report DetailReport 涛神设计器checkbox(3.复选框只认boolean类型的 b…

亿道三防丨三防笔记本是什么意思?和普通笔记本的优势在哪里?

三防笔记本是什么意思&#xff1f;和普通笔记本的优势在哪里&#xff1f; 在现代社会中&#xff0c;笔记本电脑已经成为人们工作和生活中不可或缺的一部分。然而&#xff0c;在一些特殊行业或环境中&#xff0c;普通笔记本电脑由于其脆弱性和对环境条件的敏感性&#xff0c;往…

opencv的NLM去噪算法

NLM&#xff08;Non-Local Means&#xff09;去噪算法是一种基于图像块&#xff08;patch&#xff09;相似性的去噪方法。其基本原理是&#xff1a; 图像块相似性&#xff1a;算法首先定义了一个搜索窗口&#xff08;search window&#xff09;&#xff0c;然后在该窗口内寻找…

ElasticSearch在Windows环境搭建测试

引子 也持续关注大数据相关内容一段时间&#xff0c;大数据内容很多。想了下还是从目前项目需求侧出发&#xff0c;进行相关学习。Elasticsearch&#xff08;ES&#xff09;是位于 Elastic Stack&#xff08;ELK stack&#xff09; 核心的分布式搜索和分析引擎。Logstash 和 B…

Docker安装和卸载(centos)

Docker安装和卸载 一&#xff0c;已安装Docker&#xff0c;卸载Docker 1.方法一 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine​ 如果出现以下提示就证明没卸载…

《自动驾驶与机器人中的SLAM技术》ch8:基于 IESKF 的紧耦合 LIO 系统

目录 基于 IESKF 的紧耦合 LIO 系统 1 IESKF 的状态变量和运动过程 1.1 对名义状态变量的预测 1.2 对误差状态变量的预测及对协方差矩阵的递推 2 观测方程中的迭代过程 3 高维观测中的等效处理 4 NDT 和 卡尔曼滤波的联系 5 紧耦合 LIO 系统的主要流程 5.1 IMU 静止初始化 …

认识机器学习中的经验风险最小化准则

经验风险最小化准则的定义 经验风险最小化&#xff08;Empirical Risk Minimization&#xff0c;简称 ERM&#xff09;是机器学习中的一种基本理论框架&#xff0c;用于指导模型的训练过程。其核心思想是通过最小化训练数据上的损失函数来优化模型参数&#xff0c;从而提高模型…

使用Deepseek搭建类Cursor编辑器

使用Deepseek搭建类Cursor编辑器 Cursor想必大家都用过了&#xff0c;一个非常强大的AI编辑器&#xff0c;在代码编写上为我们省了不少事&#xff0c;但高昂的价格让我们望而却步&#xff0c;这篇文章教你在Visual Studio Code上搭建一个类Cursor的代码编辑器。 步骤其实非常…