Однак я перекомпілював фреймворк, використовуючи той самий Xcode, і він все ще видає мені цю помилку.
- Базовий SDK iOS 11.1 для обох
- Swift Мовна версія Swift 4.0 для обох
- Не використовується стручки / Карфаген
Сподіваюся, хтось може це знати
Однак я перекомпілював фреймворк, використовуючи той самий Xcode, і він все ще видає мені цю помилку.
Сподіваюся, хтось може це знати
Відповіді:
Оновлення:
Для випускних версій Xcode:
Ця помилка (та подібні помилки, пов’язані із Swift 4.1, 4.2 тощо), виникає під час відкриття проекту з Xcode 9.1, 9.2, 9.3, 9.4, 10 тощо, який використовує фреймворки, побудовані з попередніми інструментами Xcode.
Щоб виправити проблему, оновіть та carthage update --platform iOS
відновіть свої фреймворки за допомогою Carthage ( ), Cocoapods ( pod update
або pod install
) або вручну за допомогою нових оновлених інструментів Xcode. Інструменти слід оновлювати автоматично під час оновлення Xcode, але якщо ні, то можна виконати кроки, описані нижче в оригінальній відповіді.
Вам також може знадобитися очистити ваш проект cmd + shift + k
і, можливо, папку збірки, cmd + option + shift + k
щоб Xcode не використовував кешовані збірки фреймворку.
У деяких випадках вам також може знадобитися видалити папку похідних даних (Легко знайти, перейшовши до Налаштування Xcode -> Місцеположення -> Виведена папка даних ( Спасибі Stunner )
Для бета-версій Xcode:
Дивіться оригінальну відповідь нижче, а потім виконайте кроки вище.
Оригінальна відповідь:
Напевно, у вас все ще є інструменти xcodebuild, встановлені на Xcode 9.0, який будується за допомогою Swift 4.0 і несумісний із Swift 4.0.1 бета-версії Xcode 9.1.
Перевірте термінал за допомогою команди:
xcodebuild -version
Або просто перейдіть до параметрів Xcode -> Місцеположення та перевірте / змініть інструменти командного рядка на Xcode 9.1. Тоді вас слід налаштувати.
Swift Language Version
на Swift 4
тих. Тоді це спрацювало.
Моя проблема виникла через зовнішню структуру, яка не була скомпільована для Swift 4.0.2. Я додав цей файл через Карфаген , тому запускається:
carthage update --platform iOS
А потім очищення cmd + shift + k
папки проекту та збірки cmd + option + shift + k
та видалення папки похідних даних (просто переміщення її також у смітник) також спрацювало для мене.
У моєму випадку я завантажив бета-версію xCode 11 для тестування SwiftUI. Коли я запускаю свій проект, я отримую помилку "Модуль, скомпільований Swift 5.1, не може бути імпортований компілятором Swift 5.0.1: ..." .
Щоб вирішити цю проблему. я змінив інструмент командного рядка xCode на новий інструмент рядка коментарів xCode 11. Після цього ви можете створити новий проект xcode за допомогою SwiftUI.
Xcode -> Налаштування -> Розташування -> Інструмент командного рядка XCode
я сподіваюся, це допоможе тому, хто хоче протестувати за допомогою нової роботи :)
Встановіть Xcode Toolchain певної версії Xcode, яка працювала для вас звідси .
Набір інструментів Xcode включає копію компілятора, lldb та інших пов’язаних інструментів, необхідних для забезпечення згуртованого досвіду розробки для роботи в певній версії Swift.
Відкрийте Налаштування Xcode, перейдіть до Компоненти> Ланцюжки інструментів і виберіть встановлений ланцюжок інструментів Swift.
Це дозволить вам скомпілювати та запустити програму на даний момент.
Я вирішив цю проблему з бета-версією Xcode 10, яка додає Swift 4.2. Моя проблема не була пов’язана з Карфагеном чи якимись зовнішніми залежностями.
Йти до YourTarget > Build Settings > Swift Language Version
всіх ваших цілей Xcode.
Мої всі були налаштовані Swift 4
.
Після додавання фази збірки файлів копіювання я почав отримувати помилку
: 0: помилка: модуль, скомпільований за допомогою Swift 4.1.2, не може бути імпортований компілятором Swift 4.2: /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build / MyBabug. MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule
Помилка команди MergeSwiftModule з ненульовим кодом виходу
Потім я встановлюю для кожної цілі Swift Language Version
значенняSwift 4.2
, що усувало помилку.
Однак я не впевнений, чому помилка траплялася, оскільки встановлення всіх цілей Swift 4
має бути однаково дійсним.
Build Settings
У моєму випадку (Xcode 9.2):
Я пішов до Xcode Preferences > Locations > Derived Data
Потім я видалив дані та зробив чисту збірку, і все було нормально.
У моєму випадку я використовував CocoaPods з плагіном cocoapods-binary
для попередньої побудови бібліотек до бінарних файлів. Після оновлення Xcode з 10 до 11 Xcode видає мені цю помилку:
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
Я виправляю це, видаляючи /Pods
каталог і запускаючи pod install
.
У моєму випадку я перекомпілював фреймворк з якою б версією він не скаржився.
Щоб перекомпілювати, запустіть pod update
або оновіть картуз (який ви коли-небудь використовуєте) та побудуйте проект.
Потім шукайте фреймворк у пошуку. Скопіюйте та вставте theFramework.framework
файл у свій проект і переконайтеся, що "Скопіюйте елементи, якщо це потрібно". Створіть проект заново, і він повинен працювати.