我正在为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
答案 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脚本也将以批处理模式执行。