【问题标题】:Can't generate Android APK from Unity command line无法从 Unity 命令行生成 Android APK
【发布时间】:2017-06-27 20:51:34
【问题描述】:

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

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

在通过 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

对于这个问题的任何帮助将不胜感激。

【问题讨论】:

  • 您说的是Build.cs,但您的脚本名称是BuildScript?真正的名字是什么?你能描述一下你的设置是什么吗?例如,如果将 BuildScript 放入自己的文件名中..EditorSetup 怎么样?您将这些脚本放在哪个文件夹中?我或许可以提供帮助,但需要更多信息。
  • 在上面添加了一个文件结构,如果您需要更多信息,请告诉我。我还修复了它实际上称为BuildScript.cs 的文件的名称
  • 设置没问题。 EditorSetup 怎么样?最好提及您的 Unity 版本
  • EditorSetup 类在 BuildScript.csBuildScript 类中。你想让我从统一本身获得特定设置吗?上面已添加 Unity 版本。
  • 不,没关系。我将尝试使用这些信息来复制它,并确定这是一个错误还是你的错。我今天有空的时候会这样做,所以请继续查看。

标签: c# android batch-file unity3d


【解决方案1】:

[固定]

这可能是由多个问题引起的,真正的问题是,Unity 批处理模式没有在控制台或日志文件中显示正确的错误日志。

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

我的问题:

在我的情况下,我忘记更改一些密钥库参数,unity 向我显示了一个错误弹出窗口。

【讨论】:

    猜你喜欢
    • 2017-12-15
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    相关资源
    最近更新 更多