Câu trả lời:
Đối với tôi không có giải pháp nào trước đây hoạt động. Chúng tôi đã phát hiện ra rằng có một cờ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
(trong các phiên bản trước: "Nội dung được nhúng chứa mã Swift") trong Cài đặt bản dựng cần được đặt thành CÓ. Nó là KHÔNG theo mặc định!
Lỗi này có thể xảy ra nếu có lỗi xảy ra trong quá trình chuyển đổi dự án Objective-C để bắt đầu sử dụng Swift. Vấn đề là cài đặt xây dựng Trình liên kết không bao giờ được cấu hình đúng, vì vậy bạn sẽ phải thực hiện bằng tay. Tìm cài đặt xây dựng Đường dẫn tìm kiếm Runpath và đặt thành:
$(inherited) @executable_path/Frameworks
EDIT: Tôi cũng nên nói thêm rằng gần đây đã xuất hiện những lỗi này do một thứ hoàn toàn khác gây ra - Apple đã thực hiện một thay đổi trong chính Swift, bắt đầu từ có lẽ Xcode 6.1 hoặc 6.1.1. Giải pháp duy nhất dường như là thoát Xcode, hủy chứng chỉ của bạn trong Keychain Access, đi đến Trung tâm thành viên và xóa tất cả chứng chỉ và hồ sơ (ngoại trừ hồ sơ cho các ứng dụng trong Cửa hàng - bạn không thể xóa chúng), sau đó bắt đầu toàn bộ quá trình yêu cầu chứng chỉ từ đầu.
Tôi không thực sự chắc chắn tại sao câu hỏi này bị hạ thấp, tôi cũng gặp vấn đề này khi lần đầu tiên thử sử dụng Swift với một dự án hiện có. Một khởi động lại Xcode cũng đã sửa lỗi này cho tôi.
Tôi đã tìm kiếm lâu về vấn đề này. Có một số lý do gây ra vấn đề này.
Nếu bạn phải đối mặt khi bạn và Swift code / thư viện trong dự án Objectice C, bạn nên thử Giải pháp 1-2-3
Nếu bạn đang đối mặt với vấn đề này với một dự án Swift mới, Giải pháp 4 sẽ phù hợp với bạn nhất.
Khởi động lại Xcode, sau đó là máy tính và iPhone
Chuyển đến cài đặt xây dựng dự án và đặt cờ Always Embed Swift Standard Libraries
(trước đó Embedded Content Contains Swift Code
) thànhYES
Đi đến cài đặt xây dựng dự án và thêm @executable_path/Frameworks
vào Runpath Search Paths
tùy chọn
Nếu không có cái nào ở trên hoạt động, cái này nên Apple dường như là bản vá ninja được đề cập trong bài đăng của AirSign
Tại chứng chỉ InHouse
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR
họ đã thêm một lĩnh vực mới có tên OU
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR
vì vậy bạn chỉ nên tạo lại chứng chỉ và cung cấp
@executable_path/../Frameworks
nơi các dự án iOS yêu cầu mà không cần ..
ở giữa. Thay đổi giá trị này rất quan trọng nếu bạn đã chuyển đổi mục tiêu từ HĐH này sang HĐH khác.
Trong trường hợp của tôi, tôi đã cố gắng nhập một khung tùy chỉnh và nhận được lỗi tương tự. Hóa ra tôi đã phải nhập khung trong Binaries nhúng chứ không phải vào Thư viện và Khung được liên kết.
Các nhị phân nhúng được đặt trong Cài đặt dự án -> -> Chung
Đối với các nhà phát triển đã gặp sự cố này với bản dựng phân phối Adhoc / Enterprise,
Tạo chứng chỉ sản xuất từ cổng thông tin dev và sau đó tạo lại hồ sơ phân phối. Tải xuống và cài đặt cả hai trên máy Mac của bạn. Đảm bảo bạn đã chọn đúng cấu hình trong cài đặt bản dựng Xcode và xây dựng lại ứng dụng của mình.
Giải pháp 5:
Trong trường hợp của tôi, tất cả các giải pháp được đề cập trong câu trả lời của accfews đều rất hữu ích nhưng không có giải pháp nào hiệu quả. Tôi đã giải quyết vấn đề của mình bằng cách thêm thư viện nhanh chóng của mình vào phần "Các nhị phân nhúng" trong phần "Chung" trong mục tiêu Dự án của tôi. Có lẽ điều này là do thực tế là tôi đã bao gồm khung nhanh chóng của mình trong không gian làm việc của mình? Bất cứ điều gì nó biên dịch ngay bây giờ! Hãy sẵn sàng Swift, tôi ở đây!
Đối với tôi, vấn đề là do Cơ quan Chứng nhận Quan hệ Nhà phát triển Apple Toàn cầu của tôi không hợp lệ.
Tải xuống từ đây: https://developer.apple.com/certification mượt / AppleWWDRCA.cer
Kéo và thả nó vào Keychain Access, làm sạch dự án và chạy.
Tôi đã có một dự án Obj-C nơi tôi bắt đầu thêm các tệp nguồn nhanh. Sau đây đã khắc phục sự cố cho tôi:
RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
EMBEDDED CONTENT CONTAINS SWIFT = YES
Tôi vừa tạo một dự án mới từ các mẫu Xcode 6.3 và so sánh các cài đặt dự án với dự án ban đầu cũ của tôi.
Hãy thử giữ Alt, sau đó chuyển đến Sản phẩm -> Làm sạch thư mục xây dựng ...
Hy vọng nó sẽ giúp được ai đó ..
Những lý do cho việc này xảy ra rất nhiều. Vừa trải qua một ngày cuối tuần vui vẻ để tìm ra một vấn đề khác gây ra điều này (thứ tự ký mã), tôi muốn tạo ra một câu trả lời tóm tắt mang tất cả các giải pháp có thể lại với nhau:
DerivedData
và Build
thư mục. Xem dưới Tùy chọn cho vị trí của DerivedData
. Build
nên có trong thư mục dự án của bạn.@executable_path/Frameworks
. Đó là những thứ dễ dàng. Nếu bạn đang thực hiện xây dựng dòng lệnh của riêng mình, bạn có thể đang tạo .ipa
các tệp của riêng mình để tải lên. Trong trường hợp đó, bạn cần đảm bảo những điều sau:
SwiftSupport/iphoneos
giống với phiên bản trongContents/YourApp.app/Frameworks
Vì Swift chưa tương thích nhị phân giữa các phiên bản, bạn phải đảm bảo các phiên bản này là phiên bản mà bạn đã xây dựng ứng dụng của mình. Bạn có thể tìm thấy các thư viện dưới /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
.codesign
các thư viện và tệp khung (dưới Frameworks
trong .app
thư mục) trước rồi ký toàn bộ .app
cây. Các .app
cây phải được ký kết với một entitlements.plist
nhưng không khung.Hy vọng khi Swift 3.0 xuất hiện và chúng tôi không còn cần phải bó Swift với các ứng dụng của mình thì toàn bộ vấn đề này sẽ biến mất.
Tôi gặp vấn đề này khi sử dụng chương trình huy động Ad Hoc (hoặc doanh nghiệp) với chứng chỉ sản xuất. Chuyển sang một chứng chỉ phát triển và huy động đã giải quyết vấn đề.
Dự án của tôi là một dự án Swift với một số lớp Objective-C. Tôi gặp vấn đề tương tự khi ký với chứng chỉ inHouse (doanh nghiệp) cũ.
Các bước sau đã sửa lỗi này cho tôi.
Runpath Search Paths
cài đặt bản dựng thành : $(inherited) @executable_path/Frameworks
. Giải pháp 6:
Trong trường hợp của chúng tôi, Giấy chứng nhận phân phối doanh nghiệp đã bị thu hồi. Tạo chứng chỉ mới và cập nhật hồ sơ cung cấp đã khắc phục sự cố.
(Dường như có nhiều nguyên nhân khác nhau gây ra lỗi này. Hy vọng điều này sẽ giúp được ai đó.)
Tôi đã đối mặt với cùng một vấn đề, thiết lập danh tính ký hiệu mã đúng đã giải quyết vấn đề (Xây dựng cài đặt-> Nhận dạng ký mã).
Theo câu hỏi kỹ thuật của Apple "Tất cả các chứng chỉ dành cho nhà phát triển iOS và doanh nghiệp được tạo sau khi iOS 8 được phát hành đều có trường Team ID mới ở vị trí thích hợp để cho phép các ứng dụng ngôn ngữ Swift chạy"
Nếu bạn thêm ba khung thông qua Binaries nhúng, chúng cũng sẽ được thêm vào Thư viện và Khung được liên kết. Xóa ba mục trong Khung và Thư viện được liên kết sẽ giải quyết vấn đề.
Các phương thức ma thuật như khởi chạy lại Xcode và khởi động lại máy Mac không hoạt động với tôi.
Thêm khung làm "nhị phân nhúng" thay vì chỉ "Thư viện và khung liên kết" - Đã sửa lỗi của tôi.
Tôi cũng đặt Nội dung được nhúng Chứa cờ Swift Code thành CÓ.
Nâng cấp lên phiên bản OS X mới nhất (Yosemite)
Sau nhiều giờ dùng thử & lỗi tôi đã đi đến giải quyết vấn đề này. - Nếu điều này áp dụng cho trường hợp của bạn tất nhiên.
Tôi gặp vấn đề tương tự cho đến khi tôi nâng cấp Mac OS X của mình từ Mavericks lên Yosemite. - Nó đã khắc phục vấn đề của tôi, hy vọng nó cũng sửa lỗi của bạn
Tôi đã thử tất cả các giải pháp tìm thấy trên web, bao gồm cả Apple và các chứng chỉ mới. Không thành công.
Cách duy nhất tôi có thể chạy xcode, sau 6 tháng thử, là tạo một tài khoản mới trên macbook của tôi.
Thông thường lỗi này sẽ biến mất nếu bạn thêm thư viện này vào phân đoạn "Sao chép tệp" trong Giai đoạn xây dựng.
Không có giải pháp nào trong số này dường như luôn phù hợp với tôi; sau mỗi lần chạy thành công, nó sẽ lại thất bại. Cờ "Nội dung được nhúng chứa Mã Swift" luôn được đặt thành CÓ cho tôi.
Hóa ra tôi đã đặt Xcode tương thích với 6.3. Thay đổi nó trở lại để tương thích 3.2 đã giải quyết nó:
Tôi cũng gặp vấn đề này, chỉ có điều nó không định vị được libswiftXCTest.dylib
.
Giải pháp là thêm XCTest.framework
vào mục tiêu Thử nghiệm, trong Build Phases/Link Binary with Library
. Tôi đã nhận được lỗi này ngay cả khi tôi đang cố gắng xây dựng mục tiêu chính.
Điều này xuất hiện khi tôi thêm mục tiêu mở rộng Today mới với ngôn ngữ Swift vào một dự án cũ. Sửa lỗi dễ dàng bằng cách cập nhật dự án vào các cài đặt được đề xuất. Xcode 6.0.1
Tôi gặp vấn đề tương tự khi sử dụng Mavericks, Xcode 6.1.1, thử nghiệm trên iPhone5 với iOS 8.1.1. Tôi đã thử tất cả các giải pháp có thể bao gồm chứng chỉ mới và hồ sơ cung cấp, nhưng không có gì giúp được. Tôi đã thực hiện các thay đổi Embedded Content Contains Swift Code
và Runpath Search Paths
cả ở cấp Dự án và cấp Mục tiêu.
Bây giờ tôi đã cài đặt Yosemite và không có thay đổi gì thêm, nó bắt đầu hoạt động.
otool