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

WebGL-编译报错,如何定位sendfile报错位置

1)WebGL-编译报错,如何定位sendfile报错位置
2)设置DepthBufferBits和设置DepthStencilFormat的区别
3)Unity打包exe后,游戏内拉不起Steam的内购
4)使用了Play Asset Delivery提交版本被Google报错


这是第395篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

Platform

Q:找了资料,也请教了同行。均反馈是因为WebGL平台限制了System.IO的一些类、方法导致的。但是经过尝试,把项目中所有的System.IO都做了封装,依旧出现此编译报错。

不知道有没有什么更好的办法,定位到sendfile这个报错的具体位置,比如:某个脚本的引用、或者类、或者方法等,更为详细的一些信息?

完整报错信息如下:

Building Library\Bee\artifacts\WebGL\build\debug_WebGL_wasm\build.js failed with output:
emcc2: warning: C:\Users\ADMINI~1\AppData\Local\Temp\tmpszj8f2k_libxlua.a: archive is missing an index; Use emar when creating libraries to ensure an index is created [-Wemcc]
emcc2: warning: C:\Users\ADMINI~1\AppData\Local\Temp\tmpszj8f2k_libxlua.a: adding index [-Wemcc]
error: undefined symbol: sendfile (referenced by top-level compiled C/C++ code)
warning: Link with `-s LLD_REPORT_UNDEFINED` to get more information on undefined symbols
warning: To disable errors for undefined symbols use `-s ERROR_ON_UNDEFINED_SYMBOLS=0`
warning: _sendfile may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
Error: Aborting compilation due to previous errors
emcc2: error: '"C:/Program Files/Unity 2022.1.24f1/Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/node/node.exe" "C:\Program Files\Unity 2022.1.24f1\Editor\Data\PlaybackEngines\WebGLSupport\BuildTools\Emscripten\emscripten\src\compiler.js" C:\Users\ADMINI~1\AppData\Local\Temp\tmpz3_8ynyl.txt' failed (1)
UnityEditor.GenericMenu:CatchMenu (object,string[],int)

A:sendfile大概率不是IO接口,而是网络Socket的接口。WebGL限制不能用C# System.Net.*命名空间。要定位函数名,建议从IL2CPP结果里找。

打开Unity,触发WebGL打包,出现报错后,Unity先别关。Unity会把转换的中间结果的cpp代码生成到项目il2cppOutput目录,旧版Unity是放在Temp目录里,新版Unity的Bee构建结果不确定是不是在Temp目录里,但最终应该也一样能在工程里搜到il2cppOutput目录。

在il2cppOutput目录里直接字符串搜索下sendfile就知道是什么命名空间或者方法被引入了。

感谢裹面过油炸@UWA问答社区提供了回答


Rendering

Q:请教一下,RT里面设置DepthBufferBits和设置DepthStencilFormat有什么不同吗?

A:DepthBufferBits仅指定深度缓冲区的位数。DepthStencilFormat可以同时指定深度缓冲区和模板缓冲区的格式和精度。

如果你只需要深度缓冲区,那么DepthBufferBits可能就足够了。如果你需要用模板缓冲区,那么使用DepthStencilFormat会更合适。

感谢萧小俊@UWA问答社区提供了回答


Platform

Q:在Unity编辑器里是可以拉起内购界面,但是无法点击。打包出exe,内购界面是拉不起的。用的是Steamworks.NET,编辑器和exe的环境服务器都是一样的,steam_appid也是对的。求解答!

A1:我之前遇到过同样的问题:

  1. 首选游戏启动的时候,桌面右下角会有个Steam的弹窗(这个有一定要有!没有就会有问题)。
  2. 确认一下exe所在的目录是否有权限问题,之前遇到过Steam启动需要Windows管理员权限,所以Steam开启其他应用时都是管理员,这个要保持一致(比如Steam在“C:\Program Files”,那exe就需要右键管理员启动)。

感谢梁栋@UWA问答社区提供了回答

A2:猜测一下原因:

  1. SDK集成问题,先把IL2CPP的裁剪关了。
  2. 关闭Unity(包含Unity Hub)和Steam,重启Steam后再运行exe。
  3. 把打包后的exe放到非中文路径下运行。

感谢萧小俊@UWA问答社区提供了回答


Platform

Q:Google Play选择了Target API Level 34之后,如果项目使用了Play Asset Delivery功能提交版本,会被Google报错(关于Foreground Services Permissions)。

前述截图中,点击Go to declaration后,展示一个空列表,并没有说明我要求了哪些 Permission。

尝试解决,在AndroidManifest中加入如下内容(想办法去除权限),仍然不能解决问题:

<!-- Foreground Services permissions --><uses-permission android:name="android.permission.FOREGROUND_SERVICE" tools:node="remove" /><uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" tools:node="remove" />

A1:前台服务类型就几种,用以下官方文档跟你目前的权限对照一下:
前台服务类型  |  Background work  |  Android Developers

感谢萧小俊@UWA问答社区提供了回答

A2:33版本,Play Asset Delivery的install-time模式不需要任何权限。如果34版本不行,可以降到33版本。因为我搜索了下Google Play Asset Delivery,并不需要任何权限。而且我反编译了自己的项目,里面也没有任何多余的权限。

感谢qingfeng@UWA问答社区提供了回答

A3: 据我了解,谷歌强制的就是要升到34(最晚可延期到2024.11.1),其实是需要权限的,藏在Asset Delivery库里。

感谢加菲教主@UWA问答社区提供了回答

封面图来源于网络


今天的分享就到这里。生有涯而知无涯,在漫漫的开发周期中,我们遇到的问题只是冰山一角,UWA社区愿伴你同行,一起探索分享。欢迎更多的开发者加入UWA社区。

UWA官网:www.uwa4d.com
UWA社区:community.uwa4d.com

 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • java事务回滚原理 Java事务回滚的实现及流程
  • AFAC2024-基于保险条款的问答 比赛日记 llamafactory qwen npu 910B1
  • 微软CrowdStrike驱动蓝屏以及内核签名
  • 谷粒商城实战笔记-45-商品服务-API-三级分类-查询-递归树形结构数据获取
  • Lua 语法学习笔记
  • 【safari】react在safari浏览器中,遇到异步时间差的问题,导致状态没有及时更新到state,引起传参错误。如何解决
  • 压缩包方式windows安装mysql
  • ORBSLAM3 ORB_SLAM3 Ubuntu20.04 ROS Noetic 虚拟机镜像 下载
  • 【漏洞复现】Netgear WN604 downloadFile.php 信息泄露漏洞(CVE-2024-6646)
  • CCF-CSP认证考试 202406-2 矩阵重塑(其二) 100分题解
  • 如何查看jvm资源占用情况
  • JavaScript(11)——对象
  • SSD基本架构与工作原理
  • MongoDB教程(十一):MongoDB关系管理与文档关联
  • 加密传输及相关安全验证:
  • 【node学习】协程
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • Android 架构优化~MVP 架构改造
  • angular学习第一篇-----环境搭建
  • Babel配置的不完全指南
  • CSS实用技巧干货
  • es6要点
  • flutter的key在widget list的作用以及必要性
  • gf框架之分页模块(五) - 自定义分页
  • idea + plantuml 画流程图
  • javascript 哈希表
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • js写一个简单的选项卡
  • Spark RDD学习: aggregate函数
  • vue-cli在webpack的配置文件探究
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 机器学习学习笔记一
  • 简析gRPC client 连接管理
  • 来,膜拜下android roadmap,强大的执行力
  • 那些被忽略的 JavaScript 数组方法细节
  • 使用 QuickBI 搭建酷炫可视化分析
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 树莓派 - 使用须知
  • 我感觉这是史上最牛的防sql注入方法类
  • 找一份好的前端工作,起点很重要
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)fread与fwrite详解
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (三)模仿学习-Action数据的模仿
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (数据结构)顺序表的定义
  • (四)汇编语言——简单程序
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ***检测工具之RKHunter AIDE