Ошибка подписи кода Всякий раз, когда я пытаюсь заменить файлы запасов в новом приложении SceneKit
Итак, недавно был выпущен Xcode 8, и я все еще не уверен, что именно может вызвать эту проблему (может быть, это только тот факт, что это бета-версия Xcode или, возможно, что-то неправильно что-то неправильно).
Проблема в том, что я пытаюсь создать новое приложение SceneKit, и в настоящее время я запутался с файлами .scn.
Я создал файл .scn, "hero.scn" внутри "hero.scnassets", а также предоставил .png файл внутри папки hero.scnassets по имени "heroTexture.png"
Код, обычно предоставляемый Xcode 8.0 beta 1 для этого проекта в файле GameViewController.swift, был отредактирован следующим образом:
Оригинальный код:
...
let scene = SCNScene(named: "art.scnassets/ship.scn")!
...
let ship = scene.rootNode.childNode(withName: "ship", recursively: true)!
ship.run(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1)))
Отредактированный код:
...
let scene = SCNScene(named: "hero.scnassets/hero.scn")!
...
let hero = scene.rootNode.childNode(withName: "hero", recursively: true)!
hero.run(SCNAction.repeatForever(SCNAction.rotateBy(x: 0, y: 2, z: 0, duration: 1)))
Полученная ошибка:
.../Xapp.app: resource fork, finder information, or similar detritus not allowed
Command /usr/bin/codesign failed with exit code 1
Заключение вопроса:
Почему я получаю ошибку подписи, когда все, что я сделал, просто заменяет файлы?
Sidenote: я знаю, как заставить проблему подписи кода уйти, но это включает перезапуск всего проекта (что я не против). Однако проблема, с которой я сталкиваюсь, - это когда я меняю файлы, я получаю эту ошибку.
PS: Здесь файловая структура просто для удобства. ![FileStruct]()
Ответы
Ответ 1
Избавьтесь от этой ошибки сборки за три простых шага:
1) удалите самую последнюю папку, связанную с вашим приложением, в DerivedData (~/Library/Developer/Xcode/DerivedData)
2) в терминале, cd - в текущий проект dir
3) запустите
xattr -rc.
удалить все расширенные атрибуты (обычно связанные с файлами изображений, ранее отредактированными в Photoshop)
перестройте свое приложение!
Ответ 2
Ошибка из атрибутов внутри ваших файлов изображений.
Вот простая команда, чтобы найти все ваши png файлы и удалить их атрибуты. Запустите это в корневом каталоге проектов с терминала. Реконструкция, очистка и устранение проблем.
find . -type f -name '*.png' -exec xattr -c {} \;
Ответ 3
Я получил ошибку resource fork, finder information, or similar detritus not allowed
после установки версии разработки macOS, и в моем случае она была вызвана недействительными атрибутами в некоторых моих файлах.
Я исправил его, выполнив поиск атрибутов com.apple.FinderInfo
, установленных в моих файлах, таких как
ls [email protected] . > investigate.txt
Теперь откройте файл researchate.txt в своем любимом текстовом редакторе и выполните поиск com.apple.FinderInfo
и очистите атрибуты для всех файлов, имеющих этот атрибут. Вы можете сделать это с помощью
xattr -c <filename>
например. xattr -c iTunesArtwork.png
Как только я очистил все свои файлы, я смог снова подписать свое приложение.
Ответ 4
Исправлено! По-видимому, это была ошибка с новым Xcode. Что вам нужно сделать, это перезапустить OS X/macOS и очистить проект. После этого он должен работать!
Ответ 5
Я не смог удалить информацию о поиске, и перезагрузка не работала. Для меня (у меня установлена функция Sierra beta), потому что проект был в папке "Мои документы", которая синхронизируется с iCloud. Как только я сделал проект не в папке, синхронизированной с iCloud, он работал нормально, поэтому ошибка может быть связана с iCloud, а также с Xcode
Ответ 6
Это, похоже, устраняет проблему. Создайте папку .atlas(т.е. "MyImages.atlas" ), вне корневой папки проекта. Добавьте свои изображения в папку .atlas. Затем изнутри проекта "Добавить файлы в..." в папку .atlas(обратите внимание: не помещайте папку .atlas в папку art.scnasstes и убедитесь, что проект "очищен" перед восстановлением)
Ответ 7
Это изменение безопасности, которое было введено с iOS 10, macOS Sierra, watchOS 3 и tvOS 10.
Подписание кода больше не позволяет любому файлу в комплекте приложений иметь расширенный атрибут, содержащий ресурс fork или информацию Finder.
Чтобы узнать, какие файлы вызывают эту ошибку, запустите эту команду в терминале:
$xattr -lr
заменив путь к вашему фактическому набору приложений.
Вот пример этой команды в действии:
$xattr -lr Foo.app
/Applications/Foo.app: com.apple.FinderInfo:
00000000 00 00 00 00 00 00 00 00 10 00 00 00 00 00 00 |................ |
Вы также можете удалить все расширенные атрибуты из пакета приложений с помощью команды xattr:
$xattr -cr
Обратите внимание, что просмотр файлов в комплекте с командой Finder Show Package Contents может привести к добавлению информации Finder в эти файлы. В противном случае выполните аудит процесса сборки, чтобы узнать, где добавляются расширенные атрибуты.