UBT · PlatformExports
December 25, 2026About 3 min
UBT · PlatformExports
一. PlatformExports.cs 的定位与用途
在 Unreal Engine 的构建系统中,PlatformExports.cs(如 AndroidExports.cs、IOSExports.cs)文件的核心定位是充当一个通用接口层(Public Interface Layer),连接平台无关的自动化工具(UAT)和平台特定的构建实现逻辑(UBT Modules、SDK Tools)。
它们的主要用途包括:
- 接口暴露 (Interface Exposure):
将UBT中封装的平台相关功能(如 SDK 路径查找、工具链调用、打包逻辑)以public static方法的形式暴露给Unreal Automation Tool(UAT) 调用。 - 自动化桥梁 (Automation Bridge):
UAT(例如运行BuildCookRun脚本时)会调用这些接口来执行一系列标准化的构建步骤,例如:-
CreateDeploymentHandler:创建实际负责文件复制、资源打包、生成安装包(APK/IPA)的部署对象 ,比如 UEDeployAndroid。 -
GetUnrealArch:将不同CPU 架构信息(如"arm64-v8a“)转换为虚幻引擎的UnrealArch类型 。 -
StripSymbols:调用当前平台的工具链对二进制文件进行符号剥离,用于生成发布版本。
-
- SDK/工具链抽象 (SDK/Toolchain Abstraction):
隐藏特定平台 SDK 命令的复杂性(如 ADB 命令、Xcodebuild 命令),提供统一、简洁的 C# 方法供自动化脚本使用。
简而言之,PlatformExports.cs 定义了“如何”自动构建该平台,而不是“构建什么”(构建什么由 *.Target.cs 和 *.Build.cs 定义)。
二. 添加新平台支持时需要关注的信息
如果您需要添加或修改一个新的平台支持,需要关注以下几个关键点,通常需要实现或集成到您的 PlatformExports.cs 或相关联的平台模块中:
A. 核心集成点 (UBT/UAT Interface)
- SDK 定位与验证:
您的代码必须能够可靠地定位到目标平台所需的 SDK、NDK、编译器和必要工具的安装路径。需要实现逻辑来检查版本兼容性,并向用户提供明确的错误信息(例如,Android 要求特定版本的 NDK/SDK)。 - 构建配置映射 (Build Configuration Mapping):
确保标准的 UE 构建配置(如 Development、Shipping、Debug)能够正确映射到底层编译器的配置和标志(例如,是否启用优化、是否剥离符号)。 - **部署与打包逻辑 (Deployment ** **& ** Packaging):
实现如IDeployAndroid(或其他平台对应物)接口,负责将 Cook 好的资源、引擎二进制文件和第三方库组合成最终的可执行/安装文件(APK、AAB、IPA 等)。 - 远程构建支持 (Remote Build Support):
对于跨平台交叉编译场景(例如,Windows 主机构建 iOS 目标),需要实现与远程构建机器(如 Mac)通信的逻辑,包括文件同步、命令执行和日志回传。
B. 平台特定逻辑 (Platform Specifics)
- 架构支持 (Architecture Support):
定义支持的 CPU 架构(如 x86、ARM64)并实现GetUnrealArch等方法进行内部枚举转换。 - 代码签名与证书管理 (Code Signing):
您的构建逻辑必须集成平台特定的代码签名步骤,通常涉及管理证书和配置文件的路径(iOS 的 Provisioning Profiles 和 Certificates,Android 的 Keystore)。 - 设备交互接口 (Device Interaction):
提供基本的设备管理和部署命令(例如通过 ADB 安装 APK、运行应用、捕获日志)。