Ошибка знака кода в macOS High Sierra Xcode - недопустимая ветвь ресурса, информация об Finder или подобный детрит не допускаются


265

Уже пробовал: ошибка знака кода на macOS Sierra, Xcode 8

Пожалуйста, смотрите изображение, показывающее ошибку введите описание изображения здесь

CodeSign /Users/gururajtallur/Library/Developer/Xcode/DerivedData/Flow-bkqjkvtmvjovpyepfjeyqmjpintj/Build/Products/Debug-iphoneos/Super\ Flow\ Flip.app
    cd "/Volumes/Development/Project/Top Best Games/19. Lets Flow/35/let's FLOW - source/proj.ios_mac"
    export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

Signing Identity:     "iPhone Distribution: New Free Games (2CHN583K4J)"
Provisioning Profile: "Super Flow Flipp AppStore"
                      (c6c30d2a-1025-4a23-8d12-1863ff684a05)

    /usr/bin/codesign --force --sign E48B98966150110E55EAA9B149F731901A41B37F --entitlements /Users/gururajtallur/Library/Developer/Xcode/DerivedData/Flow-bkqjkvtmvjovpyepfjeyqmjpintj/Build/Intermediates/Flow.build/Debug-iphoneos/Super\ Flow\ Flip.build/Super\ Flow\ Flip.app.xcent --timestamp=none /Users/gururajtallur/Library/Developer/Xcode/DerivedData/Flow-bkqjkvtmvjovpyepfjeyqmjpintj/Build/Products/Debug-iphoneos/Super\ Flow\ Flip.app

/Users/gururajtallur/Library/Developer/Xcode/DerivedData/Flow-bkqjkvtmvjovpyepfjeyqmjpintj/Build/Products/Debug-iphoneos/Super Flow Flip.app: resource fork, Finder information, or similar detritus not allowed
Command /usr/bin/codesign failed with exit code 1

В разделе Code Sign это позволяет мне выбрать профиль и сертификат ... но все равно выдает ошибку. введите описание изображения здесь

введите описание изображения здесь

Как решить эту проблему?


1
ты сделал чистый и "alt" чистый?
thorb65

средства? Я только что воссоздал сертификаты из учетных записей XCode и заново сгенерировал профили на веб-сайте и повторил попытку ... все еще не повезло.
iPhoneProcessor

Арнольд Роас ответ ниже сделал трюк для моего проекта. Но вам также может потребоваться выполнить Product> Clean в XCode, чтобы компиляция впоследствии была успешной.
Фредрик Йоханссон

плюс для cocos2d-x
fnc12

Ответы:


588

Решение 1:

Веб-сайт Apple для разработчиков Ответы на вышеуказанные проблемы Здесь .

Выполните следующую команду в терминале: Сначала перейдите в корневую папку проектов

 xattr -cr <path_to_project_dir>

Чистый Xcode и Re Build. ура

Решение 2:

Просто зайдите в корневой каталог проекта и выполните эту команду xattr -cr.

xattr -cr .

Чистый Xcode и Re Build. Готово.

Решение 3:

Вы можете решить эту проблему, найдя файлы, которые содержат информацию поиска.

В терминале перейдите в корневой каталог проекта и выполните

ls -alR@ . > kundapura.txt

Это создает kundapura.txt в текущем каталоге. Теперь найдите com.apple.FinderInfo и очистите эти атрибуты для всех файлов. Вы можете сделать это так

xattr -c <filename>

Пример: xattr -c guru.png

Как только вы очистите все, кодовый знак работает. Чистый Xcode и Re Build. ура

Решение 4: Вдохновленный ответом Марка Маккоркла

В терминале перейдите в корневой каталог проекта и выполните одну за другой команду

  find . -type f -name '*.jpeg' -exec xattr -c {} \;
  find . -type f -name '*.jpg' -exec xattr -c {} \;
  find . -type f -name '*.png' -exec xattr -c {} \;
  find . -type f -name '*.json' -exec xattr -c {} \;

Чистый Xcode и Re Build. Готово.


7
Это исправлено ошибка знака кода в Xcode 8. Отличное решение.
iPhoneProcessor

4
У меня есть 110 файлов с этим. Какой будет команда bash, которая автоматически обработает все из них?
Фоукс

2
Спасибо, работал для меня!
Амит Аджмера

5
Это спасатель. Я потратил часы на это.
Джексон,

4
Большое спасибо за то, что поделились, сэкономили мне часы, если не дни!
G Chris DCosta

171

Ошибка связана с атрибутами внутри ваших файлов изображений. Это произошло от нашего графического дизайнера, сохранившего изображения из фотошопа с атрибутами.

Вот простая команда, чтобы найти все ваши файлы PNG и удалить их атрибуты. Запустите это в корневом каталоге ваших проектов из терминала. Очистить и восстановить; задача решена.

find . -type f -name '*.png' -exec xattr -c {} \;

12
Это должен быть принятый ответ. Проще, быстрее и не требует ручного труда. У меня было 80 файлов с проблемами, согласно ответу @ NatureFriend.
Роджер Оба

3
Спасибо! Часы, которые я потратил, пытаясь найти ответ на эту странную ошибку - какая колоссальная трата времени!
lppier

Одним из более быстрых для меня решений, не связанных с терминалом, было просто перетащить все изображения в ImageOptimizer (который также уничтожает все бесполезные атрибуты).
блэкджек75

Я сохранил новый значок из pixelmator и у меня возникла та же проблема. Спасибо.
Гай Лоу

Это сработало для меня .. Мне было отказано в разрешении на указанную выше команду 'xcattr -cr' (даже было указано, что это можно сделать с помощью документации Apple, указанной выше: developer.apple.com/library/archive/qa/qa1940/_index.html Запуск Xcode 9.3 на Высокой Сьерре 10.13.4
Рандорамма

95

Если у вас есть эта ошибка при кодировании приложения:

ветвь ресурса, информация о поиске или подобный детрит не разрешены. Команда / usr / bin / codesign завершилась неудачно с кодом выхода 1

Перейдите в корневую папку вашего проекта и выполните

find . | xargs -0 xattr -c

Это очистит атрибуты для всех файлов.

В Сьерра ужесточены правила, касающиеся того, что может быть в подписанном пакете, и использование ресурсов для ресурсов больше не допускается. AppleScript всегда сохранял информацию в ресурсных вилках, хотя эта информация долгое время не использовалась. В Sierra, когда вы сохраняете сценарий, эта информация о ресурсной ветке больше не сохраняется.

Это означает, что вы не можете присвоить код сценарию, который последний раз сохранялся в версии до Sierra; Вы должны сохранить в Сьерре, чтобы иметь возможность войти в Сьерру.

Люди, которые могут быть затронуты, являются теми, кто связывает другие сценарии в свои сценарии (cordova?). Они не смогут подписать сценарий контейнера, пока все встроенные сценарии не будут сохранены в Sierra.

ОБНОВИТЬ:

Похоже, это также работает:

xattr -rc .

Если у вас недостаточно прав доступа, попробуйте добавить sudo: sudo xattr -rc .


4
Я попробовал это в терминале и "недостаточно места для спора"
Фоукс

1
Это работает как шарм! Также нужно было сделать Product> Clean в XCode, но потом мой проект собран!
Фредрик Йоханссон

Спасибо человек, это работает. В моем случае проблема была в том, что я могу протестировать устройство без проблем, но при попытке в симуляторе оно не работает и показывает вышеуказанную проблему. Ваше решение исправило мою проблему.
Махмуд Ахсан

xattr -rc. Работай!
матовая

Я строил с Corona SDK и столкнулся с той же проблемой. xattr -rc работал на меня.
Раис Икбал

31

Самый простой способ обработки атрибутов в ваших исходных файлах - это заставить Xcode очистить архив до того, как он запустит кодировку. Сделать это:

  1. Выберите цель в XCode
  2. Выберите вкладку Build Phases
  3. Нажмите символ +
  4. Выберите этап запуска нового сценария
  5. Введите следующее для сценария:

    xattr -cr ~ / Библиотека / Разработчик / Xcode / DerivedData || эхо ясно

Теперь, когда вы создадите свою цель, она очистит все атрибуты, которые могли бы нарушить код. При очистке на этом этапе вам не нужно изменять каталог исходного кода / проекта.

Часть сценария «|| echo Clear» гарантирует, что сборка проекта будет продолжаться даже в случае ошибок xattr.

Этот метод хорош, если вы используете программы, такие как DropBox, в своем хранилище кода, которые добавляют атрибуты, так как это не меняет ваш исходный проект, только встроенный архив.

Возможно, вам придется изменить путь в соответствии с вашим каталогом DerivedData - этот путь будет показан рядом с ошибкой кодового знака.

xattr codeign xcode fix


1
Проблема появляется только для меня в проекте, созданном из другого идентичного проекта с помощью using-D в Finder. По какой-то причине ни одно из более популярных решений не помогло мне. Этот сделал.
Clozach

1
СПАСИБО! после 2 часов поиска решения это сработало.
Картер Кобб

1
В заключение! После нескольких часов попыток найти другие решения, это было исправлено !! Попробуйте сначала, но замените путь, указанный ошибкой
кодового знака

для меня проблема заключалась в изображении в исходном коде ... поэтому я добавил скрипт запуска, который сделал этот xattr -cr "$ PROJECT_DIR"
Little Watchman

Большое спасибо, это все еще работает. В моем случае я добавил xattr -cr ~ / Users / msc / OneDrive / 01 Work / APP / Flutter / lts-flutter / build / ios / Debug-iphoneos || echo Clear
mactrix

26

Я использовал следующую команду. Используйте окно терминала. Перейдите к своему проекту и выполните следующее:

xattr -rc .

Да, иногда помогает только очистка атрибутов внутри каталога Project. Хромая Apple, зачем делать такие дерьмовые вещи
Антон Малышев

В дополнение к ответу, получившему
Ланс Самария

Я также должен был очистить папку проекта <cmd + K> после этого, чтобы это работало
Ланс Самария

21

Официальный ответ Apple на этот вопрос есть в Технических вопросах и ответах QA1940 .

Это изменение в области безопасности, появившееся в iOS 10, macOS Sierra, watchOS 3 и tvOS 10.

Подписание кода больше не позволяет любому файлу в комплекте приложений иметь расширенный атрибут, содержащий ветвь ресурса или информацию Finder.

Чтобы увидеть, какие файлы вызывают эту ошибку, запустите эту команду в Терминале: xattr -lr <path_to_app_bundle>

Вы также можете удалить все расширенные атрибуты из вашего пакета приложения с помощью команды xattr: xattr -cr <path_to_app_bundle>

<path_to_app_bundle>можно заменить каталогом вашего проекта Xcode. Например~/Development/MyProject


Проработав практически все другие предложенные решения, в xattr -lr <path_to_app_bundle>конечном итоге получаем нужные файлы. Получил Localizable.strings от агентства с Finder-Tags, и те вызвали сбой Codesign.
JanR

Я потратил 2 дня на это, и это решение, наконец, сработало для меня!
bhakti123

16

Все об очистке файлов хорошо, но утомительно для нескольких проектов.

графические приложения (как, например, фотошоп в старых версиях) записывают дополнительную информацию (теперь мы называем ее метаданными ...) старым способом во внешних файлах, или они пришли из более старых OSX, таких файлов:

«com.apple.ResourceFork» и «com.apple.FinderInfo», например, при разархивировании папки.

Xcode 8 отказывается добавлять его в сборку (поскольку вы добавили их в проект с помощью «git --add.», Может быть ...). Вы можете найти их в терминале рекурсивно и удалить их, но это может быть утомительно.

Я написал небольшую бесплатную утилиту, чтобы удалить его .. надеюсь, что это может помочь ..

https://itunes.apple.com/us/app/cleandetritus/id1161108431?ls=1&mt=12


Это сработало для меня. Большое спасибо за ваше полезное приложение!
Синий

Это единственное решение, которое работало со мной, хотя приложение много раз падало «возможно, из-за большого количества файлов проекта», но оно очистило файлы, и проект наконец заработал. Спасибо!
XIII

Скачал ваше приложение и оно все очистило для меня! Спасибо!
Бобби

+1 Спасибо
Megaetron

Я исправлю сбой в большом проекте, как только у меня будет свободное время!
Инконти

11

Простое решение: -

Как я сделал [Работа для меня]

Шаг 1: - Перейдите в эту папку - в окне поиска нажмите «Перейти» -> «Перейти к папке».

затем введите путь к вашему проекту, как в следующем примере: - Библиотека / Разработчик / Xcode / DerivedData / имя вашего проекта / Build / Products / Debug-iphoneos

Теперь вы можете увидеть всплывающее окно со списком доступных файлов, там вы видите файл yourApp.app [ничего не делайте, просто дождитесь шага 2].

Шаг 2: - Откройте новый терминал и введите просто cd, затем просто перетащите шаг 1 yourApp.app в терминал, теперь вы получите путь к приложению, теперь нажмите кнопку ввода.

Шаг 3: - Теперь введите эту команду **

xattr -rc.

Не пропустите "." (Dot) нажмите кнопку ввода.

Вот и все, зайдите в свой проект Xcode и очистите и запустите снова.


10

----- Если вы не можете применить вышеуказанные решения из-за отсутствия знаний Bash или чего-то еще.

У меня возникла эта проблема, как только я включил iCloud Drive на моей Sierra. И мой проект был в папке, которая была синхронизирована с iCloud Drive. Я полагаю, это то, что добавляет эти дополнительные атрибуты.

Временное решение:

Отключите iCloud Drive для папки, в которой находится ваш проект.


Я перешел с iCloud Drive на рабочий стол и работает нормально. Спасибо
drasick

Это было частью решения для меня. У меня на рабочем столе был проект, резервное копирование которого происходило в iCloud под Sierra. Мне все еще нужно было набрать xattr -rc. в терминале удалить поврежденные файлы после перемещения проекта с рабочего стола. Ни одно из других решений не сработало для этого шага
Роджер Пинглтон

Это было также проблемой для меня: iCloudDrive вызывает эту действительно досадную ошибку, я сообщил об ошибке в Apple -> 31740606
LukeSideWalker

По сути, это тоже была моя проблема, но мне не нужно было отключать iCloud для папки проекта, перемещать папку проекта или что-то в этом роде. Я просто вошел в Xcode Prefs-> Locations-> Advanced и выбрал опцию «Уникальный» для Build Location. Я использовал расположение сборки в подпапке файла проекта xcode, который находился на диске iCloud. Я думаю, что по умолчанию используется значение «Уникальный», и я не знаю, почему я его когда-либо изменил, возможно, чтобы было проще найти исполняемый файл после сборки.
Давер

10

Для тех (как я), которые просто пытаются разработать приложение, не разбирая расширенные атрибуты в каждом новом фотошопе, созданном PNG, добавленном к цели macOS, вы можете временно отключить подпись кода, добавив пользовательский параметр сборки:

CODE_SIGNING_ALLOWED = No 

Очевидно, что распространять приложение нужно в конечном счете, чтобы решить эту проблему, но это позволяет разрабатывать в тех случаях, как у меня, где не всегда было просто пропустить подписывание кода в Sierra (в прошлых OS X / Xcode это было проще сделать).

Согласно комментарию RGriffith, вот несколько скриншотов для тех, кто не уверен, как добавлен пользовательский параметр сборки.

введите описание изображения здесь

введите описание изображения здесь


Куда вы добавляете это?
Гриффитс

4

Вам нужно будет удалить папку пакета приложения и перестроить приложение, как описано ниже.

Мое приложение называется: аугмент

В окне терминала перейдите в папку вашего приложения, например: cd / Users / имя пользователя / Library / Developer / Xcode / DerivedData /

В окне терминала запустите команду для вашей папки приложения, например: xattr -cr augment-flmbiciuyuwaomgdvhulunibwrms

Clean> Сложение> Run.

В Mac Appstore также есть бесплатное приложение под названием «CleanDetritus», которое будет удалять их.


1
Я использую Flutter для генерации приложения для iOS, и Clean> Build> Run from Xcode устранил ошибку «развилка ресурсов, информация о Finder или подобный детрит не разрешен» на консоли флаттера.
Хуан Валера

Это сработало, спасибо! Решением для меня было выполнение «xattr -rc». в папке проекта производных данных вместо этого в папке проекта.
BIOS-K

2

Эта проблема пришла ко мне вчера.

(What's wrong) Я обновил ресурсы изображения, вручную заменив файл в Finder, и мне не удалось с этой ошибкой компиляции.

(What's right)Не обновляйте изображение таким образом. После этого я перетаскивал изображения на «xcassets» в Xcode. Больше ошибки не появляются снова.


2

Проблема в производных данных. Вы должны очистить производные данные, а затем очистить проект и собрать. Пожалуйста, проверьте эту ссылку.


1

Моя проблема - каждое изменение, которое я делаю в коде и выполняю снова, ошибка появляется снова. Затем я нахожу решение автоматически выполнять команду при каждой компиляции / выполнении кода.

Благодаря @ rich-способны я обнаружил «Run Script». Затем я положил команду "xattr -cr." в поле.

Решение XCODE


1

Самое простое решение может быть, если вы используете git . Пытаться:

$ git stash
$ git stash pop

Git не хранит метаданные файла, все вышеперечисленное удалит.


У меня была эта проблема под Xcode 9. Решение выше исправило проблему. Вы должны иметь проект под контролем исходного кода git и еще не зафиксировали ни одного файла.
Anessence

0

Моя проблема заключалась в том, что я использовал cordova для создания приложения около 1 года назад, но оно не было совместимо с новой версией xcode, поэтому я просто использовал cordova build iosего, и оно снова заработало .


0

Одним из лучших решений является переход к типу терминала это

xattr -cr "Full path of your project"

Чтобы найти полный путь вашего правого клика на Xcode project-> get info -> copy path и замените на. Затем введите команду ниже

xattr -cr "Full path of your project"

Очистить и построить сделано.


этот кирпич мой проект, не используйте его, ребята
Навид Ахмад

Это заложило мою схему. и исправляя эту проблему, я случайно удаляю файл .scodeproj, а затем создаю новый проект и
Naveed Ahmad

Тогда это произошло из-за вашей ошибки. Я пробовал код обьекта, и у меня нет проблем.
Раджеш Маурья

Братан после использования вышеупомянутой команды в моем случае создал проблему для меня. затем, чтобы решить, что я застрял в другой проблеме.
Навид Ахмад

0

Если команды xattr не помогают, это может быть связано с ошибкой XCode 9: давайте попробуем удалить и повторно добавить папку ресурсов (в моем случае это был файл .xcassets), содержащий поврежденные файлы из Xcode. (вы должны понимать, какие файлы были затронуты ранее с помощью команды xattr -lr)



0

Я также сталкиваюсь с той же проблемой, которая была исправлена ​​простым перезапуском моего Macbook.


0

Я обнаружил, что если я добавлю color tagв папку подDerivedData , это приведет к вышеуказанной ошибке при отладке на устройстве.

Удалить color Tagисправление этой ошибки для меня.

введите описание изображения здесь



0

Я не знаю, что со мной произошло, но когда я запускал приложение флаттера на симуляторе, я столкнулся с ошибкой. Я использовал flutter cleanкоманду и удалил производные данные, а затем все идет хорошо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.