Что является причиной для dyld`dyld_fatal_error, несовместимого api на iOS?
Я перемещаю часть своих проектов на iOS 5/ARC. Один из старейших проектов (iOS 4.2, armv6 для поддержки iPod Touch 2g) дает мне:
dyld`dyld_fatal_error:
0x8feb1070: int3
0x8feb1071: nop
Сразу после запуска, но прежде, чем перейти к главному. Должен быть какой-то lib/code, обновленный до iOS 5, но какой? Можно использовать лучший метод, чем догадываться
Ответы
Ответ 1
Подходите к этой проблеме, пытаясь воспроизвести этот проект, используя Xcode4.3.2 с SDK iOS5.1. Проблема заключалась в том, что стандартный шаблон проекта на Xcode4.3.2 настраивается для iOS5, который имеет некоторые функции, которые ранее не поддерживали iOS-версии. В моем случае GLKit Framework был втянут и не поддерживался на моем iPhone3G под управлением iOS4.2. Ошибка, которую я получал, была такой же, как ваша:
dyld`dyld_fatal_error:
0x2fe01080: trap
0x2fe01084: mov r0, r0
При ближайшем рассмотрении выхода консоли вы можете увидеть, что может привести к сбою приложения:
dyld: Library not loaded: /System/Library/Frameworks/GLKit.framework/GLKit
Referenced from: /var/mobile/Applications/A60A53B1-F87D-467D-BB0B-82C603049202/HiJackInTheBox.app/HiJackInTheBox
Reason: image not found
(lldb)
Ошибка означала, что структура GLKit не была найдена в резидентном iOS на целевой платформе, где было установлено приложение. Структура была втянута в сборку в Project- > BuildPhases- > LinkBinaryWithLibraries.
Итак, чтобы исправить проблему, мне нужно было удалить структуру GLKit и все ссылки на код, ссылающиеся на нее. Затем сборка прошла успешно и запущена на целевом устройстве. Надеюсь, это поможет!
Ответ 2
Если вы перейдете к выходу консоли, вы обнаружите ошибку, указывающую, какая инфраструктура отсутствует в устройстве и что вызывает проблему (например, grundyoso сказал в своем ответе).
Итак, чтобы исправить это, вы можете перейти на целевую вкладку "Общие" и добавить недостающую фреймворк в разделе Встроенные двоичные файлы.
Это скопирует фреймворк в приложение, чтобы оно никогда не пропустилось ни на одном устройстве.
Ответ 3
У меня была такая же проблема с моим xCode 4.3 (на основе cocos3d), когда я тестировал iPhone 3GS с iOS 4.2.
Перейдите к настройкам и обновлению проекта:
Цель | Резюме | Связанные структуры и библиотеки | GLKit.framework для опционального
(а не обязательно), а затем снова проверьте.
После того, как это изменение изменится, все теперь кажется мне хорошим.
Удачи!
Ответ 4
У меня была такая же проблема, и это произошло, когда я запускал приложение на своем iPhone 6, и он работал до этого.
Просто перейдите в Product → Clean и снова запустите его...
Надеюсь, это поможет.
Ответ 5
У меня такая же проблема с Reachability.framework. Он отлично работает для iPhone 5, но при запуске того же кода для iPhone 7S Plus он показывает ошибку.
Решение этой проблемы:
1. Перейдите в General → Embedded Binaries.
2. Добавьте те же рамки (в моем случае Reachability.framework)
3. Затем добавьте libС++. Tbd в связанные структуры и библиотеки.
Надеюсь, он сработает для вас.
Ответ 6
Если вы используете Карфаген, вы, возможно, забыли добавить структуру в "Копировать рамки",
Перейти к Target → Build Phases → Copy Frameworks → Добавить фреймворк в список.
Ответ 7
Похоже, ваша основная цель - связать с XCTest.framework, но не удалось.
1) Перейти к настройкам проекта → 2) Перейти к главной цели приложений → другие флаги компоновщика 3) удалить '-framework XCTest' 4) убедиться, что поле "другие метки компоновщика" для вашей тестовой цели все еще содержит " -framework XCTest '
2) проверьте Images.xcassets и другие ресурсы в инспекторе файлов (правая панель), посмотрите на "целевое членство", проверьте, выбран ли целевой объект.
3) попробуйте выполнить поиск XCTest в своем проекте и посмотрите, что вы установили.
ИЛИ
Попробуйте удалить тесты