【问题标题】:Unity PostProcess Build script fails when running from command line从命令行运行时,Unity PostProcess Build 脚本失败
【发布时间】:2019-05-24 00:12:50
【问题描述】:

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

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

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

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

using UnityEditor.iOS.Xcode;

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

有什么想法吗?

【问题讨论】:

    标签: ios unity3d build


    【解决方案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 编辑器中可用。

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

    很遗憾,我找不到任何关于手动和命令行构建过程不同的信息。

    【讨论】:

    • 感谢@vmchar 的回答。我的后期处理脚本已经包含了一个#if UNITY_IOS 条件,所以不是这样的..
    • 我发现参数-buildTarget iOS是让Unity真正定义UNITY_IOS的唯一方法。没有它,定义就不存在,我们的构建将因此而失败。
    猜你喜欢
    • 2021-03-10
    • 2011-10-03
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2016-12-11
    • 1970-01-01
    相关资源
    最近更新 更多