Xcode12 CoreNFC-Simulatorbibliothek nicht geladen

Sep 16 2020

Unsere App verwendet CoreNFC zum Scannen von NFC-Tags oder Sie können QR verwenden, wenn NFC nicht unterstützt wird. Dies funktionierte ziemlich gut und wir konnten die App im Simulator zu (UI-) Testzwecken ausführen.
Bis Xcode12 / iOS14 GM erstellt. In iOS13 (oder niedriger) hätten wir keine Probleme, es auf einem Simulator auszuführen.

Aber in Xcode12, das auf einem iOS14-Simulator iPhone11 ausgeführt wird, erhalten wir Folgendes:

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

Dass der Simulator abstürzt, macht für mich Sinn, da der Simulator keine NFC-Tags scannen kann, aber Folgendes habe ich getan:

  • Ich habe bereits eine Verknüpfung zum CoreNFC-Framework hergestellt und es optional gemacht, wie hier beschrieben: Xcode 10, Swift 4-App mit CoreNFC stürzt im Test unter iOS 12 ab
  • Stellen Sie #if canImport(CoreNFC)herum import CoreNFCund es ist zugrunde liegender NFC-Code.
  • Bereinigen des Build-Ordners und Löschen abgeleiteter Daten.
  • Erstellt ein leeres Xcode12-Projekt: https://github.com/basvankuijck/CoreNFCCrashProject, gleiches Ergebnis.
  • Alle aufgelisteten Simulatoren wurden entfernt und einer hinzugefügt
  • -weak_framework "CoreNFC"Zur Build-Einstellung "Andere Linker-Flags" hinzugefügt

Wenn Sie Verweise auf das CoreNFC-Framework entfernen, indem Sie entweder Codeabschnitte auskommentieren oder den Framework-Link entfernen, verschwindet der Absturz. Das ist aber keine geeignete Option.

Das Ausführen von Xcode12 auf einem iOS13-Simulator-Gerät funktioniert einwandfrei. Ich kann also nicht herausfinden, was dieses Verhalten verursacht

Antworten

40 ArifFikriAbas Oct 01 2020 at 13:09

Apple hat offensichtlich vergessen, libnfshared.dylib aus irgendeinem Grund in der endgültigen Version von Xcode 12 für iOS 14-Simulatoren hinzuzufügen. Eine funktionierende Problemumgehung, bis Apple dies behebt, besteht darin, die fehlende Bibliothek von Xcode 12 Beta 6 zu kopieren (laden Sie die Beta aus dem Entwickler-Download-Bereich von Apple herunter). Die fehlende Bibliothek befindet sich hier und muss für den endgültigen Xcode 12 in dasselbe Verzeichnis verschoben werden

Das funktioniert bei mir. 💯

Wenn Sie den Aufwand vermeiden möchten, 11,25 GB Xcode 12.2 Beta für eine einzelne Datei herunterzuladen. Ich habe die Datei zu teilen.

Sie können den folgenden Befehl ausführen, um ihn herunterzuladen und im Xcode-Paket abzulegen:

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

Hoffe es hilft 😉

25 Cyborg Sep 22 2020 at 16:37

Apple hat offensichtlich vergessen, libnfshared.dylibaus irgendeinem Grund in der endgültigen Version von Xcode 12 für iOS 14-Simulatoren hinzuzufügen . Eine funktionierende Problemumgehung, bis Apple dies behebt, besteht darin, die fehlende Bibliothek von Xcode 12 Beta 6 zu kopieren (laden Sie die Beta aus dem Entwickler-Download-Bereich von Apple herunter). Die fehlende Bibliothek befindet sich hier und muss für den endgültigen Xcode 12 in dasselbe Verzeichnis verschoben werden:

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib

9 BlazejSLEBODA Sep 16 2020 at 16:28

Laut Linker enthält die Datei libnfshared (mach-o) keine Binärdatei für einen Simulator, was seltsam ist, da es sich um das Apple Core Framework handelt.

Erstellen Sie ein neues Projekt mit Xcode 12 und importieren Sie das NFC-Framework. Erstellen Sie es und führen Sie es auf einem Simulator aus. Wenn es nicht abstürzt, vergleichen Sie die Build-Einstellungen speziell für DYLD zwischen diesen Projekten.

Wenn dies nicht hilft, löschen Sie alle Simulatoren und erstellen Sie neue.

Aktualisiert:

Es ist ein Fehler in IOS 14 und jemand hat ein Radar gesendet : openradar.appspot.com/FB8699389

1 ArslanAsim Sep 30 2020 at 17:36

Ich hatte das gleiche Problem mit meiner Anwendung, obwohl ich kein CoreNFC-Framework verwendet habe. das wird gelöst mit

Xcode-12.2 Beta 2. Veröffentlicht am 29. September 2020