dyld: Thư viện không được tải: @ rpath / libswiftCore.dylib / Không tìm thấy hình ảnh


77

Tôi đang chạy ứng dụng của mình từ xcode đến thiết bị iOS và tôi nhận được điều này và màn hình đen trên thiết bị iOS.

Văn bản bảng điều khiển:

dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/10DB2FE8-EF09-4857-B4AC-0DB2E4419D6F/App-Name.app/App-Name           
Reason: image not found        
(lldb)

Đã thêm ảnh chụp màn hình


Những khuôn khổ nào sử dụng? IOS nào đang chạy trên thiết bị của bạn?
return true

@return true - iOS 8 Tôi có các khung sau trong trò chơi của mình: UIKit, AdSupport, CoreGraphics, AudioToolbox, AVFoundation, CoreTelephony, MessageUI, SystemConfiguration, Accelerate, Foundation, SpriteKit. Viết xuống tất cả trong số họ: D
Stig Omdal


Tôi đã gặp sự cố này sau khi chuyển sang một máy mac mới. Nguyên nhân là do thiếu chứng chỉ trung gian WWDR của apple.
Morten Holmgaard,

trong một thiết bị thực, tôi đã thử nghiệm toàn bộ các cách và không nhận được câu trả lời, nhưng cuối cùng tôi đã xóa cacaoPod khỏi dự án của mình và cài đặt lại nó một lần nữa, vấn đề đã được giải quyết và ứng dụng của tôi chạy trong thiết bị !! đây là câu trả lời loại bỏ cacaoPod: stackoverflow.com/a/34765245/2201814
MHSFisher

Câu trả lời:


90

Hãy thử thêm dòng sau vào Đường dẫn tìm kiếm Runpath của mục tiêu của bạn.

@executable_path/Frameworks

your_target -> Cài đặt bản dựng -> Liên kết -> Đường dẫn tìm kiếm Runpath


53
trong tôi Runpath Search Paths tôi đã có này theo mặc định
SP Balu Kommuri

3
đã giải quyết! cảm ơn! Tôi cũng sẽ đề nghị làm sạch dự án:shift + cmd + k
ric

Trong trường hợp của tôi, lỗi này đã xảy ra sau khi tôi hợp nhất trong một chi nhánh khác mà tôi đã tạo Tiện ích mở rộng Hôm nay (Widget). Sau xung đột hợp nhất, đường chạy cho mục tiêu tiện ích con được hợp nhất của tôi đã bị hỏng bằng cách nào đó và không chứa đường chạy thích hợp. Khi quay trở lại phần hợp nhất trước tiện ích, tôi nhận thấy nó có hai đường chạy sau: @executable_path/Frameworks @executable_path/../../Frameworks(ngoài $(CONFIGURATION_BUILD_DIR))
Sti

Trong trường hợp của tôi, tôi đã tạo hai mục tiêu và tôi đã thêm tệp Swift, tệp này tạo tệp tiêu đề bắc cầu và một số cấu hình, nhưng tôi chỉ đánh dấu nó là thành viên của một mục tiêu. Mục tiêu đầu tiên hoạt động bình thường, nhưng mục tiêu thứ hai thì không, và tôi nhận thấy rằng sự khác biệt trong cài đặt xây dựng là cài đặt này: Đường dẫn tìm kiếm Runpath -> $ (kế thừa) và @ thi hành_path / Frameworks Và tôi cũng cần tham khảo Objective-C Bridging Header để tệp đã được tạo trước đó. Sau khi thêm hai cài đặt này, mục tiêu thứ hai bắt đầu hoạt động bình thường.
Diego Carrera

50

tôi đã có vấn đề tương tự. Tôi đã thêm khuôn khổ vào các vị trí sau:

  1. General > Embedded Binaries
  2. General > Linked Frameworks and Libraries
  3. Build Phases > Link Binaries with Libraries

Các mã nhị phân được nhúng dường như là chìa khóa cho tôi.


3
Nhúng Binaries! Đó dường như là chìa khóa mất tích từ nhiều câu trả lời khác nhìn thấy ở đây đối với tôi
bitwit

Sự cố này đã xảy ra khi tham khảo "SharedCode.framework" của tôi. Thêm .framework trong ứng dụng Target> General> "Embedded Binaries" đã giải quyết được vấn đề.
Alphonse R. Dsouza

29

Đối với tôi giúp thêm @executable_path/Frameworksvào dự án Đường dẫn tìm kiếm Runpath, không phải mục tiêu. nhập mô tả hình ảnh ở đây your_project -> Cài đặt bản dựng -> Liên kết -> Đường dẫn tìm kiếm Runpath


15

Không có giải pháp nào khác giúp được tôi, nhưng mọi thứ đã được khắc phục bằng cách xóa thư mục Dữ liệu gốc của Xcode .


Vâng, điều này đã làm việc cho tôi. Trước đây tôi chỉ xóa dữ liệu dẫn xuất cho dự án cụ thể, nhưng cần xóa thư mục dữ liệu dẫn xuất của Xcode. Cảm ơn bạn.
vikzilla

6
Đâu là nguồn gốc dữ liệu ?
JW.ZG

2
DerivedData thư mục có thể được tìm thấy tại Xcode -> Preferences -> Địa điểm sau đó nhấp vào mũi tên để đưa bạn đến thư mục
Caroline

13

Ồ vâng. Tôi đã đối mặt với vấn đề đó và dành hàng giờ để tìm giải pháp Bạn có thể thử đặt "Thư viện chuẩn Swift luôn nhúng" thành "Có" trong Cài đặt bản dựng> Tùy chọn bản dựng

dyld: Thư viện không được tải: @ rpath / libswiftCore.dylib

(đừng quên chuyển + cmd + K dự án của bạn sau)


2
Cảm ơn, "(đừng quên chuyển + cmd + K dự án của bạn sau)" đề xuất phù hợp với tôi :)
Saleh Enam Shohag

11

Tôi đã phải chuyển 'Nội dung nhúng có chứa mã Swift' thành 'Có' để ứng dụng obj-C của mình hoạt động sau khi cập nhật khung nhúng obj-C với đối tượng Swift.


10

Trong Mục tiêu khung ( không phải mục tiêu ứng dụng ), hãy chuyển đến Cài đặt bản dựng> Tùy chọn bản dựng> Luôn nhúng Thư viện Swift tiêu chuẩn thành CÓ.

Điều này đã giải quyết vấn đề cho tôi!


1
Hoạt động đối với tôi, nhưng sau khi đặt Thư viện Swift Tiêu chuẩn Luôn Nhúng thành CÓ. Cần xây dựng sạch sẽ (shift + cmd + K).
Saleh Enam Shohag

9

Tôi đã gặp lỗi này trong một dự án dòng lệnh (Xcode 10.2 và macOS 10.14.3)

Giải pháp là cập nhật lên macOS 10.14.4

Các dự án dòng lệnh Swift sẽ không chạy trên macOS 10.14.3 trở về trước trừ khi bạn cài đặt gói Hỗ trợ thời gian chạy Swift 5 cho Công cụ dòng lệnh. Nếu không có gói đó, các dự án dòng lệnh Swift sẽ gặp sự cố khi khởi chạy với lỗi “dyld: Library not load”. (46824656)

Từ Ghi chú phát hành Swift 5 cho Xcode 10.2


CÁi này đã sửa nó giúp tôi. Thậm chí không thể chạy ứng dụng dòng lệnh vani mà không có lỗi dlyd.
RobertJoseph

Đây cũng là giải pháp cho tôi. Tôi đã gặp lỗi này trên một dự án Swift hoàn toàn mới (hello world) với phiên bản hệ điều hành 10.14.3. Đã nâng cấp lên 10.14.4 và nó hoạt động.
Ross Tajvar

7

Trong trường hợp của tôi, sự cố này xảy ra trong dự án Objective-c mà tôi đang sử dụng khung Swift (AirWatch SDK).

Giải pháp: Tôi đã giải quyết vấn đề này với Xcode 9.3 và 11.0.1 iOS như đã đề cập ở các bước dưới đây:

  1. Kéo và thả khung công tác nhanh của bạn trong dự án của bạn và di chuyển trong thư mục Khung công tác mặc định của dự án của bạn.
  2. Sau đó, thêm chúng dưới dạng mã nhị phân nhúng như được hiển thị trong ảnh chụp màn hình.
  3. Thay đổi trạng thái khung của bạn từ Bắt buộc thành Tùy chọn như được hiển thị trong ảnh chụp màn hình. (Xây dựng giai đoạn> Liên kết nhị phân với Thư viện)

nhập mô tả hình ảnh ở đây

  1. Đặt Thư viện chuẩn Swift luôn nhúng thành trong cài đặt bản dựng của bạn.

  2. Đặt Subpath và chọn đích làm Framework cho khung đã thêm của bạn trong Build Phases> Embed framework như được hiển thị trong ảnh chụp màn hình. nhập mô tả hình ảnh ở đây

Hy vọng nó sẽ giúp ích cho ai đó.


Nếu chúng ta tạo khuôn khổ là Tùy chọn thì các lớp khuôn khổ mà chúng ta truy cập trong mã là con số không. Bạn có bất kỳ giải pháp cho điều này?
Vijay

Bạn có thể vui lòng cho biết, làm thế nào bạn có được SDK AirWatch này? Tôi gặp rắc rối với nó. đây là câu hỏi của tôi: stackoverflow.com/questions/53023149/…
Alex

Cảm ơn !, đây là giải pháp duy nhất phù hợp với tôi! +1
akdsouza

@akdsouza Rất vui khi nghe :)
Aashish1aug

5

Tôi đã gặp phải vấn đề tương tự, việc đặt danh tính ký mã phù hợp đã giải quyết được vấn đề (Cài đặt bản dựng-> 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ỉ nhà phát triển iOS tiêu chuẩn và doanh nghiệp được tạo sau khi iOS 8 được phát hành đều có trường ID nhóm mới ở vị trí thích hợp để cho phép các ứng dụng ngôn ngữ Swift chạy"


5

Tôi đã khắc phục bằng cách xóa tất cả khỏi thư mục Dữ liệu lấy từ Xcode:

~ / Library / Developer / Xcode / DerivedData

Chúc tất cả may mắn!


3

Tôi đã gặp thông báo lỗi tương tự, đó là cách tôi đã giải quyết nó:

Vấn đề đến từ các chứng chỉ được tạo tự động bởi Xcode. Tôi đã phải thu hồi các chứng chỉ này dans tạo chúng trở lại từ developer.apple.com

Sau đó, giải pháp là: - Truy cập developer.apple.com / Certificates -> Thu hồi chứng chỉ HOẶC vào Xcode> tùy chọn> tài khoản> Xem chi tiết> chọn Đăng ký nhận dạng> thiết lập sáo ngữ> thu hồi - Phải truy cập vào Developper.apple.com và làm theo hướng dẫn để tạo chứng chỉ mới - Trong Xcode trong dự án của tôi: đi tới Nhận dạng ký mã và ký vào cả hai dòng Gỡ lỗi bằng chứng chỉ đã tạo - Cả hai dòng phát hành được đặt thành "Nhà phát triển iOS" - Sau đó dự án> sạch - Xây dựng và chạy trên thiết bị


3

@ Saikiran's đã trả lời hiệu quả.

Chứng chỉ của tôi đã được tạo trước khi iOS 8 được phát hành. Tôi đã thu hồi tất cả các chứng chỉ của mình và tạo lại tất cả các hồ sơ cấp phép và nó giải quyết vấn đề của tôi ngay lập tức.

Tôi không có đủ danh tiếng để bình chọn câu trả lời của @ Saikiran, nhưng điều đó chắc chắn đã giúp giải quyết vấn đề.


3

Thông báo lỗi này cũng có thể xảy ra khi sử dụng bản dựng khung trong một phiên bản Swift khác, sau đó là bản hiện đang được sử dụng, ví dụ: nếu bạn nâng cấp Xcode.


Tôi đã thử mọi tình huống có thể được thảo luận ở khắp mọi nơi, nhưng dường như không có gì hiệu quả, tôi khẳng định rằng khung công tác tôi đang sử dụng được xây dựng trên phiên bản Swift khác nhau, nhưng tôi không chắc đó có phải là vấn đề hay không. Tôi sẽ thử xây dựng lại khung cho phiên bản Swift mới hơn và sẽ chia sẻ trạng thái ở đây.
Faran Rasheed

Tôi nghĩ đó là trường hợp của tôi - đang sử dụng Xcode 9.2 với khung sử dụng Swift 4.1 cần Xcode 9.3.
Fenix ​​Voltres

2

Đối với tôi đã làm việc thiết lập tùy chọn

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES

thành CÓ trong Project -> Build Settings -> Build Options

(Khung Namirial thông qua Cocoapods)


2

Không có giải pháp nào ở trên phù hợp với tôi. Tôi đã thay đổi cài đặt tin cậy Chứng chỉ nhà phát triển iPhone trong Chuỗi khóa. Nó phải là Luôn tin tưởng . Thay đổi nó thành Sử dụng mặc định hệ thống . Nhấp đúp vào chứng chỉ trong Chuỗi khóa để mở màn hình tùy chọn Đã phát hiện ra rằng từ blog này


Thay đổi để Use System Defaultsgiải quyết vấn đề này cho tôi.
Ngoan Nguyen

Mine là đã "Sử dụng System Defaults" và vẫn không hoạt động
Stefan

1

Tôi đã gặp thông báo lỗi tương tự, đây là cách tôi giải quyết nó: Điều này xảy ra vì tôi đã thay đổi mã nhận dạng gói, vì vậy tôi chỉ đặt id gói cũ và nó bắt đầu hoạt động trở lại


1

Tôi đã đặt Đường dẫn Tìm kiếm Runpath một cách chính xác, nhưng nó vẫn không hoạt động. Câu trả lời của @Justin Domnitz đã đưa tôi đi đúng hướng: Đặt "Thư viện tiêu chuẩn luôn nhúng Swift" thành Có trong cài đặt xây dựng của mục tiêu đã thực hiện một mẹo nhỏ đối với tôi.


1

Có vẻ như vấn đề này là do việc đưa tệp Swift vào khung tùy chỉnh aim-c. Cũng không chắc liệu có liên quan không nhưng mục tiêu ứng dụng của tôi cũng được xây dựng trong mục tiêu-c. Cũng đang xây dựng để giả lập trong gỡ lỗi. Chưa được xác minh cho bản phát hành hoặc bản lưu trữ.
Ngoài ra, Cài đặt Tìm kiếm Runpath cho mục tiêu dự án đã được đặt thành "@ executable_path / Frameworks", trong cài đặt đích cho khuôn khổ, chúng được đặt thành: "@ execute_path / Frameworks" và "@ loader_path / Frameworks".

Sau khi đã thử xây dựng lại khung tùy chỉnh và gắn lại với mục tiêu ứng dụng, xóa thư mục dữ liệu dẫn xuất và một vài đề xuất khác, điều cuối cùng làm việc với tôi là thay đổi cài đặt xây dựng trong mục tiêu Dự án cho dự án khung tùy chỉnh (không phải mục tiêu ứng dụng): "Luôn Nhúng Swift Thư viện tiêu chuẩn "thành" CÓ ". Có vẻ như cài đặt cho mục tiêu ứng dụng được đặt thành không quan trọng. Tôi đã xác minh điều này bằng cách đặt lại trình mô phỏng và xây dựng lại. Điều này tương tự với câu trả lời của Daniele Ceglia nhưng tôi không thể thêm nhận xét và muốn cung cấp rõ ràng hơn.



1

Tôi cũng gặp sự cố như vậy. Tất cả các cách khác đều không thể giúp được tôi, vì vậy tôi đã thực hiện theo cách ngu ngốc là tạo dự án mới và cài đặt pod từ đầu và sau khi xác nhận rằng nó hoạt động bình thường, tôi đã sao chép tất cả các tệp lớp và tệp bảng phân cảnh, cuối cùng đã hoàn thành ! Tôi nghĩ đó là cách cuối cùng cho nó, có lẽ có thể giúp bạn


1

Tôi đã gặp sự cố tương tự trong một dự án Objective-C, nơi tôi bắt đầu đưa vào các tệp Swift.

Trong trường hợp của tôi, tôi đã tạo hai mục tiêu trong dự án chính và tôi đã thêm tệp trống Swift, tệp này tạo tệp tiêu đề bắc cầu và một số cấu hình, nhưng tôi chỉ đánh dấu nó là thành viên của một mục tiêu. Mục tiêu đầu tiên hoạt động bình thường, nhưng mục tiêu thứ hai thì không, và tôi nhận thấy rằng sự khác biệt trong cài đặt xây dựng là cài đặt này:

Đường dẫn tìm kiếm Runpath -> $(inherited)@executable_path/Frameworks

Và tôi cũng cần tham chiếu Objective-C Bridging Header tới tệp đã được tạo trước đó:

Tiêu đề cầu nối Objective-C -> pathTo/Target-Bridging-Header.h

Sau khi thêm hai cài đặt này, mục tiêu thứ hai bắt đầu hoạt động bình thường.


1

Hãy thử dọn dẹp thư mục xây dựng, tôi cũng gặp vấn đề tương tự và tôi đã giải quyết nó theo cách này: Sản phẩm -> Thư mục bản dựng sạch



0

Tôi đã thử một loạt các trường hợp ở trên và nó dường như không giải quyết được vấn đề của tôi. Tôi sử dụng git và cocoapods cho một dự án và lỗi đã biến mất ngay khi tôi thực hiện cam kết mới.


0

Tôi đã gặp sự cố này trước đây trong iPod touch iOS 9.3. Và tôi đã sử dụng tất cả các phương pháp được đề cập trong bài đăng này , nhưng không có phương pháp nào hoạt động. Tôi đã kiểm tra cài đặt dự án của mình. Và trong cờ liên kết khác, tôi thấy mình đã thêm-Wl,-sectcreate,__RESTRICT,__restrict,/dev/null .

Cờ này ngăn không cho chèn dyld vào điện thoại đã bẻ khóa. Khi tôi xóa cờ này, ứng dụng có thể được khởi chạy lại. Tôi không chắc tại sao nó hoạt động. Bởi vì trong iPhone se iOS 10 tôi không phải xóa dòng này. Nhưng nó đã hoạt động trong iPod touch iOS 9.3. Vì vậy, hãy kiểm tra xem bạn có gặp trường hợp giống tôi không nhé.


0

Vui lòng kiểm tra * .framework Nếu có thư mục khung chữ ký _CodeSignature. Nếu không có thư mục _CodeSignature, Điều hướng đến Giai đoạn xây dựng, nhấp vào + để thêm Giai đoạn tệp sao chép mới để tạo tệp sao chép. sau đó, tham khảo * .framework và chọn Bản sao đăng nhập mã

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.