当我从命令行运行以下构建脚本时,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
非常感谢任何有关此问题的帮助。
答案 0 :(得分:1)
[固定]
由于存在多个问题,可能会发生这种情况,而真正的问题是,Unity batchmode在控制台或日志文件中没有显示正确的错误日志。
我删除了-batchmode选项并运行了命令。现在,命令在Unity Editor打开时执行。它现在将显示任何错误,无论是在日志中还是作为弹出窗口。
我的问题:
在我的情况下,我忘了更改一些keystore参数,unity显示错误弹出窗口。