Коли я запускаю програму з XCode, у мене трапляється збій, але помилок не виникає
Програма просто зупиняється на цій темі
Що я можу зробити, щоб отримати більше інформації про проблему?
Відповіді:
Якщо ви використовуєте власні фреймворки, вам потрібно помістити його всередину розділу «Вбудовані двійкові файли», що знаходиться в проекті Xcode на вкладці Цільове / Загальне.
Для мене простий Clean
і Rebuild
розібрався. Сподіваюся, це допоможе.
Додавання фреймворку до вбудованого списку двійкових активів це виправило. Ось як виглядає налаштування зовнішнього фреймворку в остаточному вигляді в графічному інтерфейсі Xcode як вбудований фреймворк (Xcode 9.2, особисто мені більше подобається візуальний слід хлібної крихти ;-)):
Чи навмисно Apple збила час виконання, щоб хоч якось повідомити розробника про проблему, через яку ви не можете використовувати фреймворки, що не належать Apple, як просто зв’язані фреймворки в розробці iOS? Краще було б, щоб це виглядало як помилка збірки, я думаю ... з кнопкою із написом "рухайся!"
Використання вбудованих двійкових файлів утримує кінцевого користувача від необхідності додавати Framework незалежно від вашої програми (або ви працюєте з установчиком). У випадку з iPhone (iOS) це неможливо, але на macOS це можливо, але може швидко зіпсувати.
Для кінцевого користувача набагато приємніше просто перетягнути програму, щоб встановити її на macOS, де вбудованість стає перевагою. Вбудовування також дозволяє уникнути класичних "конфліктів DLL" наявності зовнішніх версій вашого фреймворку для управління. (місце на диску дешеве, час мого клієнта дорогоцінний).
Нарешті вирішено!
Мені вдалося зробити фреймворк "необов'язковим" замість "обов'язковим".
Сподіваюся, це допоможе!
1) Продовжуйте виконання, щоб побачити, чи не відображається якесь повідомлення в налагоджувачі, наприклад "MyFramework.framework", не знайдено. Якщо це так, дотримуйтесь цього обговорення: Бібліотека OS X Framework не завантажена: «Зображення не знайдено» Для мене ця відповідь спрацювала: https://stackoverflow.com/a/44796734/4060763
2) Переконайтеся, що ви додали свої двійкові файли через розділ "Вбудувати двійкові файли".
3) Переконайтеся, що ви включили підписання фреймворків у розділі фази побудови.
4) Переконайтесь, що вбудовані фреймворки не є символічними посиланнями.
5) Ви можете зробити зв’язані фреймворки необов’язковими, замість того, щоб потрібно на етапі "Пов'язати двійковий файл з бібліотеками". Це скаже iOS не шукати ці фреймворки під час запуску. Але в будь-якому випадку вам потрібно виправити помилки, щоб використовувати ці фреймворки!
6) Перевірте, чи всі записи info.plist правильні. У моєму випадку я використовував файл Mac info.plist для iOS. Він шукав якийсь файл xib, якого не було в проекті iOS.
7) Робіть чистку та збирання після будь-якої такої зміни. Це потрібно, оскільки xcode не копіює / не змінює ці файли, якщо вони вже існують.
8) Видаліть програму з iPad, а потім встановіть. Те саме, що і 7.
Guard Malloc
, щоб бути правильним. Хтось знає, чому це виправляє аварію?
Щоб відповісти на вихідне запитання "Що я можу зробити, щоб отримати більше інформації про проблему?", Ця тема форуму Apple надає дуже просту пораду: просто запустіть свою програму, що аварійно завершує роботу, поза XCode (тобто зупиніть її з XCode, а потім запустіть її вручну на своєму пристрій). Це створить журнал збоїв, що містить більше деталей про те, що сталося. Потім ви можете переглянути цей журнал у меню вікна XCode / Пристрої та симулятори -> Переглянути журнали пристроїв.
Я зіткнувся з такою ж проблемою з Xcode 11.3 та macOS Catalina 10.15.2. Додаток працював добре на пристрої, але не на Simulator. Здається, у Simulator є проблема, і вирішення проблеми полягає у відключенні Thread Sanitizer.
Посилання: https://forums.developer.apple.com/message/397978#397978
Сподіваюся, це допомагає.
Я зіткнувся з помилкою з тим самим підписом (мій проект був на Obj-C) і виявив, що забув пов’язати з відповідною структурою. Повідомлення про помилку в журналі налагодження, яке призвело до пошуку помилки, було:
dyld: Символ не знайдено: _OBJC_CLASS _ $ _ SFSafariViewController
На мою конкретну помилку, додавши SafariServices.framework у Цілі -> Фази побудови -> "Пов’язати двійковий файл з бібліотеками", вирішено проблему. Хоча у вас, мабуть, не однакові помилки та роздільна здатність, перевірка журналу налагодження на наявність підказок корисна.
У мене виникла така ситуація після оновлення Xcode до v10.2.1 та швидкого переходу до v5.0 Якщо ви використовуєте carthage + RxSwift, використовується новий RxSwift RxRelay.framework
. Вам слід перейти до каталогу / Carthage / Build, знайти цей фреймворк і додати його до свого проекту. Не забудьте також додати його до свого carthage copy-frameworks
сценарію:
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Вирішено завдяки: https://stackoverflow.com/a/52550148/2493555
Якщо ви використовуєте фреймворк, написаний на Swift у програмі Objective-C, вам потрібно включити ланцюжок інструментів Swift до програми, яка споживає фреймворк.
Я знайшов, як це зробити, це створити фіктивний швидкий файл у програмі, щоб XCode швидко розпізнав і належним чином додав його до проекту. Потім ви можете видалити фіктивний файл.
Я б дуже хотів, якби хтось знав кращий спосіб явно додати swift до проекту-c без додавання швидкого файлу.
якщо ви використовуєте структуру побудови Carthage, перетягнувши фреймворк до свого проекту, ви повинні додати його до загальних / вбудованих двійкових файлів.
Я знаходжу правильний спосіб її вирішення.
Переконайтеся, що AppleWWDRCA.cer
встановлено режим системи за замовчуванням, тоді він буде працювати:
Я стикався з тим самим питанням. Мені вдалося встановити для параметра «Завжди вбудовувати швидкі стандартні бібліотеки» значення «Так» у налаштуваннях збірки моєї цілі.
У мене була подібна проблема, яка була вирішена відсутністю специфікації дозволу в plist (як би це не дивно було ...)
Я намагався використовувати AVCaptureDevice, і він просто розбився при запуску (мій додаток був дуже мінімальним)
Додавання -
Privacy - Camera Usage Description
щоб info.plist
вирішити це для мене.
Щоб додати до довгого списку зустрічей з цією помилкою, вона виникає, коли я перебуваю на XCode12.2 Beta 2, що розгортається на моєму Mac під управлінням MacOS 10.15.5 із ціллю розгортання, встановленою на MacOS 11.0. Ця ситуація сталася тому, що я випробовував програму Mac Catalyst Tutorial щодо додавання SideBar. Переключення цілі на MacOS 10.15.5 усунуло помилку та запустило програму належним чином.
Я виправив свою помилку в своєму проекті.
1. Перевірте інші теми, коли сталася помилка. Я виявив, що моя помилка стосується камери.
У мене щойно виникла та сама проблема, і причина, пов’язана з тим, що я скасував свої сертифікати розробника та створив нові за допомогою Xcode 10, після свіжого оновлення macOS Mojave (для деяких він видалив усі облікові дані для входу та застарів деякі сертифікати брелоків).
Отже, все, що мені потрібно було зробити, це видалити встановлені програми з мого пристрою і знову запустити їх через Xcode, щоб він міг встановити правильний новий профіль забезпечення на моєму пристрої :)
Іноді це трапляється, коли ви використовуєте системні фреймворки, доступні лише з пізнішої версії iOS, що до вашої цільової версії. Це може бути виправлено, позначивши цей зв’язаний фреймворк як необов’язковий.
Наприклад, проект, орієнтований на iOS 11 і використовуючи функцію AuthenticationServices для iOS 12 Автозаповнення, зазнає збою в iOS 11 описаним способом.
Насправді, у мене виникла проблема з 11.3.1, і Thread Sanitizer вже був вимкнений, як було зазначено вище. У моєму випадку проблема полягала в тому, що я мав різні версії xCode у моїй папці Application, як це
/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app
і
/Applications/Xcode.app - was 11.2
Мені потрібно 2 дні, щоб зрозуміти, що система збірки за замовчуванням переглядає /Applications/Xcode.app. Тож перенесення 11.3.1 в /Applications/Xcode.app нарешті вирішить проблему
Також якщо ви використовуєте власні фреймворки, переконайтеся, що ви встановили тип Mach-O як статичну бібліотеку. Я десь читав, що IOS не дозволяє dylib. У будь-якому випадку це спрацювало для мене.
Я відчув цю проблему лише під час роботи на реальному пристрої (iPhone SE). Проект тренажера працював, як очікувалося.
Я спробував усі виправлення саме з цього потоку і звідси: Бібліотека OS X Framework не завантажена: 'Зображення не знайдено' Жоден із тих не працював у мене.
Для мене проблема була вирішена після перезапуску iPhone (sic!).
Я зробив:
І це нарешті працює. :)
Якщо будь-яке інше рішення не вдається, не забудьте випробувати його.
Я відсортував за командою "pod install".