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 失败时的标准流程)
- Android Studio -> SDK Manager 装 SDK Platform + Build Tools(按 UE 版本要的 API 级别)。
- NDK 单独装:SDK Manager 的 SDK Tools 标签里的 NDK,或者下载后解压。
- 设
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 分钟跑通。环境问题不是技术问题,是知识管理问题。
