Ich erstelle ein iOS-Framework mit Xcode6 und iOS8. Wenn ich dies mit einer iOS-App verknüpfe und versuche, sie auf dem Gerät auszuführen, erhalte ich diese Fehlermeldung
dyld: Library not loaded: @rpath/FrameworkName.framework/FrameworkName
Referenced from: /private/var/mobile/Containers/Bundle/Application/0F2C2461-A68B-4ABA-A604-B88E6E9D1BB1/AppName.app/AppName
Reason: image not found
Die Buildeinstellung 'Runpath Search Paths' für das Framework ist standardmäßig auf festgelegt
'@executable_path/Frameworks', '@loader_path/Frameworks'
Ich konnte keine Dokumentation dazu finden. Dies war etwas Neues, das mit Xcode6 eingeführt wurde, und ich würde erwarten, dass es einfach funktioniert, indem das Framework einfach in jede App eingefügt wird, die es benötigt.
Damit dies funktioniert
Ändern Sie in den Projekteinstellungen des Frameworks das Installationsverzeichnis von '/ Library/Frameworks' in '@executable_path /../ Frameworks'.
Fügen Sie im Projekt, in dem dieses Framework enthalten ist, eine Kopierdateienphase hinzu und kopieren Sie dieses Framework in den Ordner "Frameworks". Stellen Sie anschließend sicher, dass dieses Framework im Abschnitt "Eingebettete Binärdateien" aufgeführt ist.
Problem gelöst mit diese Antwort . Laut @ vladof81:
Auf der Registerkarte Allgemein des Ziels befindet sich ein Feld Eingebettete Binärdateien. Wenn Sie das Framework dort hinzufügen, ist der Absturz behoben.
Referenz ist hier in den Apple Entwicklerforen.
Ich habe diesen Fehler bei einer über CocoaPods installierten Bibliothek erhalten. Das Bereinigen des Build-Ordners (cmd + option + shift + k
) und das anschließende Bereinigen (cmd + shift + k
) hat dieses Problem für mich gelöst.
Für mich war es wegen des SSL-Problems, dass ich meine Entwickler-, Distributionszertifikate auf meinem Mac (Keychain) für ein anderes Projekt auf 'Always Trust' gesetzt hatte. Ich musste sie wieder in "Systemeinstellungen verwenden" ändern. es hat dann für mich funktioniert !!
Wenn Sie Karthago verwenden
Führen Sie carthage update
auf dem Terminal aus
Gehen Sie zu Projekteinstellungen -> Erstellungsphasen -> Carthage Copy Frameworks
Zeile hinzufügen in Eingabedateien : $(SRCROOT)/Carthage/Build/iOS/YOURLIBRARY.framework
Fügen Sie diese Zeile zu Ausgabedateien hinzu: $(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/TTTAttributedLabel.framework
Überprüfen Sie zusätzlich zu den oben genannten Lösungen die Pfade der in Ihrer Anwendung enthaltenen Frameworks unter
Build-Einstellungen -> Suchpfade -> Framework-Suchpfade
Wenn keine dieser Lösungen funktioniert:
.framework
-Dateipfade in Build Settings -> Framework Search Paths
hinzugefügt werden. Sie können alle Framework-Dateien irgendwo in App/libs/
speichern, diesen Ordner hinzufügen und rekursiv aktivieren..a
-Dateipfade in Build Settings -> Library Search Paths
hinzugefügt werden.Die Bibliothek, die "Nicht geladen" anzeigt, wurde von "" in "Verknüpfte Binärdateien und Frameworks" auf "Optional" geändert. Es funktioniert jetzt perfekt
Ich habe mit Cocoapods Bibliotheken von Drittanbietern installiert. Ich habe den gleichen Fehler, habe alles versucht, aber endlich realisiert, dass ich use_frameworks nicht hatte in meiner pod-datei.
Also die aktuell installierte Bibliothek entfernt und use_frameworks hinzugefügt! Zeile in pod-Datei, installierte die Bibliotheken neu und alles funktionierte für mich.
Ich hatte auch das gleiche Problem, dass ich die App nicht starten konnte. Die App stürzte mit der obigen Meldung ab:
dyld: Bibliothek wurde nicht geladen: @ rpath/FrameworkName.framework/FrameworkName Referenziert von:/private/var/mobile/Containers/Bundle/Application/xxxxxxxxxxxxxxxxxxx
Grund: Bild nicht gefunden
Hier ist mein Ansatz, der mir geholfen hat, diesen Fehler zu beheben:
1.Bitte löschen Sie Ihre App vom Gerät. Bereinigen Sie das Erstellen und Wiederherstellen und Ausführen auf dem Gerät.
2.Wenn Ihnen die oben genannten Schritte nicht helfen, überprüfen Sie bitte die folgenden Einstellungen:
Wählen Sie unter "TARGET"> "Build Settings"> "Runpath Search Paths" und prüfen Sie die Werte "$ (vererbt)" & "@ executable_path/Frameworks". Fügen Sie diese hinzu, falls sie nicht vorhanden sind.
Erstellen Sie Ihre App und führen Sie sie auf dem Gerät aus