从命令行运行时,Unity PostProcess Build脚本失败

时间:2018-12-25 06:58:57

标签: ios unity3d build

我正在尝试从针对iOS的命令行构建我的项目。 当我从编辑器构建此文件时,一切正常!我有一个使用的PostProcess构建脚本。

当我尝试使用以下命令构建命令行时: /Applications/Unity/Unity.app/Contents/MacOS/Unity -quit -batchmode -executeMethod BuildScript.BuildIOS -nographics -buildTarget iOS

我从PostProcess构建脚本中收到一条错误消息: 资产/编辑器/MyBuildPostprocessor.cs(9,23):错误CS0234:类型或名称空间名称Xcode' does not exist in the namespace UnityEditor.iOS'。您是否缺少程序集参考?

产生错误的行是一个简单的using子句:

using UnityEditor.iOS.Xcode;

因此,似乎出于某种原因,命令行构建机制无法识别UnityEditor.iOS.Xcode程序集,并且我的PostProcess构建脚本无法运行。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是一个已知情况,即iOS项目是在Unity中手动构建的,没有错误,并且在构建服务器(Unity云,Jenkins,TeamCity等)上构建失败。我认为您的情况与此相似。因为如果您查看构建Unity应用程序的构建服务器过程,则会发现它还使用命令行命令

  

/Applications/Unity/Unity.app/Contents/MacOS/Unity -quit -batchmode -executeMethod BuildScript.BuildIOS -nographics -buildTarget iOS

对于构建服务器问题,解决方案是将所有后处理脚本置于#if UNITY_IOS条件下。而且您可能误解了所得到的错误。 Unity表示,在尝试将后处理脚本包含在构建中时,它不理解XCode命名空间。当然,Unity不能包含XCode名称空间,因为它仅在Unity Editor中可用。

因此,甚至在使用section和#if UNITY_IOS在源代码的最末尾之前,请尝试在后处理源的最开始处添加#endif。在这种情况下,Unity不会在构建阶段编译后处理脚本,但是会在XCode项目创建后调用后处理脚本。

不幸的是,我找不到任何信息,说明手动和命令行构建过程为何不同。