You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity命令行构建Android Player失败:Android NDK未找到

问题

我们有多台运行Windows 11、搭载Unity 2022.3.54f1的构建机用于Unity项目构建,其中一台新部署的机器在执行命令行构建Android Player时,始终因Android NDK未找到而失败。该机器在Unity编辑器内构建正常,且相同配置在其他构建机上可正常运行。

构建命令

C:\Program Files\Unity\Hub\Editor\2022.3.54f1\Editor\Unity.exe -batchmode -projectPath ./ -buildTarget Android -executeMethod GameBuilder.PerformAndroidBuild -logFile - -quit 

构建脚本(已脱敏)

public static void PerformAndroidBuild()
{
    BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();

    // 添加所有场景
    buildPlayerOptions.scenes = new string[EditorBuildSettings.scenes.Length];
    for (int i = 0; i < EditorBuildSettings.scenes.Length; i++)
        buildPlayerOptions.scenes[i] = EditorBuildSettings.scenes[i].path;

    buildPlayerOptions.locationPathName = $"Builds/Android/BoV-{Application.version}.apk";
    buildPlayerOptions.target = BuildTarget.Android;
    buildPlayerOptions.options = BuildOptions.None;

    string keystorePass = Environment.GetEnvironmentVariable("KEYSTORE_PASS");
    string keyaliasPass = Environment.GetEnvironmentVariable("KEYALIAS_PASS");

    // 设置签名凭据
    PlayerSettings.Android.keystoreName = "redacted";
    PlayerSettings.Android.keystorePass = keystorePass;
    PlayerSettings.Android.keyaliasName = "redacted";
    PlayerSettings.Android.keyaliasPass = keyaliasPass;

    BuildReport report = BuildPipeline.BuildPlayer(buildPlayerOptions);
    BuildSummary summary = report.summary;

    if (summary.result == BuildResult.Succeeded)
        Debug.Log("Build succeeded: " + summary.totalSize + " bytes");
    else if (summary.result == BuildResult.Failed)
        Debug.Log("Build failed");
}

错误日志

10:12:05   Android PostProcess task "Detecting Android SDK" took 2123.1438 ms
10:12:05   DisplayProgressbar: Detect Android NDK
10:12:05   Uploading Crash Report
10:12:05   UnityException: Android NDK not found
10:12:05   Android NDK not found or invalid. Please, fix it in Edit / Unity -> Preferences -> External Tools
10:12:05   UnityEditor.BuildPipeline:BuildPlayerInternalNoCheck(String[], String, String, BuildTargetGroup, BuildTarget, Int32, BuildOptions, String[], Boolean)
10:12:05   UnityEditor.BuildPipeline:BuildPlayerInternal(String[], String, String, BuildTargetGroup, BuildTarget, Int32, BuildOptions, String[])
10:12:05   UnityEditor.BuildPipeline:BuildPlayer(String[], String, String, BuildTargetGroup, BuildTarget, Int32, BuildOptions, String[])
10:12:05   UnityEditor.BuildPipeline:BuildPlayer(BuildPlayerOptions)
10:12:05   GameBuilder:PerformAndroidBuild(AppStore) (at Assets\Editor\GameBuilder.cs:69)
10:12:05   GameBuilder:PerformAndroidGooglePlayBuild() (at Assets\Editor\GameBuilder.cs:13)

按照错误提示进入Preferences -> External Tools,未发现NDK相关警告。

已尝试方案

  • 完全重装Windows和Unity
  • 从正常机器复制NDK目录(Editor\Data\PlaybackEngines\AndroidPlayer\NDK)
  • 通过Android Studio安装NDK
  • 从Android Developers官网下载NDK
  • 赋予所有用户Editor和NDK目录的完全权限
  • 设置EditorPrefs键指定NDK路径

请问我们还遗漏了什么?


排查建议

以下是几个可能遗漏的排查方向:

  1. 命令行执行的用户权限差异
    编辑器内构建用的是当前登录用户,而命令行构建可能是用服务账户(比如CI/CD的运行账户)执行的,这个账户可能没有读取Unity配置文件的权限,或者Unity对该账户的External Tools配置未正确初始化。可以尝试用登录用户手动打开命令提示符执行构建命令,看是否能成功。

  2. 环境变量未正确设置
    检查系统或用户环境变量中是否存在ANDROID_NDK_ROOT或NDK_ROOT,Unity在命令行模式下可能会优先读取这些环境变量,而非编辑器内保存的配置。如果正常机器有这些变量,新机器需要同步设置,确保指向正确的NDK版本路径。

  3. Unity Hub的配置同步问题
    确认新机器的Unity Hub是否登录了和正常机器相同的账户,是否开启了配置同步功能。如果配置同步未开启,编辑器内的External Tools设置不会被命令行模式读取,需要手动在Hub中为该Unity版本指定NDK路径。

  4. NDK版本兼容性
    确认复制或下载的NDK版本是否和Unity 2022.3.54f1官方要求的版本完全一致(Unity 2022.3推荐的NDK版本是r23b)。如果版本过高或过低,命令行模式下可能会出现检测失败,而编辑器内有兼容处理。

  5. 命令行参数补全
    尝试在命令行中添加-buildTargetGroup Android参数,有些情况下Unity命令行需要明确指定目标组才能正确加载对应平台的工具配置,原命令只指定-buildTarget Android可能不够。

  6. 项目本地配置覆盖
    检查项目目录下的Library文件夹或ProjectSettings/ProjectSettings.asset中是否有NDK路径的本地配置,可能正常机器的项目配置有指定,而新机器拉取的项目未同步该配置。可以删除Library文件夹后重新执行命令行构建,让Unity重新生成配置。

  7. 安全软件拦截
    新机器的杀毒软件或Windows Defender可能拦截了Unity命令行进程读取NDK目录的操作,暂时禁用杀毒软件或添加Unity编辑器及NDK目录到白名单,测试是否能解决问题。


内容的提问来源于stack exchange,提问作者Sofia Lindgren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 19:37:07