xCode 8.x аварийно завершает работу с файлом GameScene.sks

Я скачал macOS Sierra 10.12 и установил ее на машину VMWare. Все работает хорошо, но в xCode, используя SpriteKit, всякий раз, когда я пытаюсь открыть файл GameScene.sks (чтобы поместить исходную точку (0, 0) внизу, как это было до xCode 8), программа немедленно вылетает.

Использование VMWare Pro 12; Пробовал как с xCode 8.1, так и с бета-версией 8.2, тот же сбой.

Я знаю, что есть много случаев, подобных моему, но меня просто раздражает, что у этого нет решения. Я нашел это в моем ОЧЕНЬ ГЛУБОКОМ поиске в Google, но это решение для меня это не решение, потому что VMware не позволяет использовать графический процессор для работы с виртуальной машиной (у меня Intel HD 4600 + GTX 960).

Я могу нормально открывать файлы action sks. Кажется, только GameScene.sks вызывает сбой, поэтому:

Есть способ это исправить? Если нет, могу ли я отредактировать файл GameScene.sks или просто поставить исходную точку внизу без xCode? Если нет, могу ли я загрузить предыдущую версию xCode без лицензии разработчика?

Ну, последнее, что я мог бы сделать, это сделать двойную загрузку здесь, на моем ПК, но я думаю, что это не так просто, как кажется.


person Lucas    schedule 01.12.2016    source источник
comment
в качестве примечания... Редактирование файлов .sks в редакторе сцен происходит медленно, с ошибками, проблематично и чревато прыжками с обруча даже на первоклассном компьютере Apple в хороший день. Я дизайнер и склонен к визуальному редактированию... но я делаю ВСЕ в коде с помощью SpriteKit... и я не одинок. Вот насколько плох редактор сцен. Apple должна была сделать отдельное приложение (вне Xocde) для редактирования сцен и частиц SceneKit, SpriteKit и их соотечественника GameplayKit. Связывание всего этого в лучшем случае нелепо.   -  person Confused    schedule 01.12.2016
comment
Да, это так... как пользователь iOs, я понял, что разработать его было легко и просто, но мои первые 10 часов были в поиске нерешенной проблемы, которая, похоже, возникла со времен xCode 6. Вы можете увидеть в Appstore, что МНОГИЕ люди даю 1 звезду этому xCode 8. Довольно плохо для первой попытки, но я постараюсь преодолеть это.   -  person Lucas    schedule 01.12.2016
comment
Редактор сцен определенно не так плох, как его изображает Confused. XCode использует только аппаратное обеспечение Mac, поэтому виртуальные машины и хакинтоши будут более подвержены сбоям. Найдите кого-нибудь с настоящим Mac, дайте ему свой проект и посмотрите, не вылетит ли он и у них.   -  person Knight0fDragon    schedule 01.12.2016
comment
Сделал это незадолго до прочтения вашего комментария. Попросил друга загрузить xCode 8.1 в магазине приложений, создать новый проект и открыть GameScenes.sks: Crash!   -  person Lucas    schedule 01.12.2016
comment
@Lucas Полностью согласен с Confused. Apple, борющаяся с другим оборудованием, иногда забывала обрабатывать ошибки, которые предупреждают пользователей не использовать 3D-графические процессоры с Xcode (сбой проекта может означать потерю строк кода ..), если у вас есть сбои SKS и другие HW, попробуйте запустить также Open Инструменты разработчика - Инструменты и вы можете увидеть другие ошибки (прозрачные инструменты..). Мой личный совет для вашего конкретного случая - делать все в коде, и если вам нужно работать с эмиттерами или ODT, скачайте XCode 7, переименуйте его в Xcode7.app и используйте только для этих SKS.   -  person Alessandro Ornano    schedule 02.12.2016
comment
@ Лукас, ты создал новый проект, и он потерпел крах? Это сейчас очень интересно, потому что у меня не вылетает.   -  person Knight0fDragon    schedule 02.12.2016
comment
@ Лукас, какая версия ОС?   -  person Knight0fDragon    schedule 02.12.2016
comment
@AlessandroOrnano, я не думаю, что вы можете «на законных основаниях» (что касается Apple) больше использовать сторонние графические процессоры. Единственная модель настольного компьютера, которая, как я знаю, все еще находится в производстве от Apple, — это iMac, который не позволяет обновляться, но я могу ошибаться, если кто-то знает что-то другое.   -  person Knight0fDragon    schedule 02.12.2016
comment
@ Лукас, я все еще на Mavericks, поэтому, если ваш друг тоже на Sierra, проблема может быть в этом.   -  person Knight0fDragon    schedule 02.12.2016
comment
@Alessandro, я попробую как можно скорее. Knight: Обе программы, которые я тестировал, были на Sierra... на форуме разработчиков было много жалоб на это. Многие с Сьеррой тоже. Да даже с новым проектом вылетает. Я попробую установить El Capitain, может что-то изменится. Если сделаю, то отредактирую здесь.   -  person Lucas    schedule 04.12.2016


Ответы (3)


Xcode 8:

Наконец-то я нашел решение этой проблемы! Вы должны перекодировать Xcode 8 и его компоненты, чтобы заставить его работать.

Некоторые из этих приложений помечены, поэтому они отказываются загружать библиотеки, не подписанные Apple. Веб-драйвер Nvidia не подписан Apple, поэтому он не загружается, что приводит к описанному вами поведению. (См. эту тему)

Я использую только графический процессор nVidia, и это вызвало проблему - по крайней мере, для меня. Выйдите из XCode и выполните эти команды в Терминале одну за другой:

sudo codesign -f -s - /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/MacOS/Instruments
sudo codesign -f -s - /Applications/Xcode.app/Contents/Applications/FileMerge.app/Contents/MacOS/FileMerge
sudo codesign -f -s - /Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/MacOS/Application\ Loader 
sudo codesign -f -s - /Applications/Xcode.app/Contents/Applications/Accessibility\ Inspector.app/Contents/MacOS/Accessibility\ Inspector 
sudo codesign -f -s - /Applications/Xcode.app/Contents/MacOS/Xcode 

Для выполнения последней команды мне понадобилось много времени, поэтому я завершил процесс, выйдя из Терминала. Тем не менее, это сработало, и в следующий раз, когда я запустил XCode, появилось всплывающее окно, например: Xcode хочет использовать вашу информацию, хранящуюся в вашей связке ключей. Я выбираю «Всегда разрешать» для каждого диалога. (в следующий раз, когда вы откроете XCode, эти диалоги не появятся)

Ведь я выбрал файл GameScene.sks в навигаторе проекта и XCode не завис.

С тех пор работает отлично! :)

Вы должны повторить шаги, описанные выше, если вы обновите XCode 8 до более новой версии Xcode 8! Сообщается, что этот метод не работает в бета-версии XCode 9, мы обновим этот пост, если он изменится.

Xcode 9:

Если у вас есть хакинтош, самый простой способ исправить эти ошибки nVidia — установить NVWebDriverLibValFix.kext. . Если вы используете Clover в качестве загрузчика, поместите загруженный файл kext в EFI/EFI/Clover/kexts/Other. Установка kext с помощью KextBeast также должна работать, но я предпочитаю использовать Clover для внедрения kext.

person balazs630    schedule 22.05.2017
comment
Это правильный ответ, сэр, поздравляю с его нахождением! - person Francis-Olivier Couture; 22.05.2017
comment
balazs630 -> ваше исправление отлично сработало для всех вещей, кроме превью Particle System (как в файлах sks, так и в отдельных файлах scnp). Ничего не появляется. У вас есть идеи, как решить эту проблему? - person Ryan James; 07.07.2017
comment
У меня есть файл частиц SpriteKit (Emitter) в одном из моих проектов, и он отлично работает с предварительным просмотром. Вы проверяли этот проект Xcode на другом Mac, работает ли предварительный просмотр? - person balazs630; 08.07.2017
comment
Да! Это сработало! Я имею в виду, что это не работает в xcode 9 beta 2, но работает в xcode 8! Ваху! Я не уверен, что это ошибка в xcode 9 или что-то в этом роде (поскольку это предварительная версия), но это работает в xcode 8. Спасибо, сэр! - person Ryan James; 10.07.2017
comment
Я пробовал это, но это не работает для меня. Затем я нашел сообщение на Reddit, в котором говорилось, что включение встроенной графики на материнской плате может исправить это. Так я и сделал, и теперь это работает. - person TonyGW; 10.12.2017

Я не могу помочь с вашим сбоем, но вы можете изменить точку привязки в коде, подобном этому...

GameScene.swift

override func viewDidLoad(){
    self.anchorPoint = CGPoint(0,0)
}
person TheValyreanGroup    schedule 01.12.2016
comment
По какой-то причине xCode говорит, что метод не переопределяет какой-либо метод из своего суперкласса. Код: self.anchorPoint = CGPoint(x: 0, y: 0) - person Lucas; 01.12.2016
comment
Полный код: class GameScene: SKScene { var Ground = SKSpriteNode() var Ghost = SKSpriteNode() override func viewDidLoad() { self.anchorPoint = CGPoint(x: 0, y: 0) } - person Lucas; 01.12.2016
comment
Извините, не используйте переопределение для viewDidLoad, это в представлении UIKit. Просто установите параметр anchorPoint где-нибудь в своем классе, прежде чем он вам понадобится. - person TheValyreanGroup; 01.12.2016
comment
используйте 1_ - person Knight0fDragon; 02.12.2016

Что сработало для меня (я столкнулся с проблемой после обновления macOS до Mojave и содержащегося в нем Xcode), так это отключить все плагины Xcode!

:-)

person Allan Krings    schedule 25.10.2018
comment
@Mojtaba Hosseini Я не устанавливал никаких плагинов, поэтому я в растерянности. - person George; 17.11.2018