Tuy nhiên, tôi đã biên dịch lại khuôn khổ bằng cách sử dụng cùng một Xcode và nó vẫn cho tôi lỗi này.
- SDK cơ sở iOS 11.1 cho cả hai
- Swift Language Version Swift 4.0 cho cả hai
- Không sử dụng Pods / Carthage
Tôi hy vọng ai đó có thể biết
Tuy nhiên, tôi đã biên dịch lại khuôn khổ bằng cách sử dụng cùng một Xcode và nó vẫn cho tôi lỗi này.
Tôi hy vọng ai đó có thể biết
Câu trả lời:
Cập nhật:
Đối với các phiên bản phát hành của Xcode:
Lỗi này (và các lỗi tương tự liên quan đến Swift 4.1, 4.2, v.v.) sẽ xảy ra khi mở một dự án với Xcode 9.1, 9.2, 9.3, 9.4, 10, v.v. sử dụng các khung được xây dựng bằng các công cụ Xcode trước đó.
Để khắc phục sự cố, hãy cập nhật và xây dựng lại các khuôn khổ của bạn bằng Carthage ( carthage update --platform iOS
), Cocoapods ( pod update
hoặc pod install
) hoặc theo cách thủ công, với các công cụ Xcode mới được cập nhật. Các công cụ sẽ được cập nhật tự động khi bạn cập nhật Xcode, nhưng nếu không, bạn có thể làm theo các bước được nêu bên dưới trong câu trả lời gốc.
Bạn cũng có thể cần phải làm sạch dự án của mình cmd + shift + k
và có thể là thư mục xây dựng của bạn cmd + option + shift + k
để lấy Xcode để không sử dụng các bản dựng khung được lưu trong bộ nhớ cache.
Trong một số trường hợp, bạn cũng có thể cần phải xóa thư mục dữ liệu dẫn xuất của mình (Dễ dàng tìm thấy bằng cách đi tới Tùy chọn Xcode -> Vị trí -> Thư mục Dữ liệu gốc ( Cảm ơn Stunner )
Đối với phiên bản beta của Xcode:
Xem câu trả lời gốc bên dưới và sau đó làm theo các bước ở trên.
Câu trả lời gốc:
Có thể bạn vẫn có công cụ xcodebuild của mình được đặt thành Xcode 9.0 được xây dựng bằng Swift 4.0 và không tương thích với Swift 4.0.1 của Xcode 9.1 beta.
Kiểm tra thiết bị đầu cuối bằng lệnh:
xcodebuild -version
Hoặc chỉ cần vào tùy chọn Xcode -> Vị trí và kiểm tra / thay đổi các công cụ dòng lệnh thành Xcode 9.1. Bạn sẽ được thiết lập sau đó.
Swift Language Version
vào Swift 4
cho các nhóm đó. Sau đó, nó hoạt động.
Vấn đề của tôi là do khuôn khổ bên ngoài không được biên dịch cho Swift 4.0.2. Tôi đã thêm tệp này qua Carthage , vì vậy đang chạy:
carthage update --platform iOS
Và sau đó làm sạch dự án cmd + shift + k
và thư mục xây dựng cmd + option + shift + k
và xóa thư mục dữ liệu có nguồn gốc (chỉ đơn thuần là chuyển nó vào thùng rác cũng hoạt động) đã làm việc cho tôi.
Trong trường hợp của tôi, tôi đã tải xuống phiên bản xCode 11 Beta để thử nghiệm SwiftUI. Khi tôi chạy dự án của mình, tôi gặp lỗi "Không thể nhập mô-đun được biên dịch bằng Swift 5.1 bằng trình biên dịch Swift 5.0.1: ..." .
Để khắc phục sự cố này. tôi đã thay đổi công cụ dòng lệnh xCode thành công cụ dòng chú thích xCode 11 mới. Sau đó, bạn có thể tạo dự án xcode mới bằng SwiftUI.
Xcode -> Preferences -> Location -> XCode command Line Tool
tôi hy vọng, điều này sẽ giúp ích cho những ai muốn thử nghiệm với công việc miễn phí mới :)
Cài đặt Xcode Toolchain của phiên bản Xcode cụ thể đang hoạt động cho bạn từ đây .
Chuỗi công cụ Xcode bao gồm một bản sao của trình biên dịch, lldb và các công cụ liên quan khác cần thiết để cung cấp trải nghiệm phát triển gắn kết để làm việc trong một phiên bản Swift cụ thể.
Mở Preferences của Xcode, điều hướng đến Components> Toolchains và chọn chuỗi công cụ Swift đã cài đặt.
Điều này sẽ cho phép bạn biên dịch và chạy ứng dụng ngay bây giờ.
Tôi đã gặp vấn đề này với Xcode 10 beta, bổ sung Swift 4.2. Vấn đề của tôi không liên quan đến Carthage hoặc bất kỳ phụ thuộc bên ngoài nào.
Chuyển đến YourTarget > Build Settings > Swift Language Version
tất cả các mục tiêu Xcode của bạn.
Của tôi đã được đặt tất cả Swift 4
.
Sau khi thêm Giai đoạn tạo tệp sao chép, tôi bắt đầu gặp lỗi
: 0: error: không thể nhập mô-đun được biên dịch bằng Swift 4.1.2 bằng trình biên dịch Swift 4.2: /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule
Lệnh MergeSwiftModule không thành công với mã thoát khác không
Sau đó, tôi đặt từng mục tiêu Swift Language Version
thành Swift 4.2
, điều này đã loại bỏ lỗi.
Tuy nhiên, tôi không chắc tại sao lại xảy ra lỗi ngay từ đầu vì việc đặt tất cả các mục tiêu Swift 4
phải hợp lệ như nhau.
Build Settings
Trong trường hợp của tôi (Xcode 9.2):
Tôi đã đến Xcode Preferences > Locations > Derived Data
Sau đó tôi đã xóa dữ liệu và thực hiện một bản dựng sạch sẽ và ổn.
Trong trường hợp của tôi, tôi đã sử dụng CocoaPods với plugin cocoapods-binary
để tạo trước thư viện thành tệp nhị phân. Sau khi tôi nâng cấp Xcode từ 10 lên 11, Xcode cho tôi lỗi này:
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
Tôi sửa nó bằng cách xóa /Pods
thư mục và chạy pod install
.
Trong trường hợp của tôi, tôi đã biên dịch lại framework với bất kỳ phiên bản nào mà nó phàn nàn.
Để biên dịch lại, hãy chạy pod update
hoặc cập nhật carthage (cái mà bạn đang sử dụng) và xây dựng dự án.
Sau đó tìm kiếm khuôn khổ trong công cụ tìm. Sao chép-dán theFramework.framework
dự án của bạn và đảm bảo "Sao chép các mục nếu cần." Xây dựng lại dự án và nó sẽ hoạt động.