Saya mencoba membuat Kerangka OS X dasar, saat ini saya hanya memiliki kerangka uji coba dibuat: TestMacFramework.framework
dan 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 Files
bagian ke fase membangun aplikasi kontainer saya, jadi saya telah melakukan ini dan mengaturnya seperti ...
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.framework
sedang disalin ke direktori .app content / frameworks, tetapi tidak diinstal ke direktori Library / Frameworks di HD
PEMBARUAN 2:
Membangun tautan dengan benar jika saya menyalin secara manual TestMacFramework.framework
ke Library/Frameworks
direktori
sumber
otool -L
memberitahu Anda tentang di mana aplikasi mengharapkan menemukan kerangka kerja?/Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework (compatibility version 1.0.0, current version 1.0.0)
Jawaban:
[Xcode 11+]
Satu-satunya hal yang harus dilakukan adalah menambahkan kerangka kerja ke
General->Frameworks, Libraries And Embedded Content
bagian diGeneral
tab target aplikasi Anda.Pastikan Anda memilih opsi 'Sematkan & Masuk'.
[Xcode v6 -> Xcode v10]
Satu-satunya hal yang harus dilakukan adalah menambahkan kerangka kerja ke
Embedded binaries
bagian diGeneral
tab target aplikasi Anda.sumber
Embedded binaries
bagian dalam proyek macOS saya. Apa yang salah?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
Termasuk Kerangka Kerja
sumber
Itu cukup sederhana bagi saya, saya hanya menambahkan kerangka kerja saya ke binari yang tertanam di bawah target aplikasi
sumber
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
sumber
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:
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:
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:
Dengan perubahan ini saya tidak lagi mendapatkan kesalahan
sumber
Menghapus data turunan menyimpannya untuk saya
sumber
pod install
itu berhasil.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: Semoga ini bisa membantu!
sumber
di Xcode 11 tambahkan framework ke dalam
General->Frameworks, Libraries And Embedded Content
setelah menambahkan pastikan Anda memilih
Embed & Sign
opsisumber
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:
Kerangka kerja kustom disalin bersama dengan kode Anda ke perangkat target Anda dan tersedia saat runtime.
[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 ... 🙄]
sumber
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:
sumber
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
sumber
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'
sumber
Apa yang menyelesaikannya untuk saya adalah mengubah
abstract_target
menjaditarget
untuk target utama di Podfile saya. Saya sebelumnya telah mengaturnyaabstract_target
dan ini menyebabkan kesalahan yang dijelaskan. Sekarang ini berfungsi seperti pesonasumber
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.
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.
sumber
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_BASE
pengaturan dariproject.pbxproj
file. Sedikit berjalan keBuild Settings / Dynamic Library Install Name Base
pengaturan kembali untuk@rpath
memperbaikinya.(dari https://forums.developer.apple.com/thread/4687 )
sumber
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
sumber
Mendapat masalah ketika mencoba Xcode 9 beta dan kembali ke Xcode 8. Clean sederhana pada target menyelesaikan masalah.
sumber
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]
sumber
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"
sumber
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.
sumber
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
sumber
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.
sumber
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:
Dan akhirnya berhasil. :)
Jika setiap solusi gagal, jangan lupa untuk mencobanya.
sumber
Xcode 11: Build Phases -> Embed Frameworks
sumber