无法从 Unity 命令行生成 Android APK

Cru*_*234 5 c# android batch-file unity-game-engine

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

如果我打开和关闭 unity,我似乎会更成功,但仍然不能保证它会使用命令行构建。关闭 unity 后也有添加或更改的文件。

通过 GUI 统一运行构建时,它始终有效。

Windows 命令行:

START /WAIT "" "C:\Program Files\Unity\Editor\Unity.exe" -batchmode -quit -executeMethod BuildScript.BuildAndroid -logfile build.log
Run Code Online (Sandbox Code Playgroud)

我也试过-nographics无济于事

构建脚本.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);
    }
}
Run Code Online (Sandbox Code Playgroud)

文件结构:

.
??? Assets
?   ??? Animations
?   ?   ??? ...
?   ??? Animations.meta
?   ??? Animators
?   ?   ??? ...
?   ??? Animators.meta
?   ??? AudioClips
?   ?   ??? ...
?   ??? AudioClips.meta
?   ??? Data
?   ?   ??? ...
?   ??? Data.meta
?   ??? Documents
?   ?   ??? ...
?   ??? Documents.meta
?   ??? Editor
?   ?   ??? BuildScript.cs
?   ?   ??? BuildScript.cs.meta
?   ?   ??? ...
???...
Run Code Online (Sandbox Code Playgroud)

统一版本:5.6.1f1

对此问题的任何帮助将不胜感激。

小智 2

[固定的]

发生这种情况可能是由于多个问题,真正的问题是,Unity 批处理模式不会在控制台或日志文件中显示正确的错误日志。

我删除了 -batchmode 选项并运行了该命令。现在,在打开 Unity 编辑器的情况下执行该命令。现在它将在日志中或弹出窗口中显示所有错误。

我的问题:

就我而言,我忘记更改一些密钥库参数,并且 Unity 显示了一个错误弹出窗口。