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

Unity Android命令行构建停滞报错:CommandLineDialog实例化错误

问题分析

从日志看,核心错误是GooglePlayServices.CommandLineDialog被错误地用new关键字实例化,而Unity要求ScriptableObject子类必须通过ScriptableObject.CreateInstance创建。更关键的是,命令行构建模式下没有UI环境,这个Dialog试图弹出窗口但无法渲染,直接导致构建进程停滞。

这个问题来自Google的unity-jar-resolver插件,大概率是插件版本过旧,或是命令行构建时未正确禁用UI交互逻辑。

解决方案

1. 升级Google Jar Resolver插件

这是最直接的修复方式:

  • 在Unity Package Manager中找到Google Play Services Resolver(或同类命名包),直接更新到最新版本。新版本已修复命令行构建时的Dialog实例化问题,且会自动适配无UI环境。
  • 如果是通过AssetStore导入的插件,重新下载最新版本覆盖旧文件。

2. 完善命令行构建参数

确保构建命令包含以下参数,彻底禁用UI相关功能:

Unity -batchmode -nographics -quit -executeMethod YourBuildScriptMethod -buildTarget Android
  • -batchmode:强制Unity进入批处理模式,禁用所有弹窗与交互
  • -nographics:禁用图形界面,适配无UI的服务器构建场景
  • -quit:构建完成后自动退出Unity

3. 手动强制依赖解析(升级后仍有问题时)

在项目Editor文件夹下添加预处理脚本,强制PlayServicesResolver在构建前完成依赖解析且不弹出对话框:

using UnityEditor;
using GooglePlayServices;

public class PreBuildResolver
{
    [MenuItem("Tools/Resolve Dependencies")]
    public static void ResolveDependencies()
    {
        PlayServicesResolver.ResolveSync(true, true); // 第二个参数设为true禁用UI弹窗
    }

    [InitializeOnLoadMethod]
    public static void AutoResolveOnLoad()
    {
        ResolveDependencies();
    }
}

脚本会在Unity启动时自动执行依赖解析,也可手动通过菜单栏触发。

4. 清除缓存重置项目

若以上方法无效,尝试清除缓存重置环境:

  • 删除项目根目录下的Library文件夹,让Unity重新导入资源
  • 删除Temp和Obj文件夹
  • 清除Gradle缓存(默认路径:~/.gradle/caches或C:\Users\<你的用户名>\.gradle\caches)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 19:47:36