Unity3d Commandline Autobuild没有运行postbuild

时间:2013-12-12 20:19:16

标签: ios jenkins unity3d facebook-sdk-3.0

我正在为iOS构建并使用FacebookSDK。我想通过Jenkins实现自动化。现在当我在编辑器中“构建并运行”时,它正确地构建了xcode项目。但是当我通过命令行运行它时,postbuildprocess永远不会运行。我在网上找不到关于这个问题的任何内容。有人有主意吗?或者需要任何其他信息来提出理论?

以下是autobuild代码:

[MenuItem("Build/iOS")]
static void PerformiOSBuild ()
{
    EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTarget.iPhone);
    BuildPipeline.BuildPlayer(GetScenePaths(), "iOS",BuildTarget.iPhone,BuildOptions.None);
}

这是我的命令行args:

/Applications/Unity/Unity.app/Contents/MacOS/Unity -projectPath "/Users/USERNAME/Desktop/Work/PROJECTNAME/Unity/"  -executeMethod AutoBuilder.PerformiOSBuild -quit -batchmode

2 个答案:

答案 0 :(得分:1)

我通过手动调用Facebook的PostProcess来解决这个问题。这是我的构建脚本:

using System;
using UnityEngine;
using UnityEditor;
using UnityEditor.FacebookEditor;

class BuildScript
{
    static void PerformBuild ()
    {
        string[] scenes = { "Assets/monster_island.unity" };
        string buildPath = System.IO.Directory.GetCurrentDirectory() + "/iOS";
        BuildOptions opt = BuildOptions.None;
        BuildTarget target = BuildTarget.iPhone;

        // Run Xcode project build
        BuildPipeline.BuildPlayer(scenes, buildPath, target, opt);

        // Run Facebook's post-processing script
        XCodePostProcess.OnPostProcessBuild(target, buildPath);
    }
}

请记住,我是Unity的新手,所以如果这里有什么东西可以随意说出来。

答案 1 :(得分:1)

在Unity论坛上刚刚发现了这个问题和相同的问题,因此我将在此处粘贴的答案与此处相同,可以通过此link查看。

您好,很抱歉要恢复此旧帖子,但在2019年,它仍然是Google的热门链接之一。

刚才有同样的问题,@ Brentonb所说的仍然有效,今天在link for SwitchActiveBuildTarget中对此进行了记录,并指出:

  

注意:批量运行编辑器时,此方法不可用   模式。这是因为更改构建目标需要重新编译   给定目标的脚本代码,脚本执行时无法完成   代码正在执行(操作中,在编辑器中不是问题   只是推迟了,但是批处理模式将在   执行指定的脚本代码)。设置要使用的构建目标   在批处理模式下,请使用buildTarget命令行开关。

然后,我检查了here, in the Command line arguments page in the manual,并为CI构建过程的每种方法添加了-buildTarget Android-buildTarget iOS

现在,我的iOS PostBuild脚本也将以批处理模式执行。