当前位置: 首页 > article >正文

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.kler.cn/a/502942.html

相关文章:

  • mybatisPlus(条件构造器API)
  • 快速排序介绍
  • Docker安装和卸载(centos)
  • TensorFlow Quantum快速编程(基本篇)
  • IMX6ULL的IOMUXC寄存器和SNVS复用寄存器似乎都是对引脚指定复用功能的,那二者有何区别?
  • vue使用自动化导入api插件unplugin-auto-import,避免频繁手动导入
  • 氧化铌在光学领域的独特贡献与应用拓展-京煌科技
  • Android Room 报错:too many SQL variables (code 1 SQLITE_ERROR) 原因及解决方法
  • 【Qt】QWidget核心属性2(windowOpacity、cursor、font、toolTip、focusPolicy、styleSheet)
  • Vue2:el-table 最后一列的操作按钮不换行,按钮过多时展示【更多】
  • 掌握 React 关键:理解 super () 和 super (props) 的不同应用
  • (PVG)Periodic Vibration Gaussian:自动驾驶过程中的三维重建 论文解读
  • 3.Qt Quick-QML地图引擎之v4.3版本(新增动态轨迹线/海图/天地图街道/天地图卫星)
  • java fastjson2 解析JSON用法解析
  • [3D] 3D雷达天眼监控系统:打造智能城市的安全防线
  • 多模态论文笔记——BLIP2
  • 大语言模型的稀疏性:提升效率与性能的新方向
  • 《AI赋能鸿蒙Next,开启智能关卡设计新时代》
  • occ的开发框架
  • vue3项目大屏适配方案(scale)及vue-tv-focusable库使用
  • 基于访问表的安全防范策略
  • 【samba】主机名访问ubuntu的samba文件夹
  • 消息中间件面试
  • Ubuntu如何安装ESP32-idf
  • UML系列之Rational Rose笔记七:状态图
  • 50_Lua垃圾回收