下载并编译源码

官方文档在这里:UE-4.27UE-5.2

下载UE源码

绑定 Epic

为了下载 UE 的源码,我们必须先将 Github 和 Epic 账号进行绑定,进入虚幻官网,用 Epic 账号登陆后,即可进入账户控制板绑定 Github 账号。

授权后会收到一封 Github 的邮件,同意加入 EpicGames 组织即可完成 Github 和 Epic 账号的绑定。

绑定流程页面

下载源代码

进入虚幻引擎的仓库页面,可以看到截至更新为止共有69个分支,包括本文中将要下载的 5.2 、4.27等。

接下来是重点(敲黑板):

  1. 不要直接clone仓库!!!
  2. 不要直接下载某个分支!!!

对这两点解释一下:

首先是千万不要 clone ,因为总共有69个分支,几十个版本,而事实上我们只需要两个分支,完全不需要把整个仓库全都clone到本地,整个仓库clone下来有27G,而其中25G都是我们不会使用的分支存贮在 .git 文件夹中。

其次就是不要直接在源码界面进行下载,因为源码界面的分支未必是发行版本,比如 4.27 的分支就有 4.27-chaos4.27-plus4.27 三种,鬼知道改下哪个,有一种手机厂商卷后缀的美感(bushi)。

因此,我们应该点开旁边的 release ,这里有所有 Unreal Engine 的发行版本。笔者在下载时选择了 5.2.1 和 4.27.2 两个版本,因为 5.3 刚出没几天可能有bug,而5.2.1已经是长期的稳定版本;4.27.2则是 UE4 最成熟的版本。

等待下载完成,我们进入下一步——编译。

编译 UE 源码

在解压下载的源代码时,同样有两个重点

  1. 别把文件夹藏得太深
  2. 文件夹的名字不要太长,尽量精简,如UE4.27.2即可
  3. 路径尽量不要有中文字符

原因是UE源代码的文件夹同样很深,如果上述1、2两点没注意的话,很有可能会报 路径长度超过260个字符 的错误;中文路径的话,只能说尽可能避免吧,防止出一些奇怪的问题。

下载依赖

我们先对 UE4.27.2 的源码进行操作,首先安装依赖: Windows 系统运行源码文件夹下的 Setup.bat ,Linux 系统运行 Setup.sh , MacOS 系统运行 Setup.command (后续要运行的命令都会按照系统进行区分,本文将以windows作为实例,此后不再赘述)。

然后就会发现 … 报错了!

报错内容应该是这样的:

1
2
3
Checking dependencies...
Updating dependencies: 0% (0/64293)...
Failed to download 'http://cdn.unrealengine.com/dependencies/UnrealEngine-18298425/0107275f6001142a756fd31da3aef73c3cf3e703': 远程服务器返回错误: (403) 已禁止。 (WebException)

咋啥都没干就开始报错了呢?!

放心,这不是你的问题。

我们回到刚才 Github 上的 release 界面,会发现在 Unreal Engine 5.2 之前的发行版本,都有三个文件,除了两个压缩包外,还有一个 Commit.gitdeps.xml 文件,仔细看看标注了 IMPORTANT 的说明:

Per a previous announcement on GitHub Disruption. To remedy related download errors, a new Commit.gitdeps.xml file is attached to this release as an Asset. Please replace the existing Engine/Build/Commit.gitdeps.xml with the attached file.

也就是说,这个下载 bug 是官方知道的,我们要把 release 界面的 Commit.gitdeps.xml 文件下载下来,替换掉 Engine/Build/Commit.gitdeps.xml 处的同名文件即可解决。

再运行 Setup.bat ,下载正常进行,安心等待下载完成即可。

UE5.2.1 直接运行 Setup.bat 即可。

创建引擎项目文件

运行 GenerateProjectFiles.bat 来为引擎创建项目文件。这个过程应该不超过一分钟即可完成。

UE4.27.2 会生成一个 UE4.sln 文件;UE5.2.1 会生成一个 UE5.sln

编译构建

双击上一步生成了 .sln 文件,用 visual studio 打开(我一开始用的是 Rider ,但是反复失败 … 最后还是用上了 visual studio

将构建模式设置为 Development EditorWin64 ,然后右键这里的 UE5UE4 ,选择生成即可。

编译页面

时间方面,我编译 UE4.27.2 用了一小时多, UE5.2.1 用了四个多小时,电脑CPU是 i7-10875H ,16G 内存,全程 CPU 和 内存都是百分百占用。建议把电脑放那编译自己该干啥干啥。

编译一个多小时尚能接受,但是如果编译完一个小时发现最后有个报错导致编译失败😏😏😏

咳咳,我先提前说一下最有可能出现的几个bug:

  • 路径超过260个字符(谁让你不听我前面说的)
  • C4668 没有将”_NOEXCEPT_TYPES_SUPPORTED~定义为预处理宏,用0”替换”#if/#elif(大概是这个吧,不太记得了)
  • 错误 MSB3073 命令”..\..\Build\BatchFiles\Build.bat - Target = …”

后面两个原因是类似的,主要是 MSB3073 这个报错,我参考这篇博客后成功解决了,原因是 visual studio 没有下载相关内容。

打开 Visual Studio Installer (如果VS用的比较少的话,可以在开始菜单栏里搜索一下就能找到),点击修改-单个组件-搜索unreal,会发现没有安装 Unreal Engine 安装程序 ,把它勾选上然后下载,重新进行编译就可以了。

启动引擎

还是在解决方案资源管理器中右键刚才的 Engine-UE5 ,首先将它 设为启动项目 ,然后选择调试,启动为新实例,接下来就会看到 UE 启动的图标,等待着色器等内容初始化完成后,就进入了新建项目页面,关掉整个页面。

进入文件资源管理器,可以在 UE5.2.1\Engine\Binaries\Win64 文件夹下找到 UnrealEditor.exe ,如果是 UE4.27.2 则是 UE4Editor.exe ,以后就可以直接通过 .exe 文件来启动而不用依托于 visual studio 了。

顺带说一句,在 UE5.2.1 中,好像新建项目还是会自动启动 visual studio ,但是新建完就可以关了,并且打开已存在的项目就不会启动 visual studio 。

打包为Android应用程序

官方文档在这里:虚幻引擎5.2文档 如何为虚幻引擎开发环境设置Android SDK和NDK

打包 Android 花了整整一天半时间,并且只配置了 5.2.1 的相关内容,因此这里以 5.2.1 为例(印象当中 UE4 配置应该比 UE5 一些)

下载 Android Studio

根据官方文档,一定要使用 Android Studio 4.0 , 好像 4.0 和更高版本的不太一样(?)点击Android Studio 下载文件归档下载。

一定不要在 Jetbrains 下载!!!

除了版本问题外,从 Jetbrains 下载的 Android Studio 和从 Google 下载的默认路径不一样,而在配置虚幻的过程中,最好使用默认路径,因此,还是老老实实在 Google 下载exe吧。

对了,这里有个问题是,我点击下载链接但是 IDM 没有跳下载框,最后的解决办法是把下载链接复制到迅雷进行下载的。

安装 Android Studio

前几个选项点 Next 继续就行了,第一个重要的地方在选择安装路径

一定要选择默认安装路径!

一定要选择默认安装路径!

一定要选择默认安装路径!

不要想着后面去改文件,很麻烦,真的很麻烦。如果担心C盘空间不足,别着急,接着看下去,我会告诉你解决方法。

接下来继续 Next 完成安装即可~

首次打开 Android Studio

  1. 导入Android Studio设置(Import Android Studio Settings) 对话框显示时,选择 不导入设置(do not import settings),然后点击 确定(OK) 继续。

  2. 数据共享(Data Sharing) 对话框显示时,选择是否要将使用统计数据发送到Google。请根据自己的判断选择是否发送数据,无论是否都将进入下个步骤。

  3. 数据共享(Data Sharing) 对话框显示时,选择是否要将使用统计数据发送到Google。请根据自己的判断选择是否发送数据,无论是否都将进入下个步骤。
  4. 安装类型(Install Type) 对话框中,选择 标准(Standard 并点击 下一步(Next)
  5. 选择UI主题(Select UI Theme) 对话框中,选择所需主题并点击 下一步(Next)
  6. SDK组件设置(SDK Component Setup) 中保留默认勾选的组件,然后点击 下一步(Next)

注意这里的 SDK 安装路径,同样必须选择默认安装路径!!!

但是,Android Studio 对中文的支持很差。默认安装路径是: C:\Users\<Username>\AppData\Local\Android\Sdk,如果你的用户名中有中文,恭喜你中头彩了,无法选择该路径安装😵‍💫😵‍💫😵‍💫

默认路径中含有中文的解决办法

在这里要介绍一种文件:软链接

例如我们将一个软链接连接到文件夹后,这个软链接就完全等同于这个文件夹,在软链接中做的一切操作都会同步到链接到的文件夹,可以简单理解为快捷方式。

在 Windows 中,软链接通过 mklink 命令实现。

在开始菜单栏搜索命令提示符,并以管理员身份运行。

输入如下命令:mklink /d C:\Users\<any_english_name> C:\Users\<Username>

软链接

这里我们就成功建立了一个软链接,回到用户目录下会看到多了一个叫 acac 的文件夹(图标左下角有一个快捷方式的小图标),点开 acac 后我们会发现,最上面的路径仍然是 acac ,但显示的内容与 用户 文件夹下完全一致。并且在这个文件夹下做出的所有改动,实际上都是在 用户 文件夹下进行的改动。

软链接

因此,我们只需要新建好路径:C:\Users\acac\AppData\Local\Android\Sdk 并以这个路径安装 Sdk ,自然会同步到默认路径当中。这就完美解决了无法安装到含中文的默认路径的问题。

之前说过的 C盘清理,推荐这篇博客,核心仍然是使用软链接,将一些本来存储在C盘的数据迁移到其他磁盘。

选择安装的 SDK 的版本

进入 Android Studio 后,点击右下角 Configue - SDK Manager ,进入 SDK 安装页面。

在 SDK Platforms 选择 Android 10.0+ (R) (API Level 为 30 的版本)并删除其他版本

SDK Platforms

在 SDK Tools 点击右下角 Show Package Details

Android SDK Build-Tools 34 选择 30.0.3 版本并删除其他版本

Android SDK Build-Tools 34

NDK 选择 25.1 的版本

NDK

Android SDK Command-line Tools 选择最新版本

Android SDK Command-line Tools

然后点击 Apply 进行安装即可。

UE 配置

首先要明确的是,在这里的所有配置都以能成功打包出 .apk 文件为第一目标,至于 Google key 之类的东西等成功打包出 .apk 文件再配置。

点击项目设置,找到平台-Android-APK Packaging,一开始是红色的,点击一下配置就会变成绿色的。

往下拉找到 Minimum SDK Version (26=8.0.0, 27=8.1.0, 28=9, 29=10, 30=11, 31=12) 设置为 30 ,Target SDK Version (26=8.0.0, 27=8.1.0, 28=9, 29=10, 30=11, 31=12) 也设置为 30 。

然后点击 Android SDK 进行配置:

Android SDK 地址 :C:\Users\<Username>\AppData\Local\Android\Sdk

Android NDK 地址 :C:\Users\<Username>\AppData\Local\Android\Sdk\ndk\25.1.8937393 (这里路径一定要把版本号的文件夹也包含进去)

JAVA 地址:JAVA_HOME 的地址,记住文件夹路径最后一定是 jdk ** 而不是 jre ** (我的JAVA环境很久之前就配置过了,这里就不再赘述了)

SDK API Level :android-30

NDK API Level :android-21 (这里是因为我一开始配置了 21 的NDK,但是把NDK地址换成25之后这里没变似乎问题不大)

Android SDK Command-line Tools

打包

点击 平台-刷新平台状态。

然后点击 平台-Android-打包项目 即可开始打包。

如果运气好,那么或许能够打包成功。嗯,如果运气好😏

疑难问题解决

如果你的每一步都跟着我上面的步骤,那应该可以规避很多问题了,至少 SDK 在默认安装路径肯定没有问题,接下来,我会为一些bug提出可能的解决方案。

报错:

Platform Android is not a valid platform to build. Check that the SDK is installed properly.

如果是这个报错,那么你很有可能在本文这就能解决了,如果是其他报错可能就得另寻他处了orz

首先参考这里 , 因为有可能是 dotnet 的问题,进入微软下载 .NET Core 3.1 ,下载安装完成后再 cmd 运行 dotnet --version 如果出现了对应版本号则运行成功。

另一个问题在于,单独运行 Engine\Extras\Android\SetupAndroid.bat 可以正常运行,但是在打包的时候就会报错,这可能是因为运行该程序时将 SDK、NDK等添加到了用户变量中,而在打包过程中,则会调用环境变量。

SetupAndroid.bat

因此,我们进入设置-系统信息-高级系统设置-环境变量,将用户变量中和 SDK 、 NDK 相关的都复制到系统变量中,注意用户变量中有两个 SDK 、 NDK 相关的在 PATH 变量中,也要复制到系统变量的 PATH 变量中。

还有 JAVA_HOME 也要添加到系统变量当中。

再回到 UE5 ,点击 平台-Android-打包项目 等待一个小时后应该可以打包成功。

签名配置

将目标文件夹中的 .apk 文件发送到手机并安装运行,不出意外的话又要出意外了:

运行报错

大概就是签名有问题之类的。这里不太会有问题,我就偷个懒不写了,教程在这安卓打包全过程

配置完后再打包,发送到手机安装,Perfect!

运行成功

虚幻,启动!

版本管理

作为老程序员,版本管理肯定还是选择 git ,但是 UE5 内置的那个版本管理我搞了半天没弄明白,干脆自己搞。

打开 Github 新建仓库,在 .gitignore template 中选择 Unreal Engine 可以排除掉大量不必要的文件(经过上面一堆操作,我现在的项目文件夹大概 33G ,而上传到 Github 则之上传了 1G)。

用 Github Desktop 把新建的仓库 clone 到本地一个随意的文件夹中,然后把 .git.gitignoreREADME.md 文件剪切到项目文件夹中,然后用 Github Desktop 识别一下仓库,就可以进行 commitpush 了。