Pustaka simulator Xcode12 CoreNFC tidak dimuat
Aplikasi kami menggunakan CoreNFC untuk memindai tag NFC atau Anda dapat menggunakan QR jika NFC tidak didukung. Ini bekerja dengan cukup baik dan kami dapat menjalankan aplikasi di simulator untuk tujuan pengujian (ui).
Hingga Xcode12 / iOS14 GM dibuat. Di iOS13 (atau lebih rendah), kami tidak akan mengalami masalah saat menjalankannya di simulator.
Tetapi di Xcode12 menjalankannya pada simulator iOS14 iPhone11 kita akan mendapatkan yang berikut:
dyld: launch, loading dependent libraries
DYLD_SHARED_CACHE_DIR=/Users/xxx/Library/Developer/CoreSimulator/Caches/dyld/19G73/com.apple.CoreSimulator.SimRuntime.iOS-14-0.18A372
DYLD_ROOT_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot
DYLD_LIBRARY_PATH=/Users/xxx/Library/Developer/Xcode/DerivedData/BeeSafe-awnlestrbvesqqbynrhmluzhbcsc/Build/Products/Debug-iphonesimulator:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/system/introspection
DYLD_INSERT_LIBRARIES=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libBacktraceRecording.dylib:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSi
dyld: Library not loaded: /usr/lib/libnfshared.dylib
Referenced from: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/CoreNFC.framework/CoreNFC
Reason: no suitable image found. Did find:
/usr/lib/libnfshared.dylib: mach-o, but not built for platform iOS-sim
Bahwa simulator macet masuk akal bagi saya, karena simulator tidak dapat memindai tag NFC, tetapi inilah yang telah saya lakukan:
- Saya sudah menautkan ke kerangka CoreNFC dan menjadikannya opsional, seperti yang dijelaskan di sini: Xcode 10, aplikasi Swift 4 dengan kerusakan CoreNFC dalam ulasan di iOS 12
- Letakkan di
#if canImport(CoreNFC)sekitarimport CoreNFCdan itu kode NFC yang mendasari. - Membersihkan folder build dan menghapus data turunan.
- Membuat proyek Xcode12 kosong: https://github.com/basvankuijck/CoreNFCCrashProject, hasil yang sama.
- Menghapus semua simulator yang terdaftar dan menambahkan satu lagi
- Ditambahkan
-weak_framework "CoreNFC"ke pengaturan build Other Linker Flags
Jelas menghapus referensi apa pun ke kerangka CoreNFC dengan mengomentari bagian kode dan menghapus tautan kerangka kerja, membuat crash menghilang. Tapi itu bukan pilihan yang cocok.
Menjalankannya dari Xcode12 pada 'perangkat' simulator iOS13 bekerja dengan sempurna. Jadi saya tidak bisa menemukan apa yang menyebabkan perilaku ini
Jawaban
Apple jelas lupa menambahkan libnfshared.dylib untuk alasan apa pun di versi final simulator Xcode 12 untuk iOS 14. Solusi yang berfungsi hingga Apple memperbaikinya adalah dengan menyalin lib yang hilang dari Xcode 12 beta 6 ke atas (unduh versi beta dari bagian unduhan pengembang Apple). Lib yang hilang dapat ditemukan di sini dan harus masuk ke direktori yang sama untuk Xcode akhir 12
Ini berhasil untuk saya. 💯
Jika Anda ingin menghindari kerumitan mengunduh 11.25GB Xcode 12.2 beta untuk satu file. Saya memiliki file untuk dibagikan.
Anda dapat menjalankan perintah berikut untuk mengunduh dan meletakkannya di dalam paket Xcode:
sudo curl https://storage.googleapis.com/mobile-simulator-build/libnfshared.dylib -o /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libnfshared.dylib
Semoga membantu 😉
Apple jelas lupa menambahkan libnfshared.dylibuntuk alasan apa pun di versi final simulator Xcode 12 untuk iOS 14. Solusi yang berfungsi hingga Apple memperbaikinya adalah dengan menyalin lib yang hilang dari Xcode 12 beta 6 ke atas (unduh versi beta dari bagian unduhan pengembang Apple). Lib yang hilang dapat ditemukan di sini dan harus masuk ke direktori yang sama untuk Xcode akhir 12:
Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib
Linker mengatakan bahwa file libnfshared (mach-o) tidak menyertakan biner untuk simulator, yang aneh karena itu kerangka inti Apple.
Buat proyek baru dengan Xcode 12 dan impor kerangka kerja NFC. Bangun dan jalankan di simulator. Jika tidak macet, bandingkan pengaturan build khusus untuk DYLD antara proyek-proyek tersebut.
Jika ini tidak membantu, hapus semua simulator dan buat yang baru.
Diperbarui:
Itu bug di IOS 14 dan seseorang telah mengirimkan radar: openradar.appspot.com/FB8699389
Saya mengalami masalah yang sama dengan aplikasi saya, Meskipun saya tidak menggunakan kerangka kerja CoreNFC. ini diselesaikan dengan
Xcode-12.2 beta 2. Dirilis pada 29 September 2020