本手册旨在系统地指导如何在UE5.6中添加 OpenHarmony 平台的支持。整个流程遵循Epic Games推荐的平台扩展架构,并特别针对OpenHarmony的Hvigor构建系统和原生ArkNative API进行定制。
阶段一:环境准备与架构搭建
此阶段旨在建立必要的基础开发环境和源代码管理。
1.1 获取UE5.6的源码
从内部引擎源码仓库中获取UE5.6的源码:
P4 Server: <your-perforce-server>:1666
本手册旨在系统地指导如何在UE5.6中添加 OpenHarmony 平台的支持。整个流程遵循Epic Games推荐的平台扩展架构,并特别针对OpenHarmony的Hvigor构建系统和原生ArkNative API进行定制。
此阶段旨在建立必要的基础开发环境和源代码管理。
1.1 获取UE5.6的源码
从内部引擎源码仓库中获取UE5.6的源码:
P4 Server: <your-perforce-server>:1666
Unreal Build Tool (UBT) 是一个定制化的 C# 命令行工具,负责管理虚幻引擎源代码在不同配置和平台下的 C++ 编译过程。
其核心价值在于将平台差异抽象化。它为上层工具(UAT)提供标准接口,隐藏了底层 SDK、复杂的编译标志以及不同平台工具链(ToolChain)的实现细节。
主要作用包括:
.build.cs 文件,确定正确的编译顺序和依赖关系。MSVC、Clang)和链接器执行实际的编译工作。.sln 和 .vcxproj 文件)所需的项目配置。在 UBT 构建平台配置中,通常要实现五个功能模块,UEBuildPlatform是其中的核心。
| 模块类名 | 定位 | 核心职责 |
|---|---|---|
UnrealTargetPlatform |
平台唯一标识符 | 使用 partial struct 模拟类型安全的枚举,提供全局唯一的平台 ID。 |
TargetRules |
编译参数配置 | 存在于项目的 .Target.cs 文件中, 定义构建游戏客户端、服务器或编辑器所需的高级设置。 |
UnrealArchitectureConfig |
平台架构配置 | 确定当前平台构建时支持哪些CPU架构。 |
UEBuildPlatform |
平台构建逻辑 | 负责管理 SDK 检测、工具链路径和架构支持等支持。 |
UEBuildPlatformFactory |
动态加载与注册 | 负责在 UBT 启动时实例化对应的 UEBuildPlatform 类并进行注册。 |
当我们需要为某个平台实现它的PlatformSDK时,我们需要先了解UEBuildPlatformSDK。
UEBuildPlatformSDK 在 Unreal Build Tool (UBT) 架构中充当平台开发工具包(SDK)配置管理器的角色。它的核心功能是管理特定平台的 SDK、NDK 和工具链的安装路径、版本信息以及环境配置。它负责定位系统上的开发工具。
该模块的主要用途包括:
PlatformToolChain 是 UBT 架构的核心组件,负责管理特定目标平台的底层编译器、链接器以及其他构建工具的交互。
它的主要职责是衔接(或对接)通用的 C++ 模块定义(由 .Build.cs 和 .Target.cs 描述)与特定硬件架构和操作系统所需的实际编译器命令之间的逻辑。
简单来说,UBT 决定构建什么,而 PlatformToolChain 决定如何使用正确的工具去构建。
PlatformProjectGenerator 在 Unreal Engine 构建系统中的定位是连接 UBT 内部数据模型与外部集成开发环境(IDE)或构建系统的桥梁。
其核心作用是:在运行 GenerateProjectFiles 命令时,根据不同平台的需求,定制化生成的项目文件(如 .vcxproj、Makefile、.xcfilelist 等),确保开发者能在目标开发环境中正确地配置、编译和调试特定平台的代码。
在 Unreal Engine 的构建系统中,PlatformExports.cs(如 AndroidExports.cs、IOSExports.cs)文件的核心定位是充当一个通用接口层(Public Interface Layer),连接平台无关的自动化工具(UAT)和平台特定的构建实现逻辑(UBT Modules、SDK Tools)。
它们的主要用途包括:
UnrealArch:UnrealArch 是一个枚举类型(Enum-like Class), 代表构建平台的一个特定硬件 CPU 架构(例如 Arm64、x64)。
AndroidPlatform.Automation.cs)会将其内部识别的架构字符串映射到这个标准类型。UEDeployPlatform.cs 在 Unreal Engine 构建系统(Unreal Build Tool,UBT)中至关重要,它扮演了连接 UBT 核心构建逻辑与目标平台原生打包工具之间的关键桥梁角色。
主要功能:
APK/AAB (Android)、IPA (iOS)、HAP/APP (HarmonyOS/Apple) 或标准的桌面安装程序。PrepTargetForDeployment 等方法,为开发者提供快速迭代的能力,支持编辑器直接启动和调试所需的临时包准备工作。Unreal Automation Tool(UAT) 和虚幻编辑器调用,例如 PrepForUATPackageOrDeploy 方法,以自动化触发完整的构建、打包和部署流程。Unreal Automation Tool (UAT) 是虚幻引擎中基于 C# 开发的核心自动化脚本框架。它作为引擎工作流的统一调度中心,将原本零散的流程整合为标准化的流水线,涵盖了从代码编译到最终交付的全生命周期管理。
核心功能与作用:
BuildCommand 类,灵活扩展特定项目的自动化逻辑(如自动上传 CDN、同步符号表等)。