UE C++(一):源代码编译及安卓打包

584 阅读6分钟

下载源代码

注册Github账户并且关联Epic

GitHub上的虚幻引擎 - Unreal Engine

有时候打开Epic账户网页后点不动里面的按钮,需要架梯子或者更换浏览器。

下载虚幻引擎源代码 | 虚幻引擎 5.5 文档 | Epic Developer Community | Epic Developer Community (epicgames.com)

如果想用git,就直接克隆,不过由于git存储的版本信息较多,.git文件夹也会有好几个G。不需要关注源码更新的话下载zip就好。

配置VS

我这里下载了UE5,对应安装了VS2022。 在VS Installer安装“使用C++的游戏开发”这个组件,

image.png

【后面报错可以回来看这步】其中单个组件的最后一个MSVC v143……本来默认是最新版本,但编译会出现“……ShaderCompiler……”的报错,并提示安装更老一点的版本,所以我选了这个版本。

image.png

image.png

编译源代码

编译会产生约两百G的文件,一定要注意磁盘空间。

打开源代码文件夹,

  • 运行 Setup.bat:这样将下载引擎的二进制内容和先决程序,并设置虚幻文件关联。这步也会消耗几十G的流量下载,需要时间比较长。后续检出只需要下载增量部分,速度将会大幅提高。
  • 运行 GenerateProjectFiles.bat来为引擎创建项目文件。这时候sln文件就会出现。
  • 双击 UE5.sln 文件以将项目加载到Visual Studio中。将你的解决方案配置设置为 开发编辑器,将解决方案平台设置为 Win64,然后右键单击 UE 目标并选择 构建。大概需要10-40分钟完成编译(实际上花了2~4小时),具体取决于系统规格。

VS:生成-配置管理-选择Development Editor和x64。

添加工具

microsoft/vc-ue-extensions:用于在 Visual Studio 和 Unreal Engine 之间集成的组件。 (github.com)

据说是可以查看UE在VS中的状态,很少用,待考究。文档中提到要编译插件,要用到MSBuild命令,系统识别不了这个命令,估计要花时间了解和配置,暂放。但是克隆下来之后就可以识别了。

什么是MSbuild 理解UnrealBuildTool - 知乎 (zhihu.com)

编译完成

编译好UE源码后,直接运行VS,会弹出正常的项目管理器。可以新建项目,打开项目。

新建C++项目

运行VS,打开UE的项目管理器,新建C++项目。 用VS打开项目,里面也包括了引擎的源码。

db3983b36ffd53d9e0a57b522e000519.png

错误集锦

shadercomplier

要查看VS的输出窗口的编译log来看具体问题出现在哪里。我遇到的基本是安装组件的问题,除了上文提到的MSVC版本,还可以同样搜索“单个组件”的Unreal Engine,添加Unreal Engine 安装程序来尝试。

虚拟内存不够

image.png 为了给C盘扩容我把虚拟内存关了(为了编译下载了很多东西C盘真的会炸),会导致内存(16G)不够,会提示“等待内存压力减小而几秒延迟执行”之类,等到n个指令排队后VS乃至电脑系统崩溃,会出现吓人的景象。

  • 什么是分页文件:Windows 10中的分页文件是什么-百度经验 (baidu.com) 当RAM不足时,开始数据开始传送到分页文件。分页文件(也称为交换文件)是硬盘驱动器上的文件。当您的RAM已满时,Windows会将一些多余的数据移到页面文件中。这样,页面文件就可以用作虚拟内存的一种,从而可以在硬盘驱动器和RAM之间进行一些数据交换。
  • 虚拟内存最好设置在物理内存的1.5~3倍区间内。最小1.5,最大3倍。

原理探讨

  • 为什么要编译?
  • 编译之后多了几百G,为什么?

从源码剖析虚幻引擎编译原理 | Roc Ying (yinpengd.github.io)

UE 项目的编译流程 | 虚幻社区知识库 (ue5wiki.com)

安卓打包

我是按照这个视频来操作的 b站打包教学视频

文档可能有些偏旧,细节可以回来阅读一下。安卓项目设置 | 虚幻引擎 4.27 文档 | Epic Developer Community | Epic Developer Community (epicgames.com)

安卓环境配置

  1. Java 环境。cmdjava -version看看之前是否安装过,在命令行搜索where java获得安装路径。我这里安装的是Java 17.
  2. Android Studio,开发app的软件;
  3. 在AS里面,有个SDKManager,根据视频操作添加所需的SDK/NDK。

⚠注意⚠AS和SDK最好安装在默认路径上,否则UE识别不了【大坑!】

这个目录的文件会告诉UE如何找到AS和SDK。

image.png

  1. 在UE项目设置-平台-AndroidSDK设置路径。
  2. UE项目的其它设置(跟视频走)。

image.png

  1. 在UE的平台-打包项目,可以查看是否配置完成。我遇到的主要问题是,即使填好了几个路径,UE仍然无法识别。这是因为上文提到的bat文件会查找AS和SDK的位置,而且只会在默认路径上查找Android packaging problem: The SDK for Android is not installed properly. - Platform & Builds / Mobile - Epic Developer Community Forums (unrealengine.com)

为了让它识别到,要么更改环境变量,要么建立软链接【下文有解决方案】。

image.png

不能安装在默认路径的情况

  • AS若不安装在默认路径:UE会提示Android Studio is not installed.

Unreal 5 Android Studio路径配置问题 Android Studio not installed,_ue5 the sdk for android is not installed properly,-CSDN博客

STUDIO_PATH="$HOME/android-studio"
if [ ! -d "$STUDIO_PATH" ]; then
	echo "Android Studio not installed, please download Android Studio 3.5.3 from https://developer.android.com/studio"
	echo "Please download, extract and move to $HOME/android-studio"
	${PAUSE}
	exit 1
fi

原因是sh文件写死了AS安装路径,我尝试直接把路径替换成我自己的,没有效果。Windows不知道怎么建立软连接,遂放弃,卸载AS再重新安装到默认路径。

  • SDK没有安装在默认路径。把默认路径下的SDK拷贝到新位置等进行一番操作后,还要更改环境变量。

解决虚幻引擎 SetupAndroid.bat运行报错:Unable to locate local Android SDK location. Did you run Android Studio?-CSDN博客

  • 处理完位置的问题,需要点击bat文件更新一下,这样UE才能识别。

设置签名

项目发布签名 | 虚幻引擎 4.27 文档 | Epic Developer Community | Epic Developer Community (epicgames.com)

下载Gradle

Gradle Distributions

下载很慢,有时候浏览器甚至无法正常下载【无法下载,需要授权】,换个时间下载或者去镜像源网站下载就好了。

打包

折腾了超级久,打包第一次会出错,配置好再打包一次就成功了。

image.png

在手机上运行

  • 自己的手机打开开发者模式;
  • 连接数据线,点击运行第一个bat文件,就能下载调试了。

image.png