Відповіді:
Для мене жодне з попередніх рішень не спрацювало. Ми виявили, що ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
в налаштуваннях збірки є прапор (у попередніх версіях: "Вбудований вміст містить код швидкого"), який потрібно встановити "ТАК". За замовчуванням це було НІ!
Ця помилка може виникнути, якщо під час перетворення проекту Objective-C щось почало використовувати Swift. Проблема полягає в тому, що параметри збірки Linker ніколи не були налаштовані належним чином, тому вам доведеться це робити вручну. Знайдіть налаштування збірки шляхів пошуку Runpath та встановіть його на:
$(inherited) @executable_path/Frameworks
EDIT: Я також повинен додати, що останнім часом цілий ряд цих помилок викликаний чимось іншим цілком - Apple внесла зміни в сам Swift, починаючи, можливо, з Xcode 6.1 або 6.1.1. Здається, єдиним рішенням є залишити Xcode, знищити ваші сертифікати в Keychain Access, перейти до Центру членів та видалити всі сертифікати та профілі (крім профілів для додатків у магазині - ви не можете їх видалити), а потім запустити весь процес запиту сертифікатів з нуля.
Я не дуже впевнений, чому це питання викликає недоречність, у мене була така проблема, коли я вперше спробував використати Swift з існуючим проектом. Перезапуск Xcode також вирішив це для мене.
Я довго шукав це питання. Є кілька причин, що викликають це питання.
Якщо ви зіткнулися, коли ви і Swift код / бібліотека в проекті Objectice C, ви повинні спробувати Рішення 1-2-3
Якщо ви зіткнулися з цією проблемою, то новий проект Swift Рішення 4 підійде вам найкраще.
Перезавантажте Xcode, потім комп'ютер та iPhone
Перейдіть до налаштувань збірки проекту та встановіть Always Embed Swift Standard Libraries
(раніше Embedded Content Contains Swift Code
) прапор наYES
Перейдіть до налаштувань збірки проекту та додайте @executable_path/Frameworks
до Runpath Search Paths
опції
Якщо жодне з перерахованих вище не працює, це повинно бути. Apple, схоже, сертифікати, пов'язані з ніндзя, як згадується у публікації AirSign
На сертифікати InHouse
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR
вони додали нове поле під назвою OU
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR
тож вам слід просто відтворити сертифікати та положення
@executable_path/../Frameworks
там, де проекти iOS вимагають цього без ..
середини. Зміна цього значення важлива, якщо ви перетворили ціль з однієї ОС в іншу.
У моєму випадку я намагався імпортувати користувальницьку систему і отримував подібну помилку. Виявляється, мені довелося імпортувати рамку в Вбудовані Бінарні файли, а не у Пов'язані рамки та бібліотеки.
Вбудовані бінарні файли знаходяться в розділі Налаштування проектів -> -> Загальні
Для розробників, які мали цю проблему з розширеннями Adhoc / Enterprise,
Створіть сертифікат на виробництво з порталу розробників, а потім відновіть профіль розподілу. Завантажте та інсталюйте їх на свій Mac. Переконайтесь, що ви вибрали правильний профіль у налаштуваннях збірки Xcode та перезавантажте програму.
Джерело: https://devforums.apple.com/message/1022908#1022908
Рішення 5:
У моєму випадку всі рішення, зазначені у відповіді невідомих, були дуже корисними, але жодне не спрацювало. Я вирішив свою проблему, додавши свою швидку бібліотеку до розділу "Вбудовані бінарні файли" в розділі "Загальні" цілі мого проекту. Можливо, це пов’язано з тим, що я включив мій швидкий фреймворк у свою робочу область? Що б зараз не склав! Приготуйся Свіфт, я тут!
Для мене ця проблема була пов'язана з тим, що мій орган сертифікації відносин розробників Apple Worldwide був недійсним.
Завантажте його звідси: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer
Перетягніть його в Keychain Access, очистіть проект та запустіть.
У мене був проект Obj-C, де я почав додавати швидкі вихідні файли. Наступне вирішило проблему для мене:
RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
EMBEDDED CONTENT CONTAINS SWIFT = YES
Я щойно створив новий проект із шаблонів Xcode 6.3 і порівняв налаштування проекту зі своїм старим оригінальним проектом.
Спробуйте утримувати Alt, перейдіть до Product -> Clean Build Folder ...
Сподіваюся, це допоможе комусь ..
Причин цього відбувається багато. Щойно провівши веселі вихідні, знайшовши ще одне питання, що викликає це (порядок підписання коду), я хотів створити стислий відповідь, який поєднує всі можливі рішення разом:
DerivedData
та Build
каталоги. Подивіться в розділі Налаштування для місцезнаходження DerivedData
. Build
має бути у папці вашого проекту.@executable_path/Frameworks
. Це прості речі. Якщо ви займаєтеся побудовою власного командного рядка, ви можете створювати власні .ipa
файли для завантаження. У цьому випадку вам потрібно забезпечити наступне:
SwiftSupport/iphoneos
є такою ж, як і версія в.Contents/YourApp.app/Frameworks
Тому що Swift ще не є бінарною сумісною між версією, ви повинні переконатися, що ці версії є тією, з якої ви створили додаток. Ви можете знайти ці бібліотеки під /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
.codesign
в бібліотеки та файли фреймворку ( Frameworks
в .app
папці), а потім підписати все .app
дерево. .app
Дерево має бути підписана з , entitlements.plist
але НЕ в рамках.Сподіваємось, коли Swift 3.0 вийде і нам більше не потрібно поєднувати Swift з нашими програмами, вся ця проблема піде назовні.
У мене виникла ця проблема, використовуючи спеціальну мобільну програму (або підприємство) із сертифікатом виробництва. Перехід на сертифікат розробки та мобільне забезпечення вирішили цю проблему.
Мій проект - проект Swift з деякими класами Objective-C. У мене була така ж проблема, коли я був підписаний зі старим сертифікатом inhouse (підприємство).
Наступні кроки вирішили це для мене.
Runpath Search Paths
налаштування збірки на: $(inherited) @executable_path/Frameworks
. Рішення 6:
У нашому випадку сертифікат розповсюдження підприємства був відкликаний. Створення нового сертифіката та оновлення профілю забезпечення вирішили проблему.
(Схоже, існує багато різних причин цієї помилки. Сподіваюся, що це комусь допоможе.)
Я зіткнувся з тією ж проблемою, встановлення правильної ідентичності коду вирішило проблему (Налаштування налаштувань-> Ідентифікація підпису коду)
Відповідно до технічного питання Apple "Усі сертифікати для розробників Enterprise і стандарт iOS, створені після випуску iOS 8, мають нове поле Team ID у потрібному місці, щоб дозволити запускати додатки мови Swift"
Якщо ви додасте три рамки через вбудовані бінарні файли, вони також будуть додані до пов'язаних рамок і бібліотек. Видаліть три записи із пов'язаних рамок і бібліотек вирішить проблему.
Магічні методи, такі як повторний запуск Xcode та перезапуск Mac, не працюють на мене.
Додавання Framework як "Вбудованого двійкового" замість просто "Зв'язані рамки та бібліотеки" - виправлена моя проблема.
Я також встановив прапорець Вбудований вміст, який містить прапор Swift Code.
Оновлення до останньої версії OS X (Yosemite)
Після годин проб і помилок я прийшов до вирішення цієї проблеми. - Якщо це стосується вашого випадку, звичайно.
У мене була така ж проблема, поки я не модернізував Mac OS X з Mavericks до Yosemite. - Це вирішило мою проблему, сподіваюся, що вона виправить і вашу
Я спробував усі рішення, які знайшли в Інтернеті, включаючи Apple та нові сертифікати. Без успіху.
Єдиний спосіб, коли я міг запустити xcode, після 6 місяців спроб, це створити новий обліковий запис на моїй книзі macbook.
Зазвичай ця помилка зникне, якщо ви додасте цю бібліотеку до сегменту "Копіювати файли" у вашій фазі збірки.
Жодне з цих рішень не здавалося, що для мене послідовно працює; після кожної пари успішних пробіжок знову не вдасться. Прапор "Вбудований вміст містить код швидкого" для мене завжди був "ТАК".
Виявляється, я б встановив, що Xcode сумісний з 6.3. Змінивши його назад на 3.2-сумісну, вирішено:
Це з’явилося, коли я до нового проекту додав нову ціль розширення Today із мовою Swift. Виправляється легко шляхом оновлення проекту до рекомендованих налаштувань. Xcode 6.0.1
У мене виникла така ж проблема за допомогою Mavericks, Xcode 6.1.1, тестування на iPhone5 з iOS 8.1.1. Я спробував усі можливі рішення, включаючи нові сертифікати та профілі забезпечення, але нічого не допомогло. Я вносив зміни до Embedded Content Contains Swift Code
та Runpath Search Paths
як на рівні проекту, так і на цільовому рівні.
Зараз я встановив Yosemite, і без подальших змін він почав працювати.
otool