Perpustakaan Kerangka OS X tidak dimuat: 'Gambar tidak ditemukan'

279

Saya mencoba membuat Kerangka OS X dasar, saat ini saya hanya memiliki kerangka uji coba dibuat: TestMacFramework.frameworkdan saya mencoba untuk mengimpornya ke proyek Aplikasi OS X baru.

Saya telah membangun file .framework dan mengimpornya ke proyek baru, Kerangka kerja tampaknya menghubungkan apa-apa, dan saya dapat merujuk file header publik yang saya tambahkan ke bagian fase membangun kerangka.

Namun, ketika saya mencoba menjalankan Aplikasi kontainer saya mendapatkan Galat berikut:

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

Setelah sedikit googling saya menyadari saya perlu menambahkan Copy Filesbagian ke fase membangun aplikasi kontainer saya, jadi saya telah melakukan ini dan mengaturnya seperti ...

masukkan deskripsi gambar di sini

Namun, saya masih mendapatkan kesalahan runtime. Saya jelas-jelas melakukan sesuatu yang salah di sini, tetapi sumber pustaka pengembang Apple untuk referensi ini Xcode 2, jadi tidak sangat membantu!

Apa yang saya lewatkan?

MEMPERBARUI:

Saya dapat melihat di build log bahwa saya TestMacFramework.frameworksedang disalin ke direktori .app content / frameworks, tetapi tidak diinstal ke direktori Library / Frameworks di HD

masukkan deskripsi gambar di sini

PEMBARUAN 2:

Membangun tautan dengan benar jika saya menyalin secara manual TestMacFramework.frameworkke Library/Frameworksdirektori

Sammio2
sumber
1
Apa yang otool -Lmemberitahu Anda tentang di mana aplikasi mengharapkan menemukan kerangka kerja?
trojanfoe
Oke, saya tahu cara menjalankannya ... Ini adalah output yang saya dapatkan untuk perpustakaan saya (saya sudah mengecualikan dependensi lain, seperti Foundation, dll)/Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework (compatibility version 1.0.0, current version 1.0.0)
Sammio2
Perbaikan saya adalah Menanam sebagai binari perpustakaan yang saya butuhkan (Alamofire). Apakah ini dapat diterima?
Cmag
2
Sangat membingungkan bahwa pertanyaan ini ditandai dengan jelas sebagai untuk OS X, dan semua jawaban, termasuk yang diterima, adalah untuk iOS. Saya memiliki kesalahan yang sama, dan tidak dapat menggunakan jawaban apa pun.
RenniePet
@RenniePet Karena Xcode 7.3 prosesnya sama untuk iOS dan kerangka kerja macOS, jawaban yang diterima adalah cara yang benar untuk melakukannya. Jika Anda masih mengalami masalah, itu mungkin masalah yang tidak terkait?
Sammio2

Jawaban:

553

[Xcode 11+]

Satu-satunya hal yang harus dilakukan adalah menambahkan kerangka kerja ke General->Frameworks, Libraries And Embedded Contentbagian di Generaltab target aplikasi Anda.

Pastikan Anda memilih opsi 'Sematkan & Masuk'.

masukkan deskripsi gambar di sini

[Xcode v6 -> Xcode v10]

Satu-satunya hal yang harus dilakukan adalah menambahkan kerangka kerja ke Embedded binariesbagian di Generaltab target aplikasi Anda.

Tangkapan layar dari Xcode

Kappe
sumber
32
Ini adalah satu-satunya langkah yang diperlukan untuk iOS.
nikolovski
7
Terima kasih! Memecahkannya untuk saya di iOS.
user1244109
6
Terima kasih! Ini membantu saya untuk iOS
Alexander Khitev
4
Saya menggunakan kelas dari kerangka kerja impor saya di Storyboard dan mengalami kesalahan ini. Hanya ingin menambahkan itu selain mengatur CLASS Kustom di Storyboard, Anda juga harus mengatur bidang MODULE.
Ruben Martinez Jr.
8
@ZevsVU Saya tidak memiliki Embedded binariesbagian dalam proyek macOS saya. Apa yang salah?
fnc12
56

Jadi saya berhasil membuatnya bekerja, cukup sederhana ketika Anda memiliki instruksi yang tepat. Apa yang saya cari adalah kerangka kerja 'pribadi' yang hidup di bundel Aplikasi alih-alih ditulis ke folder pustaka sistem.

Membangun Kerangka

  1. Tambahkan target untuk membuat Kerangka Kerja Kakao
  2. Di dalam target itu, 'Bangun Pengaturan' mengonfigurasi 'Direktori Instalasi' ke '@executable_path /../ Frameworks'
  3. Bangun perpustakaan, dan akses .framework dari direktori arsip atau produk

Termasuk Kerangka Kerja

  1. Seret file .framework yang dibuat ke dalam Proyek Xcode, pastikan untuk mencentang 'Salin File ke Direktori'
  2. Dalam target aplikasi yang berisi, tambahkan 'Salin Fase Pembuatan File' baru
  3. Setel 'Tujuan' ke 'Kerangka Kerja'
  4. Seret dalam .framework yang dibuat
Sammio2
sumber
1
Ini juga berfungsi untuk kerangka kerja iOS. Saat menambahkan kerangka kerja kustom ke ruang kerja untuk membangun bersamanya. Anda harus menambahkan bagian Termasuk Kerangka dari solusi ini untuk menyelesaikan kesalahan ini ketika melakukan debug pada perangkat!
cynistersix
1
Terima kasih, berfungsi untuk iOS. Saya tidak mengikuti langkah pertama Anda karena kerangka kerja sudah dibangun di folder data turunan saya
Gmeister4
Luar biasa! Selamat hari freakin saya! 2017 - Xcode 8.3.2 Terima kasih!
Glenn
Untuk beberapa alasan aneh Anda tidak dapat menyeret kerangka kerja dari bagian "Tautan Biner dengan Perpustakaan" default ke bagian "Kerangka Kerja Tersemat" tetapi Anda dapat menyeret kerangka kerja dari daftar Proyek di sebelah kiri. Anda masih harus menghapus kerangka kerja secara manual dari bagian "Tautan Biner Dengan Perpustakaan" dengan tombol "-".
William Cerniuk
18

Itu cukup sederhana bagi saya, saya hanya menambahkan kerangka kerja saya ke binari yang tertanam di bawah target aplikasi

Robin Delaporte
sumber
15

Opsi di atas tidak memungkinkan bagi saya untuk disertakan. Saya menyelesaikannya dengan menentukan Runpath Search Path

Ini ada di tab ' Bangun Pengaturan '. Di bagian ' Menghubungkan '. Ubah ' Runpath Search Paths ' menjadi$(inherited) @executable_path/Frameworks

Vincent
sumber
Saya membutuhkan kedua langkah, langkah ini dan untuk menambahkan 'Salin Fase Pembuatan File' baru dengan kerangka kerja sebelumnya.
user23
Saya memiliki proyek Xcode lama yang telah diperbarui secara bertahap dan pengaturan ini hilang untuk saya. Ditambahkan dan sekarang berfungsi seperti yang diharapkan.
Mattio
dari semua solusi yang satu ini bekerja, sangat menjengkelkan bagaimana pendekatan untuk masalah seperti "oke biarkan aku turun daftar semua posting stackoverflow ini, karena akar penyebabnya tidak jelas" APPLEEEEE
Ryan
9

Saya mengalami masalah yang sama tetapi solusi yang diterima tidak bekerja untuk saya. Sebaliknya solusinya adalah memodifikasi nama instal framework.

Kesalahan dalam posting asli adalah:

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

Catat jalur pertama setelah Perpustakaan tidak dimuat . Kerangka kerja sedang dimuat dari jalur absolut. Jalur ini berasal dari nama instal framework (kadang-kadang disebut rpath), yang dapat diperiksa menggunakan:

otool -D MyFramework.framework/MyFramework

Ketika suatu kerangka kerja tertanam ke dalam aplikasi, jalur ini harus relatif dan dari formulir ini: @ rpath / MyFramework.framework / MyFramework . Jika nama instal framework Anda adalah path absolut, itu mungkin tidak dimuat pada saat runtime dan kesalahan yang mirip dengan yang di atas akan dihasilkan.

Solusinya adalah mengubah nama instal:

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

Dengan perubahan ini saya tidak lagi mendapatkan kesalahan

Amos Joshua
sumber
8

Menghapus data turunan menyimpannya untuk saya

SleepsOnNewspapers
sumber
3
Tidak bekerja untuk saya, namun ketika saya melakukan pod installitu berhasil.
Hola Soy Edu Feliz Navidad
7

Tak satu pun dari masalah ini yang menyelesaikan masalah ini untuk saya. Masalahnya pada akhirnya cukup mudah. Sepertinya itu adalah bug Xcode yang cukup besar yang telah saya catat masalah dan perbaiki di bawah bug Apple: 29820370. Jika Anda kesulitan (karena sepertinya ada beberapa halaman masalah yang mirip dengan ini) maka akan lebih bagus jika Anda bisa meningkatkan bug pada bug reporter: https://bugreport.apple.com/ dan referensi bug yang saya angkat untuk mendapatkan visibilitas. Saya ingin membuat Xcode kembali menjadi kesenangan seperti sebelumnya - dan ini adalah sesuatu yang saya yakin seharusnya Xcode memperbaiki sendiri.

Ini adalah solusinya: 1. Buka Gantungan Kunci - pergi ke Apple Worldwide Developer Cert. 2. Klik dua kali padanya 3. Ubah tingkat izin dari "selalu percaya" untuk menggunakan System Defaults 4. Simpan dan tutup 5. Restart Xcode, Bersihkan dan bangun proyek Anda dan itu harus hilang.

Tangkapan layar di bawah pengaturan yang benar: Akses gantungan kunci diperbaiki Semoga ini bisa membantu!

UKDataGeek
sumber
2
"Use Systems Defaults" tampaknya merupakan pengaturan standar.
Raphael
Tidak selalu - sesuatu sepertinya mengubahnya yang mengakibatkan
kesalahan itu
Terima kasih, ini memperbaiki masalah saya juga! Sayangnya saya tidak bisa melihat tiket Anda di pelacak bug untuk memberikan visibilitas tambahan padanya. Saya tidak yakin mengapa, itu tidak menunjukkan bug di sana.
Jim
7

Xcode 11:

di Xcode 11 tambahkan framework ke dalam General->Frameworks, Libraries And Embedded Content

setelah menambahkan pastikan Anda memilih Embed & Signopsi

masukkan deskripsi gambar di sini

Saifan Nadaf
sumber
2
jika Anda melakukan ini maka Anda tidak akan dapat mengunggah aplikasi Anda di app store
Mahendra
@ Mahendra, apa alternatif yang Anda gunakan dalam kasus ini? Saya punya masalah serupa.
Derryl Thomas
@DerrylThomas, Aplikasi ini masih dalam mode pengembangan jadi tidak menguji kasus ini
Mahendra
1
@ Mahendra, silakan bagikan di sini jika Anda menemukan alternatif untuk ini. Saya akan sangat berterima kasih.
Derryl Thomas
@DerrylThomas Saat membuat arsip, kembalikan ke opsi Do Not Embed dan buat executable untuk diunggah ke app store.
BlackPearl12
6

Ketika Anda menyeret kerangka kerja kustom ke dalam proyek di bawah Xcode 10.1 , itu mengasumsikan bahwa kerangka kerja adalah kerangka kerja sistem dan menempatkan kerangka kerja ke bagian "Tautan Biner Dengan Perpustakaan" dari "Bangun Fase" di bawah target Anda.

Kerangka kerja sistem sudah ada di perangkat sehingga tidak disalin ke perangkat dan karenanya tidak dapat dieksekusi saat runtime jadi KABOOM (macet di __abort_with_payload, dan disinformasi kesalahan: "Alasan: gambar tidak ditemukan"). Ini karena kode kerangka kerja tidak disalin ke perangkat ...

Pada kenyataannya, agar Xcode menautkan kerangka kerja kustom dan memastikan bahwa itu disalin bersama dengan kode Anda ke perangkat iOS (nyata atau simulator) kerangka kerja kustom perlu dipindahkan ke "Salin Sumber Daya Bundel". Ini pada akhirnya mengemas kerangka kerja beserta kode Anda yang dapat dieksekusi agar tersedia di perangkat bersama-sama.

Untuk menambahkan kerangka kerja kustom ke proyek dan menghindari crash Apple:

  1. Seret kerangka kerja kustom ke daftar file proyek iOS Anda
  2. Klik ProjectName di Navigator -> TargetName -> "Build Phases" -> Tautan Biner Dengan Segitiga pengungkapan Perpustakaan
  3. Seret kerangka kerja keluar dan turun ke bagian "Salin Sumber Daya Bundel" di bawah ini (Xcode sekarang memindahkan referensi kerangka kerja, diperbaiki dalam Xcode 10)
  4. Jalankan dalam simulator atau perangkat

Kerangka kerja kustom disalin bersama dengan kode Anda ke perangkat target Anda dan tersedia saat runtime.

masukkan deskripsi gambar di sini

[editorial: Anda akan berpikir Xcode akan cukup pintar untuk mencari tahu perbedaan antara salah satu kerangka kerja sistem yang tidak perlu disalin ke perangkat dan kerangka kerja kustom yang, oh saya tidak tahu, dalam hierarki direktori root proyek proyek ... 🙄]

William Cerniuk
sumber
5

Seharusnya ada 'Jalankan Skrip' ke dalam 'Bangun Fase' dengan ini: '/ usr / local / bin / carthage copy-frameworks'

Pada 'File Input' dari 'Run Script' itu, Anda harus menambahkan path ke library Anda. Seperti ini:

Bangun Skrip Jalankan Fase

thacilima
sumber
4

Jika Anda tidak sengaja mengatur ulang gantungan kunci Anda, ini dapat terjadi karena sertifikat Apple tidak ada di gantungan kunci. Saya mengikuti ini untuk menyelesaikan masalah saya.

Saya memiliki masalah yang sama dan dapat memperbaikinya dengan mengunduh kembali WWDR (Otoritas Sertifikasi Hubungan Pengembang Apple Seluruh Dunia). Unduh dari sini: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer

pengguna1742302
sumber
Ini memecahkan masalah saya juga. Ingatlah untuk membersihkan folder bangun sebelum kompilasi ulang.
Justin Milo
4

Jika Anda menggunakan Xcode 11 , pastikan bahwa Anda memiliki kerangka kerja yang ditambahkan dalam Kerangka, Perpustakaan, dan Konten yang Disematkan di bawah pengaturan Target - Umum. Ubah status Sematan dari - 'Jangan Sematkan' ke 'Sematkan & Tandatangani'

Sachin Nautiyal
sumber
Tapi ini akan memberikan kesalahan ITMS-90206 Dukungan Swift Tidak Valid ketika Anda mendistribusikan ke App Store. Ini hanya berfungsi dalam Pembangunan.
Raptor
2

Apa yang menyelesaikannya untuk saya adalah mengubah abstract_targetmenjadi targetuntuk target utama di Podfile saya. Saya sebelumnya telah mengaturnya abstract_targetdan ini menyebabkan kesalahan yang dijelaskan. Sekarang ini berfungsi seperti pesona

Francesco DM
sumber
1

Untuk Xcode 8, beberapa produk basi akan dihapus dari folder data turunan merujuk ke solusi ini .

Apple: Di macOS 10.12 dan yang lebih baru, Xcode membersihkan data turunan basi, header yang dikompilasi, dan cache modul. (23282174)

Sistem build Xcode mendukung penghapusan file basi dari beberapa jenis artefak build yang diproduksi di build sebelumnya, tetapi sejak itu dihapus dari proyek.

Berdasarkan pemikiran penulis, saya menemukan ini membangun log dari kasus saya.

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

Setelah membuat fase menyalin file baru dan menyalin kerangka target basi ke tujuan Frameworks , log penghapusan di atas menghilang setelah membangun kembali.

Cukup jelaskan situasi dan alasan saya, semoga bermanfaat bagi seseorang.

Itachi
sumber
1

Bagi saya ini solusinya, setelah berjam-jam mencari !!

Untuk beberapa alasan, baik dalam pengembangan kerangka kerja kustom Swift 2.3, Xcode 8 telah menghapus DYLIB_INSTALL_NAME_BASEpengaturan dari project.pbxprojfile. Sedikit berjalan ke Build Settings / Dynamic Library Install Name Basepengaturan kembali untuk @rpathmemperbaikinya.

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

membungkus
sumber
0

Saya menemukan bahwa masalah ini hanya terkait dengan penandatanganan kode dan sertifikat bukan kode itu sendiri. Untuk memverifikasi ini, buat aplikasi tampilan tunggal dasar dan coba jalankan tanpa perubahan pada perangkat Anda. Jika Anda melihat jenis kesalahan yang sama ini menunjukkan kode Anda baik-baik saja. Seperti saya, Anda akan menemukan bahwa sertifikat Anda tidak valid. Unduh lagi dan perbaiki yang kedaluwarsa. Kemudian ketika Anda mendapatkan aplikasi dasar untuk tidak melaporkan kesalahan coba aplikasi Anda lagi setelah keluar Xcode dan mungkin me-restart mac Anda untuk ukuran yang baik. Itu akhirnya mengakhiri mimpi buruk ini. Kemungkinan besar ini tidak ada hubungannya dengan kode Anda terutama jika Anda mendapatkan pesan Build Successful ketika Anda mencoba menjalankannya. FYI

iOS4Fun
sumber
0

Mendapat masalah ketika mencoba Xcode 9 beta dan kembali ke Xcode 8. Clean sederhana pada target menyelesaikan masalah.

Xavier
sumber
0

Saya memiliki masalah yang sama karena alasan yang berbeda. Saya telah membuat konfigurasi baru untuk Debug dan Rilis (di bawah PROYEK -> Info tab -> Konfigurasi). Dan saya harus mengubah skrip shell kerangka pod saya (Pods- "appName" -frameworks.sh, di bawah File Dukungan Target) untuk membuatnya berfungsi.

[Xcode 9]

Yuval
sumber
0

Satu-satunya hal yang berhasil untuk saya:

Target> Bangun Fase> [CP] Kerangka Kerja Embed Pods Hapus centang "Tampilkan variabel lingkungan di build log" dan "Jalankan skrip hanya saat menginstal"

Neil
sumber
0

Saya mencoba banyak perbaikan, tetapi yang berhasil bagi saya adalah menghapus target yang hilang yang tercantum di tab build dari skema build. Anda dapat melakukannya dengan membuka jendela edit skema saat ini.

Sunting: Target pengujian UI saya juga tidak berfungsi, dan solusi yang saya temukan adalah menghapusnya dan menghasilkannya lagi.

Gonzalo
sumber
0

buka xcode -> umum -> Binari Tertanam -> tambahkan QBImagepicker.framework dan RSKImageCropper -> proyek bersih

tambahkan saja QBImagePicker.framework dan RSKImageCropper.framework di embedded binaries bekerja untuk saya

Agustiar
sumber
0

Saya pikir tidak ada cara pasti untuk menyelesaikan masalah ini karena mungkin disebabkan oleh alasan yang berbeda. Saya juga memiliki masalah ini minggu lalu, saya tidak tahu kapan dan apa yang menyebabkan masalah ini, hanya ketika saya menjalankannya di simulator dengan Xcode atau mencoba untuk menginstalnya ke telepon, kemudian melaporkan kesalahan semacam itu, tetapi ketika saya jalankan dengan reaksi-asli run-ios dengan terminal, tidak ada masalah.

Saya memeriksa semua cara yang diposting di internet, seperti memperbarui sertifikat, mengubah pengaturan di Xcode (semua cara disebutkan di atas), sebenarnya semua pengaturan di Xcode sudah ditetapkan seperti yang diminta sebelumnya, tidak ada cara yang bekerja untuk saya. Sampai pagi ini ketika saya menghapus pod dan menginstal ulang, kesalahan akhirnya akan terjadi setelah seminggu. Jika Anda juga menggunakan cocoapod dan kemudian kesalahan itu hanya muncul tanpa alasan tertentu, mungkin Anda dapat mencoba cara saya.

  1. Periksa versi cocoapods saya.
  2. Perbarui jika ada versi baru yang tersedia.
  3. Buka folder proyek Anda, hapus Podfile.lock Anda, file Pods, project xcworkspace.
  4. Jalankan instal pod
Mendongkrak
sumber
0

Saya mengalami masalah itu hanya ketika berjalan di perangkat nyata (iPhone SE). Pada proyek simulator bekerja seperti yang diharapkan.

Saya sudah mencoba semua perbaikan dari utas ini dan dari sini . Tidak ada yang bekerja untuk saya.

Bagi saya masalah terpecahkan setelah me-restart iPhone (sic!).

Aku melakukannya:

  • bersihkan folder bangun,
  • membersihkan data turunan,
  • hapus aplikasi dari perangkat,
  • reboot perangkat

Dan akhirnya berhasil. :)

Jika setiap solusi gagal, jangan lupa untuk mencobanya.

vandermesis
sumber
0

Xcode 11: Build Phases -> Embed Frameworks

masukkan deskripsi gambar di sini

Ofir Maleakhi
sumber