Thư viện khung OS X không được tải: 'Không tìm thấy hình ảnh'


279

Tôi đang cố gắng tạo một OS X Framework cơ bản, ngay bây giờ tôi vừa có một khung thử nghiệm được tạo: TestMacFramework.frameworkvà tôi đang cố gắng nhập nó vào một dự án Ứng dụng OS X hoàn toàn mới.

Tôi đã xây dựng tệp .framework và nhập nó vào dự án mới, Khung công tác có vẻ liên kết ổn và tôi có thể tham chiếu tệp tiêu đề công khai mà tôi đã thêm vào phần giai đoạn xây dựng khung.

Tuy nhiên, khi tôi cố chạy ứng dụng container, tôi gặp phải lỗi sau:

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

Sau một chút loay hoay, tôi nhận ra rằng tôi cần thêm một Copy Filesphần vào các giai đoạn xây dựng ứng dụng container của mình, vì vậy tôi đã thực hiện điều này và thiết lập nó như vậy ...

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

Tuy nhiên, tôi vẫn nhận được lỗi thời gian chạy. Tôi rõ ràng đang làm gì đó sai ở đây, nhưng tài nguyên thư viện của nhà phát triển Apple cho tài liệu tham khảo Xcode 2 này, vì vậy không hữu ích lắm!

Tôi đã bỏ lỡ những gì?

CẬP NHẬT:

Tôi có thể thấy trong nhật ký xây dựng rằng tôi TestMacFramework.frameworkđang được sao chép vào thư mục nội dung / khung công tác .app, nhưng nó không được cài đặt vào thư mục Thư viện / Khung trên HD

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

CẬP NHẬT 2:

Bản dựng liên kết chính xác nếu tôi sao chép thủ công TestMacFramework.frameworkvào Library/Frameworksthư mục


1
Điều gì otool -Lcho bạn biết nơi ứng dụng mong đợi để tìm khung?
trojanfoe

Được rồi, tôi đã tìm ra cách chạy nó ... Đây là đầu ra tôi nhận được cho thư viện của mình (tôi đã loại trừ các phụ thuộc khác, như Foundation, v.v.)/Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework (compatibility version 1.0.0, current version 1.0.0)
Sammio2

Cách khắc phục của tôi là Nhúng như nhị phân thư viện tôi cần (Alamofire). điều này có chấp nhận được không?
Cmag

2
Thật khó hiểu khi câu hỏi này được gắn thẻ rõ ràng là dành cho OS X và tất cả các câu trả lời, bao gồm cả câu hỏi được chấp nhận, đều dành cho iOS. Tôi có cùng một lỗi và không thể sử dụng bất kỳ câu trả lời nào.
RenniePet

@RenniePet Vì Xcode 7.3, quy trình này giống nhau đối với các khung công tác iOS và macOS, câu trả lời được chấp nhận là cách chính xác để thực hiện. Nếu bạn vẫn gặp vấn đề, nó có thể là một vấn đề không liên quan?
Sammio2

Câu trả lời:


552

[Xcode 11+]

Điều duy nhất cần làm là thêm khung vào General->Frameworks, Libraries And Embedded Contentphần trong Generaltab mục tiêu ứng dụng của bạn.

Đảm bảo bạn chọn tùy chọn 'Nhúng & Ký'.

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

[Xcode v6 -> Xcode v10]

Điều duy nhất cần làm là thêm khung vào Embedded binariesphần trong Generaltab mục tiêu ứng dụng của bạn.

Ảnh chụp màn hình từ Xcode


32
Đây là bước duy nhất cần thiết cho iOS.
nikolovski

7
Cảm ơn! Đã giải quyết nó cho tôi trên iOS.
dùng1244109

6
Cảm ơn bạn! Nó đã giúp tôi cho iOS
Alexander Khitev

4
Tôi sử dụng một lớp từ khung nhập khẩu của mình trong Storyboard và đã gặp lỗi này. Chỉ muốn thêm vào đó ngoài việc đặt LỚP tùy chỉnh trong Bảng phân cảnh, bạn cũng phải đặt trường MODULE.
Ruben Martinez Jr.

8
@ZevsVU Tôi không có Embedded binariesphần trong dự án macOS của mình. Chuyện gì vậy?
fnc12

56

Vì vậy, tôi đã quản lý để làm cho nó hoạt động, nó khá đơn giản khi bạn có hướng dẫn đúng. Thứ tôi đang tìm kiếm là một khung 'riêng tư' nằm trong gói Ứng dụng thay vì được ghi vào thư mục thư viện hệ thống.

Xây dựng khung

  1. Thêm mục tiêu để tạo Khung làm việc
  2. Trong mục tiêu đó 'Cài đặt bản dựng' định cấu hình 'Thư mục cài đặt' thành '@executable_path /../ Frameworks'
  3. Xây dựng thư viện và truy cập .framework từ thư mục lưu trữ hoặc sản phẩm

Bao gồm Khung

  1. Kéo tệp .framework đã tạo vào Dự án Xcode, đảm bảo đánh dấu 'Sao chép tệp vào thư mục'
  2. Trong mục tiêu chứa ứng dụng, thêm một 'Sao chép tập tin xây dựng giai đoạn'
  3. Đặt 'Đích' thành 'Khung'
  4. Kéo vào .framework đã tạo

1
Điều này cũng hoạt động cho các khung iOS. Khi thêm khung tùy chỉnh vào không gian làm việc để xây dựng cùng với nó. Bạn phải thêm phần Bao gồm Khung của giải pháp này để giải quyết lỗi này khi gỡ lỗi trên thiết bị!
cynistersix

1
Cảm ơn, đã làm việc cho iOS. Tôi đã không làm theo các bước đầu tiên của bạn vì các khung đã được xây dựng trong thư mục dữ liệu dẫn xuất của tôi
Gmeister4

Tuyệt vời! Cứu ngày freakin của tôi! 2017 - Xcode 8.3.2 Cảm ơn!
Glenn

Vì một số lý do kỳ lạ, bạn không thể kéo khung từ phần "Liên kết nhị phân với thư viện" mặc định sang phần "Khung nhúng" nhưng bạn có thể kéo khung từ danh sách Dự án ở bên trái. Bạn vẫn sẽ phải xóa thủ công khung từ phần "Liên kết nhị phân với thư viện" bằng nút "-".
William Cerniuk

18

Nó khá đơn giản đối với tôi, tôi chỉ cần thêm khung của mình vào các tệp nhị phân được nhúng trong các mục tiêu ứng dụng


15

Các tùy chọn ở trên không thể cho tôi bao gồm. Tôi đã giải quyết nó bằng cách chỉ định Đường dẫn tìm kiếm Runpath

Đây là trên tab ' Cài đặt bản dựng '. Trong phần ' Liên kết '. Thay đổi ' Đường dẫn tìm kiếm Runpath ' thành$(inherited) @executable_path/Frameworks


Tôi cần cả hai bước, bước này và để thêm 'Sao chép giai đoạn xây dựng tệp' với khung trước đó.
dùng23

Tôi đã có một dự án Xcode cũ đã được cập nhật dần dần và những cài đặt này bị thiếu đối với tôi. Đã thêm và hiện đang hoạt động như mong đợi.
Mattio

Trong số tất cả các giải pháp này, giải pháp này rất hiệu quả, thật khó chịu khi cách tiếp cận vấn đề giống như "được, hãy để tôi đi xuống danh sách tất cả các bài đăng stackoverflow này, vì nguyên nhân gốc không rõ ràng" APPLEEEEE
Ryan

9

Tôi gặp vấn đề tương tự nhưng giải pháp được chấp nhận không hiệu quả với tôi. Thay vào đó, giải pháp là sửa đổi tên cài đặt của khung.

Lỗi trong bài viết gốc là:

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

Lưu ý đường dẫn đầu tiên sau khi Thư viện không được tải . Khung đang được tải từ một đường dẫn tuyệt đối. Đường dẫn này xuất phát từ tên cài đặt của khung (đôi khi được gọi là rpath), có thể được kiểm tra bằng cách sử dụng:

otool -D MyFramework.framework/MyFramework

Khi một khung được nhúng vào một ứng dụng, đường dẫn này phải tương đối và có dạng này: @ rpath / MyFramework.framework / MyFramework . Nếu tên cài đặt của khung của bạn là một đường dẫn tuyệt đối, nó có thể không được tải trong thời gian chạy và một lỗi tương tự như ở trên sẽ được tạo ra.

Giải pháp là sửa đổi tên cài đặt:

install_name_tool -id "@rpath/MyFramework.framework/MyFramework" MyFramework.framework/MyFramework 

Với sự thay đổi này, tôi không còn nhận được lỗi



7

Không ai trong số những vấn đề này giải quyết điều này cho tôi. Vấn đề cuối cùng là khá dễ dàng. Có vẻ như đây là một lỗi Xcode khá lớn mà tôi đã ghi lại sự cố và khắc phục theo lỗi của Apple: 29820370. Nếu bạn đang vật lộn (vì có vẻ như có một vài trang vấn đề tương tự như vậy) thì thật tuyệt nếu bạn có thể đưa ra một lỗi về trình báo lỗi: https://ormsreport.apple.com/ và tham khảo lỗi tôi đã nêu để đạt được khả năng hiển thị. Tôi muốn làm cho Xcode trở lại niềm vui như trước đây - và đây là điều tôi chắc chắn Xcode nên tự sửa.

Đây là cách khắc phục: 1. Mở Keychain - đi tới Chứng nhận nhà phát triển toàn cầu của Apple. 2. Nhấp đúp chuột vào nó 3. Thay đổi mức cấp phép từ "luôn tin tưởng" để sử dụng Mặc định hệ thống 4. Lưu và đóng nó 5. Khởi động lại Xcode, Làm sạch và xây dựng dự án của bạn và nó sẽ biến mất.

Ảnh chụp màn hình bên dưới các cài đặt chính xác: Cố định truy cập Keychain Hy vọng điều này sẽ giúp!


2
"Mặc định hệ thống sử dụng" dường như là cài đặt tiêu chuẩn.
Raphael

Không phải lúc nào - một cái gì đó dường như thay đổi nó dẫn đến sai lầm đó
UKDataGeek

Cảm ơn điều này đã khắc phục vấn đề của tôi là tốt! Thật không may, tôi không thể nhìn thấy vé của bạn trên trình theo dõi lỗi để cung cấp thêm khả năng hiển thị cho nó. Tôi không chắc tại sao, nó không hiển thị bất kỳ lỗi nào ở đó.
Jim

7

Mã số 11:

trong Xcode 11 thêm khung vào General->Frameworks, Libraries And Embedded Content

Sau khi thêm hãy chắc chắn rằng bạn chọn Embed & Signtùy chọn

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


2
nếu bạn làm điều này thì bạn sẽ không thể tải lên ứng dụng của mình trên cửa hàng ứng dụng
Mahendra

@Mahendra, bạn sử dụng phương án nào trong trường hợp này? Tôi đã có một vấn đề tương tự.
Derryl Thomas

@DerrylThomas, Ứng dụng vẫn đang ở chế độ phát triển nên đã không kiểm tra trường hợp này
Mahendra

1
@Mahendra, vui lòng chia sẻ ở đây trong trường hợp bạn tìm thấy một sự thay thế cho việc này. Tôi rất biết ơn.
Derryl Thomas

@DerrylThomas Trong khi tạo lưu trữ, khôi phục lại, tùy chọn Không nhúng và tạo tệp thực thi để tải lên cửa hàng ứng dụng.
BlackPearl12

6

Khi bạn kéo khung tùy chỉnh vào dự án theo Xcode 10.1 , nó giả định rằng khung đó là khung hệ thống và đặt khung vào phần "Liên kết nhị phân với thư viện" trong mục "Xây dựng giai đoạn" trong mục tiêu của bạn.

Các khung hệ thống đã có trên thiết bị nên không được sao chép vào thiết bị và do đó không thể thực thi trong thời gian chạy vì vậy KABOOM (gặp sự cố trong __abort_with_payload và lỗi không thể tìm thấy: "Lý do: không tìm thấy hình ảnh"). Điều này là do mã khung không được sao chép vào thiết bị ...

Trong thực tế, để có cả Xcode liên kết khung tùy chỉnh và đảm bảo rằng nó được sao chép cùng với mã của bạn sang thiết bị iOS (thực hoặc giả lập), khung tùy chỉnh cần phải được chuyển sang "Sao chép tài nguyên gói". Điều này cuối cùng đóng gói khung cùng với mã thực thi của bạn để có sẵn trên thiết bị.

Để thêm khung tùy chỉnh cho dự án và tránh sự cố của Apple:

  1. Kéo khung tùy chỉnh vào danh sách tệp dự án iOS của bạn
  2. Nhấp vào ProjectName trong Bộ điều hướng -> TargetName -> "Xây dựng giai đoạn" -> Liên kết nhị phân với thư viện tiết lộ
  3. Kéo khung tùy chỉnh ra và xuống phần "Sao chép tài nguyên gói" bên dưới (Xcode hiện di chuyển tham chiếu khung, được sửa trong Xcode 10)
  4. Chạy trong trình giả lập hoặc thiết bị

Do đó, khung tùy chỉnh được sao chép cùng với mã của bạn vào thiết bị đích của bạn và có sẵn khi chạy.

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

[biên tập: bạn sẽ nghĩ Xcode đủ thông minh để tìm ra sự khác biệt giữa một trong các khung hệ thống không cần sao chép vào thiết bị và khung tùy chỉnh, ồ tôi không biết, trong hệ thống phân cấp thư mục gốc của dự án ... 🙄]


5

Cần có một 'Chạy tập lệnh' thành 'Xây dựng giai đoạn' với điều này: '/ usr / local / bin / carthage copy-frameworks'

Trên 'Tệp đầu vào' của 'Chạy tập lệnh' đó, bạn nên thêm đường dẫn vào thư viện của mình. Như thế này:

Xây dựng giai đoạn Run Script


4

Nếu bạn vô tình đặt lại móc khóa của mình, điều này có thể xảy ra do thiếu chứng chỉ Apple trong móc khóa. Tôi làm theo điều này để giải quyết vấn đề của tôi.

Tôi gặp vấn đề tương tự và đã có thể khắc phục bằng cách tải xuống lại WWDR (Cơ quan chứng nhận quan hệ nhà phát triển toàn cầu của Apple). Tải xuống từ đây: http://developer.apple.com/certificationmasterity/AppleWWDRCA.cer


Điều này cũng giải quyết vấn đề của tôi. Nhớ làm sạch thư mục xây dựng trước khi biên dịch lại.
Justin Milo

4

Nếu bạn đang sử dụng Xcode 11 , hãy đảm bảo rằng bạn đã thêm khung trong Khung, Thư viện và Nội dung nhúng trong Cài đặt mục tiêu - Chung. Thay đổi trạng thái Nhúng từ - 'Không nhúng' thành 'Nhúng & Đăng nhập'


Nhưng điều này sẽ gây ra lỗi Hỗ trợ Swift không hợp lệ cho ITMS-90206 khi bạn phân phối cho App Store. Nó chỉ hoạt động trong Phát triển.
Raptor

2

Có gì giải quyết nó đối với tôi là thay đổi abstract_targetđể targetcho mục tiêu chính trong Podfile tôi. Trước đây tôi đã đặt nó abstract_targetvà điều này gây ra lỗi được mô tả. Bây giờ nó hoạt động như một bùa mê


1

Đối với Xcode 8, một số sản phẩm cũ sẽ bị xóa khỏi thư mục dữ liệu dẫn xuất tham khảo giải pháp này .

Apple: Trong macOS 10.12 trở lên, Xcode sẽ dọn sạch dữ liệu có nguồn gốc cũ, các tiêu đề được biên dịch trước và bộ đệm mô-đun. (23282174)

Hệ thống xây dựng Xcode hỗ trợ loại bỏ tệp cũ của một số loại tạo phẩm xây dựng đã được tạo trong bản dựng trước đó, nhưng sau đó đã bị xóa khỏi dự án.

Dựa trên suy nghĩ của tác giả, tôi đã tìm thấy nhật ký xây dựng này từ trường hợp của tôi.

Remove stale build products

/bin/rm -rf /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks/AliyunVodPlayerSDK.framework
/bin/rmdir /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks

Sau khi tạo một giai đoạn sao chép tệp mới và sao chép khung mục tiêu vào đích của Khung , nhật ký xóa ở trên sẽ biến mất sau khi xây dựng lại.

Chỉ cần làm rõ tình hình và lý do của tôi, hy vọng nó hữu ích cho ai đó.


1

Đối với tôi đây là giải pháp, sau nhiều giờ tìm kiếm !!

Vì một số lý do, trong quá trình phát triển Khung tùy chỉnh Swift 2.3, Xcode 8 đã xóa DYLIB_INSTALL_NAME_BASEcài đặt khỏi project.pbxprojtệp. Một chút đi vào Build Settings / Dynamic Library Install Name Basethiết lập trở lại để @rpathsửa nó.

(từ https://forums.developer.apple.com/thread/4687 )


0

Tôi thấy rằng vấn đề này chỉ liên quan đến việc ký mã và chứng chỉ không phải là mã. Để xác minh điều này, hãy tạo ứng dụng xem đơn cơ bản và thử chạy nó mà không có bất kỳ thay đổi nào đối với thiết bị của bạn. Nếu bạn thấy loại lỗi tương tự, điều này cho thấy mã của bạn vẫn ổn. Giống như tôi bạn sẽ thấy rằng chứng chỉ của bạn không hợp lệ. Tải xuống tất cả một lần nữa và sửa chữa bất kỳ cái nào đã hết hạn. Sau đó, khi bạn nhận được ứng dụng cơ bản để không báo cáo lỗi, hãy thử lại ứng dụng của bạn sau khi thoát Xcode và có thể khởi động lại máy mac của bạn để có biện pháp tốt. Điều đó cuối cùng đã chấm dứt cơn ác mộng này. Rất có thể điều này không liên quan gì đến mã của bạn, đặc biệt nếu bạn nhận được thông báo Xây dựng thành công khi bạn cố chạy nó. FYI


0

Gặp sự cố khi dùng thử Xcode 9 beta và quay lại Xcode 8. Làm sạch đơn giản trên mục tiêu đã giải quyết vấn đề.


0

Tôi đã có cùng một vấn đề vì một lý do khác nhau. Tôi đã tạo một cấu hình mới để Gỡ lỗi và Phát hành (trong DỰ ÁN -> tab Thông tin -> Cấu hình). Và tôi đã phải thay đổi tập lệnh shell khung pod của mình (Pods- "appName" -frameworks.sh, bên dưới Tệp mục tiêu hỗ trợ) để làm cho nó hoạt động.

[Xcode 9]


0

Điều duy nhất làm việc cho tôi:

Mục tiêu> Giai đoạn xây dựng> [CP] Khung nhúng Pods Bỏ chọn "Hiển thị các biến môi trường trong nhật ký xây dựng" và "Chỉ chạy tập lệnh khi cài đặt"


0

Tôi đã thử nhiều bản sửa lỗi, nhưng điều làm việc cho tôi là xóa một mục tiêu bị thiếu được liệt kê trong tab xây dựng của sơ đồ xây dựng. Bạn có thể lấy nó bằng cách mở cửa sổ chỉnh sửa của lược đồ hiện tại.

Chỉnh sửa: Mục tiêu kiểm tra giao diện người dùng của tôi không hoạt động tốt và giải pháp tôi tìm thấy là xóa nó và tạo lại nó.


0

mở xcode -> chung -> Các nhị phân nhúng -> thêm QBImagepicker.framework và RSKImageCropper -> làm sạch dự án

chỉ cần thêm QBImagePicker.framework và RSKImageCropper.framework tại các nhị phân nhúng làm việc cho tôi


0

Tôi nghĩ rằng không có cách cố định để giải quyết vấn đề này vì nó có thể được gây ra bởi lý do khác nhau. Tôi cũng gặp vấn đề này vào tuần trước, tôi không biết chính xác nguyên nhân gây ra sự cố này khi nào và chỉ khi tôi chạy nó trên trình giả lập bằng Xcode hoặc thử cài đặt nó vào điện thoại, sau đó nó báo lỗi như vậy, nhưng khi tôi chạy nó với run-ios bản địa với terminal, không có vấn đề gì.

Tôi đã kiểm tra tất cả các cách được đăng trên internet, như gia hạn chứng chỉ, thay đổi cài đặt trong Xcode (tất cả các cách đề cập ở trên), thực sự tất cả các cài đặt trong Xcode đã được đặt theo yêu cầu trước đó, không có cách nào phù hợp với tôi. Cho đến sáng nay khi tôi xóa các pod và cài đặt lại, lỗi cuối cùng sẽ xảy ra sau một tuần. Nếu bạn cũng đang sử dụng cocoapod và sau đó lỗi chỉ xuất hiện mà không có lý do cụ thể, có lẽ bạn có thể thử theo cách của tôi.

  1. Kiểm tra phiên bản cocoapods của tôi.
  2. Cập nhật nó nếu có phiên bản mới có sẵn.
  3. Chuyển đến thư mục dự án của bạn, xóa Podfile.lock, tệp Pods, dự án xcworkspace.
  4. Chạy cài đặt pod

0

Tôi gặp vấn đề đó chỉ khi chạy trên thiết bị thực (iPhone SE). Trên dự án giả lập làm việc như mong đợi.

Tôi đã thử tất cả các bản sửa lỗi từ chính chủ đề này và từ đây . Không ai trong số họ làm việc cho tôi.

Đối với tôi, vấn đề đã được giải quyết sau khi khởi động lại iPhone (sic!).

Tôi đã làm:

  • xây dựng thư mục sạch sẽ,
  • làm sạch dữ liệu
  • xóa ứng dụng khỏi thiết bị,
  • khởi động lại thiết bị

Và cuối cùng nó cũng hoạt động. :)

Nếu mọi giải pháp khác không thành công, đừng quên thử.


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.