Сценарий сборки Unity PostProcess не работает при запуске из командной строки - PullRequest
0 голосов
/ 25 декабря 2018

Я пытаюсь построить свой проект из командной строки для 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 UnityEditor.iOS.Xcode;

Так что, похоже, по какой-то причине механизм построения командной строкине распознает сборку UnityEditor.iOS.Xcode, и мой скрипт сборки PostProcess не может быть запущен.

Есть идеи?

1 Ответ

0 голосов
/ 25 декабря 2018

Это известный случай, когда проект iOS создается вручную в Unity без ошибок и не может быть собран на сервере сборки (Unity cloud, 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.

К сожалению, я не смог найти никакой информации, почему руководство и командапроцессы построения линий различаются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...