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

Что является причиной для 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, но какой? Можно использовать лучший метод, чем догадываться

4b9b3361

Ответ 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 в своем проекте и посмотрите, что вы установили.

ИЛИ

Попробуйте удалить тесты