Oculus优化减少UE4开发迭代时间(oculus uu)
liebian365 2024-11-15 21:47 21 浏览 0 评论
来源:映维网 作者 流水原
开发者迭代时间是一个主要的痛点,而Oculus针对这一情况对Unity的迭代时间进行了优化,并且正在努力减少UE4的迭代时间。
1. 迭代代码时跳过APK版本
运行Gradle并生成更新的APK可能是一个耗时过程。当迭代代码改动时,这意味着用户需要等待代码编译和链接,然后再等待APK打包。Oculus的优化允许用户在迭代代码更改时绕过APK的重新打包。
1.1 工作原理
现在你需要重新构建APK并包含更新的编译二进制文件,Oculus对Oculus OS进行了更改,当在包设置中设置特殊flag并且应用程序可调试,如果存在相关名称的文件,库可以自动从应用程序的dataDir加载,而不是从已安装的包中加载。
1.2 支持UE4
你可以依次通过Editor Preferences > General > Experimental找到这个选项。
另外,当在Android项目设置中启用Oculus设备时,你可以在Launch下拉菜单中找到这个选项。
注意,这个选项绕过了正常的Android APK版本逻辑。如果你的更改需要生成新APK,如Java更改或Android manifest更改,则需要临时禁用这个选项。
1.3 支持原生开发
1.3.1 要求
元数据需要添加到Android manifest中,从而允许应用程序从dataDir加载库:
meta-data android:name=”com.oculus.extlib” android:value=”true”
另外,安装的APK包必须是可调试。
这只是为了开发目的。Oculus Store将不接受启用这个flag的任何应用程序。
1.3.2 使用说明
如果你的APK包含一个名为libName的本地库,而你希望在不重新打包和重新安装整个APK的情况下对其进行修改,请参照以下步骤:
构建一个满足上述要求的APK并安装它编译代码和链接二进制文件可选地从二进制文件中剥离调试符号以减小文件大小(减少推送到设备的时间):llvm-strip –strip-debug -o lib-stripped.so lib.so停止运行应用程序:adb shell am force-stop [package_name]将lib推送到设备:adb push lib.so /sdcard/Oculus/Temp/lib.so复制到lib加载路径:adb shell run-as [package_name] cp /sdcard/Oculus/Temp/lib.so ./lib.so设置可执行flag:adb shell run-as [package_name] chmod +x ./lib.so启动应用程序
请注意,完成迭代后,在安装新的APK之前需要删除dataDir中的任何库,或者可以从dataDir加载旧库,而不是从包中加载。你可以通过首先使用adb uninstall[package\u name]卸载包或手动删除任何库,并通过adb shell run-as [package_name] rm *.so来自动完成。
1.3.3 结果
测试是使用UE4提供的VR Template进行。平均来说,在不需要时绕过APK版本可以节省129秒,在启动时间方面提高了2.95倍。
2. 对UE4代码编译的FASTBuild支持
Oculus使用FASTBuild添加了对分布式代码编译的支持。FASTBuild是一种开放源代码构建系统,可促进类似于Incredibuild、distcc或SN-DBS的分布式工作。当可以利用远程计算资源时,FASTBuild有助于大大加快大型代码的编译速度。
MSVC和clang工具链目前都支持使用FASTBuild进行分布式编译,所以你可以用来编译Unreal Editor和任何Oculus VR游戏项目。
2.1 要求
可通过端口31264进行远程工作的其他Windows计算机。Windows计算机应该在本地网络或通过VPN可用,因为FASTBuild的网络传输未加密,不应通过不安全的网络发送。
请注意,FASTBuild端口不应公开到公共网络,因为任何可以连接到它的人都可以运行任意命令,而这可能会带来安全性风险。
2.2 使用说明
下载FASTBuild并以%PATH%将二进制文件解压缩到文件夹中。在远程windows计算机运行FBuildWorker.exe. 系统可能会提示你允许它通过Windows防火墙。打开后,你可以调整idle设置和要使用的cpu内核数。如FASTBUILD Network Distribution文档所述,通过FASTBUILD_BROKERAGE_PATH环境变量设置worker discovery。如果网络共享不可用,可以改为在FASTBUILD_workers环境变量中硬编码remote worker主机名或IP地址,用分号分隔。如果两者都可用,在UE4中Incredibuild优于FASTBuild,所以你可能需要卸载前者才能使用FASTBuild。如果distribution不能正常工作,你可以使用FASTBuild的故障排除文档。如果需要,你可以使用另一个开源项目FASTBuild Dashboard来可视化版本。
支持平台的代码编译现在应该能够生成FASTBuild配置文件,并将任务分发到remote worker。
2.3 实现细节
这个实现基于开源项目Unreal_FASTBuild,并经修改以用于更新的MSVC工具链和支持clang。
现在会处理Unreal编译操作并确定要为FASTBuild生成的正确编译器工具链,并重写任何命令行参数以匹配FASTBuild要求。所有未编译的操作将在本地机器运行,如生成预编译的头文件,链接库,或生成最终的二进制文件。所述操作非常复杂,难以一般性支持转换为FASTBuild格式,并且无法从distribution或缓存中获益。由于FASTBuild不支持一个操作的多个输出,所以只有在生成过程完成后才能从FASTBuild报告文件中收集编译依赖项信息,这意味着如果在过程中取消生成,则不会保存相关结果。
另外,FASTBuild内置了对代码编译的缓存支持,如果所有输入都匹配完整的文件路径和chesksum,则可以从缓存中检索对象文件。请注意,由于需要预处理所有编译单元以收集输入文件,所以不建议启用FASTBuild编译,除非至少有一个remote worker已启用。
2.4 结果
测试在IntelXeon W-2135处理器(3.70Ghz 12线程)运行。计时包括所有预处理、预编译头文件生成、代码编译和链接。
原文链接:https://yivian.com/news/76204.html
相关推荐
- Pandoc安装、使用、快速上手(pandoc安装教程)
-
Pandoc安装、使用、快速上手Pandoc如果你需要将文档从一种格式转换成另一种格式,那么Pandoc是你的一把瑞士军刀,Pandoc可以将下列格式文档进行相互转换。Markdown、Microso...
- Pinocchio 安装教程|机器人学的必备库
-
视频讲解:Pinocchio安装教程|机器人学的必备库_哔哩哔哩_bilibilihttps://gepettoweb.laas.fr/doc/stack-of-tasks/pinocchio/ma...
- 常用linux命令:netstat(常用linux命令有多少个)
-
linuxnetstat命令用于显示网络状态,可用于列出系统上所有的网络套接字连接情况#显示所有的连接$netstat-aActiveInternetconnections(serv...
- 【收藏】Linux服务器常用巡检命令
-
在Linux服务器上进行常规巡检是确保服务器稳定性和安全性的重要措施之一。以下是一些常用的巡检命令和技巧:1.查看系统信息1.1系统信息显示命令:uname-a[root@linux100~]...
- 详解linux内核网络数据包发送在UDP协议层的处理与监控
-
udp_sendmsg这个函数定义在net/ipv4/udp.c,函数很长,分段来看。UDP插入UDPudp_sendmsgcorking是一项优化技术,允许内核将多个数据累积成一体的数据...
- Linux实例常用内核网络参数介绍与常见问题处理
-
Linux实例常用内核网络参数介绍与常见问题处理概述本文主要介绍常见的Linux内核参数及相关问题的处理方式。详细信息注意:Linux从4.12内核版本开始移除了tcp_tw_recycle配置。即移...
- Linux配置网络(rocky linux配置网络)
-
1、网卡名配置相关文件回到顶部网卡名命名规则文件:/etc/udev/rules.d/70-persistent-net.rules#PCIdevice0x8086:0x100f(e1000)...
- Linux安全之网络防火墙(linux防火墙配置基本步骤)
-
纸上得来终觉浅,绝知此事要躬行。iptables是运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的处理和转发。在大部分Linux发行版中,可以通...
- linux命令 - fuser、lsof、pidof学习
-
fuser可以借由文件(或文件系统)找出正在使用该文件的程序。有的时候我想要知道我的程序到底在这次启动过程中打开了多少文件,可以利用fuser来观察啦!举例来说,你如果卸载时发现系统通知:“...
- Linux使用中的一些问题及解决过程(记录1)
-
1.在Linux虚拟中安装dhcpv6后,Server发送的dhcpv6advertise报文中的udp校验和出错,导致用户不能获取IPv6地址修正方法:将该接口的校验关闭ethtool--of...
- 比 netstat 好用?Linux 网络状态工具 ss 详解
-
ss命令用于显示socket状态。他可以显示PACKETsockets,TCPsockets,UDPsockets,DCCPsockets,RAWsockets,Unixdomains...
- 七、网工必备“基础命令”:像查水电表一样轻松排查网络问题!
-
网络命令听起来高深,但其实它们就像你家里的“工具箱”——拧螺丝用螺丝刀,测电路用电笔,而排查网络问题,就用这些命令!今天我们就用生活中最常见的例子,带你轻松掌握ping、ipconfig、tracer...
- 为什么 Windows 病毒不影响 Linux 机器?
-
病毒是一种计算机程序。病毒不会影响Linux的原因和MicrosoftExcel不能在Linux上运行的原因是一样的:Linux不能运行Windows程序。你可以使用特殊的软件,...
- 别让Linux网络基础拖后腿!这些 lsof 骚操作你真的了解吗?
-
lsof是Linux系统管理中极为强大的工具,尤其在网络问题排查中堪称神器。以下从基础到进阶的用法解析,帮你彻底掌握网络相关的骚操作:一、基础必知:网络连接的本质Linux中一切皆文件,网络连...
- 别让Linux网络基础拖后腿!这些 netstat 骚操作你真的了解吗?
-
在Linux网络管理和故障排查中,netstat确实是必备的瑞士军刀。掌握这些进阶技巧能显著提升效率,尤其当服务器出现连接数爆满、端口冲突或异常流量时。以下乃是自实战之中所总结而成的深度操作指南:继续...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)