Подтвердить что ты не робот

Найден неожиданный код заголовка Mach-O: 0x72613c21 в Xcode 7

У меня есть проект Swift, который использует динамическую структуру ObjC, структура должна была быть связана с моим проектом и встроена в мой проект. Проект работает нормально в устройствах, когда он отправлен в App Store, ошибка произошла во время проверки: Found an unexpected Mach-O header code: 0x72613c21

Ниже приведены журналы проверки:

2015-10-12 02:32:33 +0000 [MT] Beginning distribution assistant for archive: MusicFans, task: Validate
2015-10-12 02:32:33 +0000 [MT] Automatically selecting the only availaable distribution method <IDEDistributionMethodiOSAppStoreValidation: 0x7f851c1d96c0>
2015-10-12 02:32:34 +0000 [MT] [OPTIONAL] Didn't find archived user entitlements for <DVTFilePath:0x7f851b42db10:'/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/Frameworks/libswiftDispatch.dylib'>: Error Domain=NSCocoaErrorDomain Code=4 "Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/Frameworks/libswiftDispatch.dylib" did not contain a "archived-expanded-entitlements.xcent" resource." UserInfo={NSLocalizedDescription=Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/Frameworks/libswiftDispatch.dylib" did not contain a "archived-expanded-entitlements.xcent" resource.}
2015-10-12 02:32:34 +0000 [MT] [OPTIONAL] Didn't find archived user entitlements for <DVTFilePath:0x7f8529a08050:'/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/wavpack.framework'>: Error Domain=NSCocoaErrorDomain Code=4 "Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/wavpack.framework" did not contain a "archived-expanded-entitlements.xcent" resource." UserInfo={NSLocalizedDescription=Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/wavpack.framework" did not contain a "archived-expanded-entitlements.xcent" resource.}
2015-10-12 02:32:34 +0000 [MT] [OPTIONAL] Didn't find archived user entitlements for <DVTFilePath:0x7f850da13de0:'/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/FLAC.framework'>: Error Domain=NSCocoaErrorDomain Code=4 "Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/FLAC.framework" did not contain a "archived-expanded-entitlements.xcent" resource." UserInfo={NSLocalizedDescription=Item at "/Users/panzhansheng/Library/Developer/Xcode/Archives/2015-10-11/MusicFans 11-10-15 上午8.29.xcarchive/Products/Applications/MusicFans.app/FLAC.framework" did not contain a "archived-expanded-entitlements.xcent" resource.}
2015-10-12 02:33:07 +0000 [MT] Canceled distribution assistant

Если я удаляю динамическую структуру из раздела Embedded frameworks проектов, то он может передать проверку, но сбой при запуске в устройствах из-за недостающего изображения моей динамической структуры, любая идея? BTW, динамическая структура отключена, поэтому мой проект также отключает биткод и не кодируется.

4b9b3361

Ответ 1

Проверьте две вещи для каждого фреймворка:

  1. Тип Mach-O фреймворка (в настройках сборки цели фреймворка)

Mach-O

  1. Независимо от того, копируете ли вы фреймворк, помещая его в "Фазы сборки" → "Внедрить фреймворки" (или "Копировать ресурсы комплекта", как упомянуто. Brooks hollar)

Embed frameworks

Если тип платформы Mach-O представляет собой "статическую библиотеку", его не следует помещать в структуры для встраивания; если тип Mach-O является "динамической библиотекой", он должен быть помещен в интегрированные среды.

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


Замечания:

Если у вас нет доступа к исходному проекту, вы можете вручную проверить, является ли он динамическим или статическим каркасом, используя этот подход: fooobar.com/questions/357379/...

Ответ 2

Двойная проверка Фазы сборки → Копировать ресурсы Bundle для фреймворка или другого двоичного файла, который не будет там.

В моем случае это была сторонняя библиотека (Parse), которую я добавил.

Ответ 3

В моем случае у меня есть фреймворк, перетаскиваемый вручную в мой проект, и он указан в GeneralEmbedded Binaries, которые вызывают ошибку Found an unexpected Mach-O header code: 0x72613c21. После того, как я переместил его с Embedded Binaries на Linked Frameworks and Libraries, проблема решена.

Ответ 4

У меня была такая же проблема. Я сделал пару вещей, и моя проблема исчезла. Я считаю, что моя проблема была связана с версией Cocoapods, но вы можете попробовать пару вещей здесь.

Сначала очистить DerivedData:

1.Включить Xcode

2.Go to./Users/YourFile/Library/Developer/Xcode/DerivedData​​p >

3.Удалить все из этой папки

4.Run Xcode

5.Build & Чистый

Второй по какой-то причине, с последними версиями cocoa pods версии 0.39, я получал следующее предупреждение, когда я запускал pod install

[!] Цель MY_TARTGET переопределяет настройку сборки EMBEDDED_CONTENT_CONTAINS_SWIFT, определенную в разделе "Файлы поддержки/Pods/Целевые файлы /Podsrelease.xcconfig". Это может привести к проблемам с установкой CocoaPods.

Я отказался от коко-каподов, удалив все установленные cocoapods:

sudo gem удалить cocoapods

затем установите более старую версию:

sudo gem install cocoapods -v 0.38.1

Это удалило предупреждение, и я смог удалить ошибку "неожиданный код заголовка Mach-O: 0x72613c21"

Ответ 5

Для меня в моем скрипте запуска /usr/local/bin/carthage copy-frameworks Carthage /usr/local/bin/carthage copy-frameworks были двоичные файлы Fabric.

После удаления, это решило проблему.

Я использую Version 9.4.1 (9F2000)

Ответ 6

Изменить. Это выглядит исправленным в Xcode 8 Beta 3.

В настоящее время я сталкиваюсь с этой проблемой с Xcode 8 Beta 2 и Swift 3 с чистыми подписями (что, похоже, вызывает проблему).

Добавление следующего к моему подфайлу устраняет проблему.

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'NO'
    end
  end
end

Кредит переходит на этот комментарий от YuAo на GitHub.

Ответ 7

Взгляните на эту документацию Apple. Встраивание фреймворков в приложение. Перейдите в раздел " Встроенные статические библиотеки", где они объясняют эту ошибку следующим образом:

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

Они также предоставляют способ исправить:

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

Вы выполняете это, следуя инструкциям в разделе Проверка двоичной связи

Ответ 8

Удалите их из Embedded Binaries Linked Frameworks and Libaries и добавьте их в Linked Frameworks and Libaries, затем снова Linked Frameworks and Libaries и загрузите в хранилище.

Ответ 9

Я не знаю почему, но почему-то стручки оказались встроенным двоичным файлом. Поэтому мне пришлось удалить его, установить модуль еще раз, и проблема исчезла.

enter image description here

Ответ 10

В моем случае это было вызвано изменением сертификата разработчика/команды.

Я запускаю проект с персональным идентификатором Dev Apple и к тому времени, когда я изменил его на свой ID работы. Когда мы пытаемся экспортировать .xcarchive, тогда появляется сообщение "Match-O header". Ничего, описанного здесь или на других сайтах, ничего не меняет.

Когда я меняю команду на свой личный идентификатор, в журналах ошибок отображаются отсутствующие файлы .xcent только для нескольких фреймворков (последнее добавление). Поэтому я запускаю совершенно новый проект, вставляю все источники и файлы, затем запускаю cocoapod, и все работает, как и ожидалось.

Ответ 11

Я столкнулся с этой ошибкой с фреймворком FacebookSDK. Я удалил его из списка Embed frameworks на этапах сборки, и он решил проблему. Осмотрите журнал и найдите фреймворк, вызывающий ошибку, как упоминалось другими.

Ответ 12

Мой способ исправить это состоял в том, чтобы вернуться к установке Fabric/Crashlytics через Cocoapods вместо причудливой настройки Carthage (которая выглядела глючной).

Ответ 13

Майк из Ткань здесь.

Это была ошибка в Xcode Beta 2 и 3, она была исправлена ​​в Beta 4, и обновление до последней разрешит ее.

Ответ 14

У меня возникла проблема с добавленной вручную структурой PFFacebookUtils в проекте Swift 2.3 non-CocoaPods. Я исправил это, удалив упомянутую структуру из раздела встроенных фреймов на странице "Общие" цели сборки и связав ее в "Сценах построения" → "Связывание двоичных файлов с библиотеками"

Ответ 15

Я столкнулся с этой проблемой в очень простом проекте Framework. У меня была только одна цель в моем проекте для структуры, и она строилась хорошо. Я хотел добавить некоторые модульные тесты, поэтому я добавил две новые цели: iOS Unit Testing Bundle target и приложение Single View Application (чтобы выступать в качестве основного приложения для тестов). Однако обе новые цели выбрасывали эту ошибку.

Я обнаружил, что проблема была вызвана установкой сборки типа Mach-O для новых целевых объектов, установленных в Static Library. По-видимому, новые цели наследовали тип Mach-O из родительского проекта. Когда я устанавливаю тип Mach-O в правильные настройки ( "Bundle" для модульных тестов и "Executable" для хост-приложения), все это сработало! Мне также пришлось очистить сборку, удалить производные данные и reset симулятор, чтобы получить новые настройки.

Ответ 16

У меня была такая же проблема в Xcode 8 beta 3. Я исправил ее удаление Fabric и Crashlytics из связанных фреймворков (Project = > Target = > Общая страница) (source)