Додаток для iOS із збійною рамкою на пристрої, кольоровий: Бібліотека не завантажена, Xcode 6 Beta


573

Ця збійка була блокувальною проблемою. Я скористався наступними кроками для відтворення проблеми:

  • Створіть проект Cocoa Touch Framework
  • Додайте швидкий файл та клас собаки
  • Побудувати рамку для пристрою
  • Створіть програму Single View у Swift
  • Імпорт рамки в проект програми
  • Моментальний швидкий клас з фреймворку у ViewController
  • Створіть та запустіть додаток на пристрої

Додаток негайно вийшов з ладу після запуску, ось консольний журнал:

dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
  Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
  Reason: image not found

Я спробував побудувати на пристроях iOS 7.1 та 8.0, вони мають однаковий збій. Однак я можу створити додаток і працювати на тренажері штрафу. Крім того, я знаю, що я можу змінити рамку на форму " Обов'язково" на " Необов'язково" у " Посилання бінарних із бібліотеками" , але це не повністю вирішило проблему, додаток вийшов з ладу під час створення екземпляра собаки . Поведінка відрізняється на пристрої та симуляторі, я підозрюю, що ми не можемо поширити рамку для пристрою, використовуючи бета-версію Xcode. Хтось може пролити світло на це?


1
Чого я не розумію, це те, чому всі інші сторонні рамки працюють поза коробкою, і їх можна легко перетягнути і впустити, Link Binary with Librariesі Xcode якось знає скопіювати їх у свій додаток, тоді як для користувацьких рамок цього просто не відбувається.
фатухоку

Відповідь саззада Гісана Хана тут stackoverflow.com/questions/26024100/… - найкраща відповідь ..
Анкіт Кумар

1
Перевірте це stackoverflow.com/a/52129141/2020034 . Це працює
Vinayak Parmar

Ви можете зробити бібліотеку жиру, ви можете побачити по цьому посиланню: stackoverflow.com/a/54977145/3992606
Мохсен

Версія Xcode не відповідає , вирішена за допомогою stackoverflow.com/a/55738882/5443510 .
Джиммі Інь

Відповіді:


975

На вкладці Загальні цілі є вбудовані бінарні файли . Коли ви додасте рамку, там збій вирішується.

Посилання тут на Форумах розробників Apple.


73
У мене є рамка для вбудованих бінарних файлів, і у мене є фаза копіювання, а також встановлена ​​на "рамки". Він все одно виходить з ладу.
loretoparisi

11
Це вирішено лише в режимі налагодження. Помилка знову виникне, коли ви архівуєте або створюєте проект
Саад Ур Рехман

13
Додавання @ Executable_path / Frameworks до "Шляху пошуку Runpath" вирішило цю проблему, тобто на додаток до рамки до "Вбудованих
бінарних файлів

14
Хто-небудь може допомогти, як додати фреймворк до вбудованих бінарних файлів, з PODs?
Боннк

3
Дітто. Я також хотів би знати, як додати з PODs, якщо у "XCode 6.4" за допомогою PODS не знайдено "Загальні> Вбудовані бінарні файли"
дед

259

Для iOS більше або рівне 8

На вкладці Загальні цілі у розділі Вбудовані файли додайте рамки. Це скопіює фреймворк у компільований, щоб його можна було пов’язати під час виконання.

введіть тут опис зображення

Чому це відбувається? : оскільки фреймворк, до якого ви посилаєтеся, складається як динамічно пов'язаний фреймворк і таким чином пов'язаний під час виконання.

** Примітка. ** Вбудовані власні рамки підтримуються лише в iOS> 8, і таким чином слід альтернативне рішення, яке працює на старих версіях iOS.

Для iOS менше 8

Якщо ви впливаєте на цей фреймворк (маєте доступ до вихідного коду / процес збирання), ви можете змінити цей фреймворк на статичну, а не на динамічну. Це призведе до того, що код буде включений у ваш компільований додаток, а не пов’язаний з ним під час виконання, і тому рамку не доведеться вбудовувати.

** Як: ** На вкладці Налаштування збірки рамки в розділі Пов’язання змініть тип Mach-O на Статичну бібліотеку. Тепер вам не потрібно включати рамку під вбудовані бінарні файли.

Статична рамка

Включаючи активи: Для включення таких речей, як зображення, звукові файли або файли xib / nib, я рекомендую створити пакет (по суті, каталог, більше інформації тут bit.ly/ios_bundle), а потім завантажити активи з пакета за допомогою NSBundle.


1
Як я можу додати фреймворк до вбудованих двійкових файлів, якщо фреймворк є у Pods?
TomazStoiljkovic

Що ви маєте на увазі під «фреймворком у Pods»? Що ваша власна рамка поширюється через CocoaPods?
Доусон

2
Це має бути "Більше або рівне 8". Мені довелося це робити і на iOS 8.
Крінх

помилкаSwift is not supported for static libraries
jose920405

@TomazStoiljkovic Ви це зрозуміли? У мене є те саме питання, у мене є рамки, які я хочу створити як бінарний, але це залежить від інших рамок за допомогою какао-стручків.
MegaManX

125

Просто перетягування рамок у ваш проект не буде досить хорошим. Це як бути у тому ж самому парку, але не в змозі знайти своїх дітей. Виконайте такі дії:

1) Створіть свої рамки

  • Розробіть свої рамки.
  • Після завершення розробки COMMAND+ Bпобудуйте основу та переконайтеся, що ви отримаєте "Збірка успішна".

введіть тут опис зображення

2) Доступ до своєї рамки

  • Після того, як ваш рамковий проект успішно будується, він буде готовий до вас у вашій Productsпапці у вашому проекті.

введіть тут опис зображення

  • Клацніть правою кнопкою миші на вашому .frameworkі виберіть "Показати у Finder".

введіть тут опис зображення

3) Розмістіть рамки у своєму проекті

  • Перетягніть курсор .frameworkіз вікна Finder у папку "Рамка" вашого додатка.

введіть тут опис зображення

4) Налаштувати проект програми для фреймворку

  • Виберіть верхній рівень у своєму проекті

введіть тут опис зображення

  • Виберіть ціль

введіть тут опис зображення

  • Перейдіть у розділ "Фази побудови", потім "Пов’язати бінарне з бібліотеками" та переконайтесь, що ваша рамка включена із вибраними факультативами .

введіть тут опис зображення

  • Ще в розділі "Фази побудови", перейдіть у верхній лівий бік та виберіть +кнопку. У спадному меню виберіть "Фаза нового копіювання файлів".

введіть тут опис зображення

  • Прокрутіть униз до нового розділу "Копіювати файли" та переконайтесь, що ви встановили Destination"Рамки". Залиште путь порожнім. Потім натисніть +кнопку внизу зліва.

введіть тут опис зображення

  • Вам буде представлено ієрархію вашого проекту. Прокрутіть униз до папки "Каркаси", до якої ви додали рамку на кроці 3, або шукайте її на панелі пошуку вгорі. Виберіть рамку та натисніть "Додати".

введіть тут опис зображення

  • Переконайтесь, що ваш фреймворк включений із вибраним "Копія входу коду".

введіть тут опис зображення

5) Очистіть, а потім запустіть проект

  • COMMAND+ SHIFT+K
  • COMMAND+R

5
Гарна думка. Це майже працює для мене. Я зробив каркас A, на якому вбудований Alamofire. Мій хост-додаток (вбудована рамка A) працює в тренажерах. Але коли я намагаюся запустити його у реальному iPhone, він виходить з ладу: Alamofire: dyld: Бібліотека не завантажена: @ rpath / Alamofire.framework / Alamofire Причина: не знайдено відповідного зображення. Знайшли: xxx / ddcdemo.app / Frameworks / iddc.framework / Frameworks / Alamofire.framework / Alamofire: mach-o, але неправильна архітектура
DàChún

1
@Brandon Здійснення необов'язкової рамки вирішило мою проблему. Але ви можете, будь ласка, пояснити мені, якою поведінкою є те, щоб зробити рамки необов'язковими?
Мітеш Добареєя

2
Дякую! На вашому кроці 5 було встановлено прапорець "Копіювати лише під час встановлення", і це було моєю проблемою.
Andi

48

Я створив фреймворк за допомогою Swift3 / Xcode 8.1 і використовував його в проекті Objective-C / Xcode 8.1. Щоб виправити це питання, мені довелося включити Always Embed Swift Standard Librariesпараметр під Build Options.

Подивіться на цей скріншот:

введіть тут опис зображення


3
Зараз це працювало для мене в at. Вирішення цієї проблеми полягає в тому, щоб перейти до BuildPhases -> Копіювати файли -> вибрати Framework під пунктом призначення та додати рамку. Цілком ймовірно, що ваші бібліотеки тут відсутні
Харіш

@Harish, Рішення, яке ви пропонуєте, вже запропоновано декількома, і, безумовно, я подбаю про це на першому етапі. У моєму випадку рамки там були додані, але все ж з'явилася та сама проблема. Тоді я копаю його сам. Якщо ви проголосували за це рішення, я не знаю, чому ви майже впевнені у своєму шляху, коли це не спрацювало в моєму випадку: S
NeverHopeless

@Harish Спасибі Ваша відповідь допомогла мені набагато більше, і звичайно, так само зробив NeverHopeless's :) Дякую, хлопці
Мохсін Хубайб Ахмед

Це було єдине, що працювало для мене .. але я вже "вкладаю" рамки в Embedded Binariesрозділ своєї цілі . То чому це змушує це працювати?
гуптрон

Дивовижна ця річ працює, тому що, якщо використовувати швидку бібліотеку або стручок, щоб вбудувати в об'єктивний проект C. Проект «Об'єктивний C» часто має цей прапор №
Swaroop S

47

По-перше, спробуйте створити після Command + Option + Shift + K. Якщо все-таки не вдалося, то виконайте нижче кроки.

Якщо хтось стикається з цією помилкою в Xcode 8, то змініть свій статус рамки на Необов’язковий, а не обов'язковий на вкладці Загальні для вашої цілі.

введіть тут опис зображення


3
Це зробить час виконання, щоб не розпізнати класи з фреймворку
tesla

@azimov правильний. На даний момент я стикаюся з цією дилемою. Необхідна причина викликає помилку "зображення не знайдено", і якщо ми спробуємо встановити його як необов'язкове, воно вийде з ладу під час виконання роботи з "нерозпізнаним селектором"
Адам Мендоса

1
Незважаючи на те, що моя основа вже була в Link Binaries and Embed, мені все одно довелося додати етап копіювання. dyld: Бібліотека не завантажена: @ rpath / AFNetworking.framework / AFNetworking Посилання від: / Користувачі / {Користувач} / Бібліотека / Розробник / CoreSimulator / Пристрої / 6833A85C-5783-45FA-A4D5-991D286B28C2 / data / Containers / Bundle / Application / B1A0A3B2-92A2-41B0-9884-6DB6995A0D7E / MyApp.app / MyApp Причина: зображення не знайдено (lldb) Рішення: Проект -> Ціль -> Фази збірки -> + вгорі, щоб додати нову фазу копіювання файлів Призначення = Рамки Виберіть рамку що потрібно скопіювати
Адам Мендоса

@AdamMendoza У мене було відхилено додаток через це.
jbouaziz

@jbouaziz, так, помилка, до якої ви можете зіткнутися, пов’язана з тим, що .framework є жирним, це означає, що в ньому є архітектури, які не підтримуються на iOS, такі як i386 x86_64, крім необхідного armv7 arm64. Магазин видасть вам помилку, але ви, можливо, не побачите помилку в Xcode. Використовуйте завантажувач під Xcode -> Відкрити інструмент для розробників -> Завантажувач програм. Розв’язатиL тонко дивіться -> ikennd.ac/blog/2015/02/…
Адам Мендоса

28

У мене з'явився такий самий випуск у версії iOS 9.x

ПРОБЛЕМА: додаток виходить з ладу, як тільки я відкриваю додаток із помилкою нижче.

dyld: Бібліотека не завантажена: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Посилання від: /var/containers/Bundle/Application/######/TestApp.app/TestApp Причина: зображення не знайдено

Я вирішив цю проблему шляхом зміни Requiredв Optionalв Linked Frameworks and Librariesпротягом UserNotifications.frameworkрамки.


Це працює. Хтось знає, чому? Тому що деякі пристрої потребують цього налаштування, інші - ні.
NEO

Я отримую "попередження: не вдалося виконати код підтримки для читання даних класу Objective-C в процесі. Це може знизити якість доступної інформації про тип." коли позначте мою
губу

це спрацьовувало, можливо, причина в тому, що в тренажері не працювали рамки, тому
Gowtham Sooryaraj

@ redent84 Ця відповідь разом із вашим коментарем врятувала мене від божевілля. Потрапив у цю проблему за допомогою AuthenticationServices.framework, для якого потрібен iOS 12.
Tamás Sengel,

26

Я повинен був (понад те , що згадані тут) додати наступний рядок в Runpath Шляхи пошуку під Параметри побудови закладки:
@executable_path/Frameworks

введіть тут опис зображення


Це вирішило для мене проблему. У мене виникли проблеми після додавання розширення до додатка iOS 9. Перед тим, як додати розширення, мій фреймворк був добре знайдений. Додавання фази збірки файлів копіювання не допомогло, і я вже вкладав рамку.
Грег

Це так дивно, що воно не включено за замовчуванням. Якщо ви розкручуєте та переглядаєте свій IPA, вам слід знайти рамки в Payloads / appname.app / Frameworks /. Однак додавання цього шляху пошуку повинно бути там, щоб програма переглядала цю папку під час виконання. Дивно.
mattv123

25

Вам потрібно додати рамку до нової фази збирання файлів копіювання, щоб гарантувати, що рамка буде скопійована в пакет програм під час виконання.

Див. Розділ Як додати "Копіювати файли збирання файлів" до моєї цілі для отримання додаткової інформації.

Офіційні документи Apple: https://developer.apple.com/library/mac/recipes/xcode_help-project_editor/Articles/CreatingaCopyFilesBuildPhase.html


Перепробувавши так багато речей, це саме це вирішило для мене. У мене вже були рамки в Link Binary і Embed Framework. Я не думав, що мені потрібно було також додати етап копіювання, але це виправлено.
Адам Мендоса

14

Якщо ви використовуєте Xcode 11 або новішу версію :

  1. Перейдіть до налаштувань своєї цілі та виберіть Загальні .

Цільові налаштування / Загальні

  1. Прокрутіть униз до Рамок, бібліотек та вбудованого вмісту .

  2. Переконайтесь, що для параметра Вбудувати, якщо потрібно, вибрано значення Embed & Sign або Embed Without Signing .

Розділ "Рамки, бібліотеки та вкладений вміст"


13

Додайте рамку у вбудовані бінарні файли введіть тут опис зображення

Потім очистіть і побудуйте.


11

Дивно, але не всі необхідні фрагменти тут задокументовані, принаймні для Xcode 8.

У моєму випадку була створена на замовлення рамка як частина одного робочого простору. Виявляється, його будували неправильно. На основі останньої відповіді Джереміху на цю тему:

https://forums.developer.apple.com/thread/4687

Я повинен був набір Dynamic Library Install Name Base( DYLIB_INSTALL_NAME_BASE) в рамках Build Settingsз рамкового проекту , а потім відновити її. Це було встановлено неправильно, $(LOCAL_LIBRARY_DIR)і я повинен був змінити його @rpath.

Отже, на етапі обробки посилань у програмі App Project було доручено хост-додатку динамічно завантажувати рамку під час виконання з /Library/Frameworks/fw.Framework/fw(як у корені файлової системи виконання), а не шлях до додатка/Frameworks/fw.Framework/fw

Що стосується всіх інших параметрів: це робить повинно бути в 3 -х місцях Build Phases, але вони все встановлені на один раз , коли ви просто додати його до Embedded Binariesустановці зGeneral вкладці хостингу App.

Мені не довелося встановлювати додаткову Copy Filesфазу, яка в будь-якому випадку здається інтуїтивно надмірною щодо етапу вбудовування. Перевіряючи хвостовий кінець стенограми збірки, ми можемо запевнити, що це не потрібно.

PBXCp /Users/xyz/Library/Developer/Xcode/DerivedData/MyApp-cbcnqafhywqkjufwsvbzckecmjjs/Build/Products/Debug-iphoneos/MyFramework.framework

[Багато багатослівних рядків видалено, але це зрозуміло зі спрощеної стенограми в інтерфейсі Xcode.]

Я досі не маю уявлення, чому Xcode встановив DYLIB_INSTALL_NAME_BASEзначення неправильно на мені.


1
Дякую, це виявилося моєю проблемою в Xcode 11. Я імпортував одну з моїх власних фреймворків, яка раніше працювала, але почала видавати помилку "dyld: Бібліотека не завантажена". Щоб було зрозуміло, ви хочете встановити параметр збірки "База імен динамічної бібліотеки для встановлення імені" на "@rpath" в проекті рамки, в яку ви намагаєтеся імпортувати, а не в проект, який ви імпортуєте. Якось його встановили на "/ Бібліотека / рамки".
Бен Шталь

Радий, що це було корисно через 3 роки. Відредаговано відповідно.
BaseZen

9

У моєму випадку рішенням було видалити скомпільований фреймворк із вбудованих бінарних файлів, який був окремим проектом у робочій області, очистити та відновити його та, нарешті, знову додати до вбудованих бінарних файлів.


8

Моє середовище: Cocos2d 2.0, Box2d, мета C

На додаток до інших відповідей вище, я нарешті зайшов на вкладку Загальні та зробив WatchKit необов’язковим.

Цільові загальні рамки та бібліотеки Watchkit.framework Необов’язково


8

Якщо ви використовуєте сторонні рамки та використовуєте Cocoapods як менеджера залежностей, спробуйте зробити це pod install оновлення своїх стручків.

Цей збій стався в сторонній бібліотеці, яку я використовував, тому радий, що вищевказане рішення працювало на мене, сподіваюся, воно працює для вас!


1
Чудово! виправили мою проблему. Але чи є спосіб уникнути встановлення залежностей стручка в моєму хост-додатку?
DàChún

8

введіть тут опис зображення

Для мене вирішено, вибравши "Копіювати лише при встановленні" на фазах збірки-> Вставити рамки


1
Було б непогано знати пункт цього прапорця, якщо система не вірить, що "встановлення налагодження" не є "встановленням". Незалежно від того, якщо це спричинить збій програми на апаратному забезпеченні, а не забороняє запуск програми з попередженням, це
чіткий

8

Це помилка виконання, яку викликає Dynamic Linker

dyld: Library not loaded: @rpath/...
...
Reason: image not found

Помилка Library not loadedз @rpathвказує , що Dynamic Linkerне може знайти двійковий файл.

  1. Перевірте, чи було додано динамічну основу General -> Embedded Binaries

  2. Перевірте @rpathналаштування між споживачем (додаток) та виробником (динамічний фреймворк):

    • Динамічні рамки:
      • Build Settings -> Dynamic Library Install Name
    • Застосування:
      • Build Settings -> Runpath Search Paths
      • Build Phases -> Embed Frameworks -> Destination, Subpath

Динамічний лінкер

Dynamic Library Install Name(LD_DYLIB_INSTALL_NAME)який використовується loadable bundle( Dynamic frameworkяк похідна), де dyldвступає в гру
Dynamic Library Install Name- шлях до бінарного файлу (не .framework). Так, вони мають таке ж ім'я, але MyFramework.frameworkце packaged bundleз MyFrameworkдвійковим файлом і ресурсами всередині.
Цей шлях до директорії може бути абсолютним або відносним (наприклад @executable_path, @loader_path, @rpath). Відносний шлях є більш кращим, оскільки він змінюється разом з якорем, що корисно, коли ви розповсюджуєте пакет як єдиний каталог

абсолютний шлях - приклад Framework1

//Framework1 Dynamic Library Install Name
/some_path/Framework1.framework/subfolder1

@executable_path

@executable_path - відносно вхідного двійкового запису - приклад використання прикладного Framework2
: вбудовано Dynamic frameworkдодаток

//Application bundle(`.app` package) absolute path
/some_path/Application.аpp

//Application binary absolute path 
/some_path/Application.аpp/subfolder1

//Framework2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1

//Framework2 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1

//Framework2 Dynamic Library Install Name 
@executable_path/../Frameworks/Framework2.framework/subfolder1

//Framework2 binary resolved absolute path by dyld
/some_path/Application.аpp/subfolder1/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1

@loader_path

@loader_path - відносно пакету, який є власником цього бінарного
випадку використання: Framework з вбудованим фреймворком - Framework3_1 з Framework3_2 всередині

//Framework3_1 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1

//Framework3_2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1

//Framework3_1 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1

//Framework3_1 @loader_path == Framework3_1 @executable_path
/some_path/Application.аpp/subfolder1

//Framework3_2 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1

//Framework3_2 @loader_path == Framework3_1 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1

//Framework3_2 Dynamic Library Install Name 
@loader_path/../Frameworks/Framework3_2.framework/subfolder1

//Framework3_2 binary resolved absolute path by dyld
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1/../Frameworks/Framework3_2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1

@rpath - Шлях пошуку Runpath

Рамка2Приклад

Раніше нам довелося налаштувати Framework для роботи з dyld. Це не зручно, оскільки один і той же Framework не може використовуватися з різними конфігураціями

@rpath це складна концепція, яка спирається на зовнішні (додатки) та вкладені (динамічні рамки) частини:

  • Застосування:

    • Runpath Search Paths(LD_RUNPATH_SEARCH_PATHS)- визначає список шаблонів, на які буде замінено @rpath.
       @executable_path/../Frameworks
    • Перегляньте Build Phases -> Embed Frameworks -> Destination, Subpathна екрані, де саме знаходиться вбудована рамка
  • Динамічна рамка:

    • Dynamic Library Install Name(LD_DYLIB_INSTALL_NAME)- точка, яка @rpathвикористовується разом із локальним шляхом зв’язку до двійкового файлу
      @rpath/Framework2.framework/subfolder1
//Application Runpath Search Paths
@executable_path/../Frameworks

//Framework2 Dynamic Library Install Name
@rpath/Framework2.framework/subfolder1

//Framework2 binary resolved absolute path by dyld
//Framework2 @rpath is replaced by each element of Application Runpath Search Paths
@executable_path/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1

*../ - перейдіть до батьківського поточного каталогу

otool - інструмент відображення об'єктного файлу

//-L print shared libraries used
//Application otool -L
@rpath/Framework2.framework/subfolder1/Framework2

//Framework2 otool -L
@rpath/Framework2.framework/subfolder1/Framework2

//-l print the load commands
//Application otool -l
LC_LOAD_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2

LC_RPATH
@executable_path/../Frameworks

//Framework2 otool -l
LC_ID_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2

install_name_tool змінити динамічні імена встановлення спільної бібліотеки за допомогою -rpath

CocoaPodsвикористовує use_frameworks![About] для регулюванняDynamic Linker

[Лексика]


6

Нещодавно зіткнулися з цим питанням із імпортом CoreNFC на старих iphone (наприклад, iPhone 6) та Xcode (11.3.1). Мені вдалося змусити його працювати

  1. У своїх проектах виберіть ціль.
  2. Goto Загальна Вкладка зверху.
  3. У розділі " Каркаси, бібліотеки та вбудований вміст " додайте рамки (для мене це був CoreNFC). Повторіть для інших цілей.
  4. Клацніть на « Фази збірки» вгорі та розгорніть « Пов’язати бінарне з бібліотеками» ».
  5. Зробіть проблемну рамку необов’язковою (з обов’язкового).

Це дозволило мені компілювати старіші / новіші iPhone без зміни коду. Я сподіваюся, що це допомагає іншим.


1
ДЯКУЮ ТОБІ. Зробити це необов’язковим було відсутнім посиланням ...
fl034,

не працює, програма виходить з ладу і немає повідомлення про вказівку типу аварії замість точки перерви в якомусь коді складання.
Newsonic

чому це потрібно зробити необов’язковим?
rohitwtbs

5

У мене було те саме питання. Я спробував побудувати свій проект за допомогою iPhone, яким я ніколи раніше не користувався, і я не додав нових фреймворків. Для мене прибирання спрацювало чудово ( Shift + Command + K ). Можливо, це тому, що я використовую бета-версію Xcode 7 та iPhone 6 з iOS 9 Beta, але це спрацювало.


А може бути і папка «Чиста
збірка»

4

У моєму випадку мій проект написаний об’єктом-c, і в бібліотеці є файли Swift. Тому я змінив "Завжди вставляти швидкі стандартні бібліотеки" на вкладці " Налаштування збірки " свого проекту на " Так", і це стало цілком нормально.


4

Для будь-якого проекту або рамкового проекту в Xcode, який використовує стручки, один простий спосіб уникнути динамічної бібліотеки (dylb) не завантажувати - це встановити вам файл pod чорнилом у статичному режимі. Для цього просто переконайтеся, що не записати наступний рядок у свій файл стручка.

use_frameworks!

Після того, як рядок видалений з вашого файла, який ви зберегли, просто запустіть форму консолі:

$ pod update

2

Якщо у вас є розділ для розробки Видаліть додаток із встановлення симулятора з pod -> clean -> запустити знову ...


2

Те саме було, коли я створив нову схему конфігурації та побудови.

Тож рішенням для мене було бігти

pod install

для цієї новоствореної Конфігурації.


1

Спробувавши всі методи, доступні в Інтернеті, і власні трюки з помилками та помилками 100 разів. Нарешті я зміг це вирішити. - Apeksha Sahu 6 хв. Назад
Goto iTunes в Mac -> акаунти -> Авторизуйте цей комп'ютер - Apeksha Sahu 5 хв. Тому
другий крок .... Перейдіть на розробник в налаштуваннях в iPad та iPhone і перейдіть наново з ідентифікаторами та очистіть комп'ютери довіри все. Це працювало для мене ........ ....... Після перевстановлення версії Mac OSHigh seria 10.13.15 з новітньої версії Mac OS seirra beta, до перевстановлення останньої версії Xcode після оновлення всіх сертифікатів. і т.д. і т. д. і т. д. ... стільки методів, скільки ви можете подумати, що я зробив. -введіть тут опис зображення


1

Спробуйте змінити прапор ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES(у попередніх версіях xcode:) Embedded Content Contains Swift Codeу Налаштуваннях збірки з НІ на ТАК.


1

Xcode 11

  1. Перейдіть до налаштувань цілі та виберіть Загальні.
  2. Шукайте "Рамки, бібліотеки та вбудований вміст"
  3. Тримайте "Не вставляйте" та переконайтесь, що всі цілі (якщо у вас їх більше) встановили лише власні рамки, а не інші цілі.

1

В Xcode 11

Я стикався з тим же питанням

Зміна "Не вставляти" на вкладці Загальні > "Рамки, бібліотеки та вбудований вміст" все ще спричиняла ту саму помилку.

Що вирішило для мене, було додавання вкладки Framework у вкладці «Фази збірки» > « Вставити рамки»

- оновлено ---

Я зауважував, що в проектах, побудованих у попередніх версіях Xcode Embed Frameworks Section , недоступний під час запуску в Xcode 11, знайдіть наведені нижче кроки для досягнення рішення:

1: Спочатку потрібно додати нову копію файли фази при Побудувати Фази вкладки.

введіть тут опис зображення

2: Друга зміна назви доданої фази на Вставити рамки введіть тут опис зображення

3: Змініть місце призначення на Frameworks .

введіть тут опис зображення

4: Додайте основу, в якій сталася помилка.

введіть тут опис зображення


1

Хоча всі кажуть вставити рамку під вбудовані бінарні файли, але вона все ще не працює, тому що тут ми пропускаємо один важливий крок.

Ось два правильних кроки для додавання бінарних файлів на вкладці Вбудовані бінарні файли:

  1. Видаліть рамку, яка видає помилку, із "Пов'язаних рамок і бібліотек" на вкладці Загальні.

  2. Тепер додайте видалений фреймворк лише на вкладці Вбудовані файли файлів, і це все, що потрібно зробити.

Запустити його на пристрої і зберегти цю посмішку;)


0
  1. Перейдіть у файл у xcode -> Налаштування робочої області
  2. Клацніть стрілку, біля якої відображається / Користувачі / яблуко / Бібліотека / Розробник / Xcode / DerivedData
  3. Виберіть Отримані дані та перемістіть їх у Кошик.
  4. Досить xcode та повторно відкрити його.
  5. Очистіть проект і запустіть знову.

Наведені вище кроки вирішили мої проблеми.


-5

У випадку, якщо хтось і раніше не стикається з цією проблемою, не дивлячись на всі кроки, викладені в багатьох інших відповідях, вам може знадобитися відкликати і відтворити сертифікат для підписання коду відповідно до наступного:

https://developer.apple.com/library/ios/qa/qa1886/_index.html


Саме так. Підписання коду не має нічого спільного з цією помилкою.
igraczech
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.