Найден неожиданный код заголовка 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, динамическая структура отключена, поэтому мой проект также отключает биткод и не кодируется.
Ответы
Ответ 1
Проверьте две вещи для каждого фреймворка:
- Тип Mach-O фреймворка (в настройках сборки цели фреймворка)
![Mach-O]()
- Независимо от того, копируете ли вы фреймворк, помещая его в "Фазы сборки" → "Внедрить фреймворки" (или "Копировать ресурсы комплекта", как упомянуто. Brooks hollar)
![Embed frameworks]()
Если тип платформы Mach-O представляет собой "статическую библиотеку", его не следует помещать в структуры для встраивания; если тип Mach-O является "динамической библиотекой", он должен быть помещен в интегрированные среды.
В моем случае это был SocketRocket, который я добавил вручную, который имеет и статическую библиотечную цель, и динамическую библиотечную цель с тем же именем фреймворка. После удаления цели статической библиотеки и встраивания только структуры динамической библиотеки проблема исчезает.
Замечания:
Если у вас нет доступа к исходному проекту, вы можете вручную проверить, является ли он динамическим или статическим каркасом, используя этот подход: fooobar.com/questions/357379/...
Ответ 2
Двойная проверка Фазы сборки → Копировать ресурсы Bundle для фреймворка или другого двоичного файла, который не будет там.
В моем случае это была сторонняя библиотека (Parse), которую я добавил.
Ответ 3
В моем случае у меня есть фреймворк, перетаскиваемый вручную в мой проект, и он указан в General
→ Embedded 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/DerivedDatap >
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)