无法从Unity命令行

时间:2017-06-27 20:51:35

标签: c# android batch-file unity3d

当我从命令行运行以下构建脚本时,build.log中没有错误,但也没有生成APK。偶尔我能够使用完全相同的命令获得构建而没有添加或更改文件(我已经使用Meld检查文件夹差异)。

如果我打开并关闭统一,我似乎更成功,但仍然无法保证它将使用命令行构建。关闭统一后,还会添加或更改文件。

通过GUI运行构建统一时,它总是有效。

Windows命令行:

START /WAIT "" "C:\Program Files\Unity\Editor\Unity.exe" -batchmode -quit -executeMethod BuildScript.BuildAndroid -logfile build.log

我也试过-nographics无济于事

BuildScript.cs:

public class EditorSetup {
  public static string AndroidSdkRoot {
    get { return EditorPrefs.GetString("AndroidSdkRoot"); }
    set { EditorPrefs.SetString("AndroidSdkRoot", value); }
  }

  public static string JdkRoot {
    get { return EditorPrefs.GetString("JdkPath"); }
    set { EditorPrefs.SetString("JdkPath", value); }
  }

  // This requires Unity 5.3 or later
  public static string AndroidNdkRoot {
    get { return EditorPrefs.GetString("AndroidNdkRoot"); }
    set { EditorPrefs.SetString("AndroidNdkRoot", value); }
  }
}

public class BuildScript {
    public static string AndroidTitle = "Android"

    [MenuItem("Custom Build/Build AndroidHeadsetClient")]
    public static void BuildAndroid()
    {
        EditorSetup.AndroidSdkRoot = Environment.GetEnvironmentVariable("ANDROID_SDK_HOME");
        EditorSetup.JdkRoot = Environment.GetEnvironmentVariable("JDK_HOME");
        Debug.Log("JDK_HOME: " + EditorSetup.JdkRoot.ToString());
        Debug.Log("ANDROID_SDK_HOME: " + EditorSetup.AndroidSdkRoot.ToString());
        BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
        buildPlayerOptions.scenes = new[] { "Assets/Scenes/Main/" + AndroidTitle + ".unity" };
        buildPlayerOptions.locationPathName = "MyArtifact.apk";
        buildPlayerOptions.target = BuildTarget.Android;
        buildPlayerOptions.options = BuildOptions.None;
        BuildPipeline.BuildPlayer(buildPlayerOptions);
    }
}

文件结构:

.
├── Assets
│   ├── Animations
│   │   ├── ...
│   ├── Animations.meta
│   ├── Animators
│   │   ├── ...
│   ├── Animators.meta
│   ├── AudioClips
│   │   ├── ...
│   ├── AudioClips.meta
│   ├── Data
│   │   ├── ...
│   ├── Data.meta
│   ├── Documents
│   │   ├── ...
│   ├── Documents.meta
│   ├── Editor
│   │   ├── BuildScript.cs
│   │   ├── BuildScript.cs.meta
│   │   ├── ...
└──...

Unity版本:5.6.1f1

非常感谢任何有关此问题的帮助。

1 个答案:

答案 0 :(得分:1)

[固定]

由于存在多个问题,可能会发生这种情况,而真正的问题是,Unity batchmode在控制台或日志文件中没有显示正确的错误日志。

我删除了-batchmode选项并运行了命令。现在,命令在Unity Editor打开时执行。它现在将显示任何错误,无论是在日志中还是作为弹出窗口。

我的问题:

在我的情况下,我忘了更改一些keystore参数,unity显示错误弹出窗口。