4.1 Android SDK/NDK 与 Turnkey:环境配对一次,受益整个项目

核心结论

UE 打 Android 包不是"装个 Android Studio 就行"——它需要与 UE 版本严格配对的 SDK/NDK/JDK 版本。配错了,报错千奇百怪。理解 Turnkey 机制后,配环境从"黑盒"变成"照表执行"。

版本配对表(先查这个)

组件 怎么查要求 获取
NDK UE 源码 AndroidPlatform.cs / 官方平台要求页 sdkmanager 单独装
SDK Build Tools 同上 Android Studio SDK Manager
JDK 跟随 UE(多为 OpenJDK) UE 安装时可能自带
Android Studio 管理用,非打包必需 官网

最重要的一步:上官方平台要求页(https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/android-development-requiremen-41d8 与 SDK/NDK 设置指南 https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/set-up-android-sdk-ndk-and-and-d806),按你的 UE 版本查 NDK 版本。不同 UE 小版本 NDK 要求会变(如 5.0 与 5.3 的推荐 NDK 不同)。

Turnkey:UE 的"一键配环境"

UE 内置 Turnkey 机制(-turnkey 命令行):它自动检测并下载当前引擎版本所需的 SDK/NDK,保证版本配对。

# 列出平台与已装环境
UnrealEditor.exe -turnkey -command=hotfix   # 详查文档,版本不同命令不同

我的评价:Turnkey 在干净系统上很好用;在已被反复装卸过 SDK 的机器上,可能被旧残留干扰。两手准备。

手动配 NDK(Turnkey 失败时的标准流程)

  1. Android Studio -> SDK Manager 装 SDK Platform + Build Tools(按 UE 版本要的 API 级别)。
  2. NDK 单独装:SDK Manager 的 SDK Tools 标签里的 NDK,或者下载后解压。
  3. 设 Edit -> Project Settings -> Android SDK 里的路径,或环境变量 ANDROID_HOME、NDKROOT。

NDK 路径里的空格(如 Program Files)是经典翻车点。放在无空格路径(如 D:/Android/ndk)。

常见坑与解法

坑 1:打包报"找不到 NDK 版本"

原因:UE 要的 NDK 版本与系统里装的版本不一致。

解法:按版本配对表装完全一致的 NDK;或用 Turnkey 自动装。

坑 2:SDK 更新后突然打不出包

原因:Android Studio 自动更新了 Build Tools,与 UE 期望版本不符。

解法:关掉 Android Studio 的自动更新;SDK 版本写入团队 Wiki,任何人升级前先在 CI 验证。

坑 3:打包时 Java 堆溢出(OutOfMemoryError)

原因:JVM 默认堆不够,大项目 dex 编译爆。

解法:设 JAVA_OPTS=-Xmx4096m(或更高),或 gradle 的 jvmargs。

坑 4:架构(ABI)配置错,装到某些机上闪退

解法:确认目标 ABI:arm64-v8a 是现代机标配;armeabi-v7a 覆盖老机;x86_64 主要为模拟器。上架 Google Play 的 AAB 由商店自动分发,不用自己切(见 0402)。

Environment as Code:团队级做法

把配好的 SDK 目录快照成版本化压缩包或 Docker 镜像,CI 机器直接拉取——这是彻底消除"我这能打你那不能"的办法。UE 项目里同时提交 Engine.ini/DeviceProfiles 中相关 SDK 配置。

相关节点速查

  • 平台要求:https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/android-development-requiremen-41d8
  • SDK/NDK 细节:https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/set-up-android-sdk-ndk-and-and-d806
  • 打包整体:https://www.wanxiangyundang.top/read/unreal-engine-5-8-docs/packaging-android-projects-in-ce41
  • 环境变量:ANDROID_HOME、NDKROOT、JAVA_OPTS

心得:我们团队曾经在每次新人入职时重配一次 Android 环境,平均卡一天半。后来做了"环境快照 + 一页 Wiki",新人 20 分钟跑通。环境问题不是技术问题,是知识管理问题。