Ich versuche, ein grundlegendes OS X-Framework zu erstellen. Im Moment habe ich nur ein Test-Framework erstellt. TestMacFramework.framework
Ich versuche, es in ein brandneues OS X-Anwendungsprojekt zu importieren.
Ich habe die .framework-Datei erstellt und in das neue Projekt importiert. Das Framework scheint in Ordnung zu sein, und ich kann auf die öffentliche Header-Datei verweisen, die ich dem Abschnitt zu den Framework-Erstellungsphasen hinzugefügt habe.
Wenn ich jedoch versuche, die Containeranwendung auszuführen, wird der folgende Fehler angezeigt:
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
Nach einigem googeln wurde mir klar, dass ich Copy Files
meinen Erstellungsphasen für Containeranwendungen einen Abschnitt hinzufügen musste , also habe ich dies getan und es so eingerichtet ...
Ich erhalte jedoch immer noch den Laufzeitfehler. Ich mache hier offensichtlich etwas falsch, aber die Apple-Entwicklerbibliotheksressource für diesen Verweis auf Xcode 2 ist also nicht sehr hilfreich!
Was habe ich vermisst?
AKTUALISIEREN:
Ich kann im Build-Protokoll sehen, dass my TestMacFramework.framework
in das Verzeichnis .app content / frameworks kopiert wird, aber nicht in das Verzeichnis Library / Frameworks auf der Festplatte installiert wird
UPDATE 2:
Der Build verlinkt korrekt, wenn ich ihn manuell TestMacFramework.framework
in das Library/Frameworks
Verzeichnis kopiere
quelle
otool -L
Ihnen, wo die App das Framework erwartet?/Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework (compatibility version 1.0.0, current version 1.0.0)
Antworten:
[Xcode 11+]
Das einzige, was Sie tun müssen, ist, das Framework dem
General->Frameworks, Libraries And Embedded Content
Abschnitt auf derGeneral
Registerkarte Ihres App-Ziels hinzuzufügen .Stellen Sie sicher, dass Sie die Option 'Einbetten & Signieren' auswählen.
[Xcode v6 -> Xcode v10]
Das einzige, was Sie tun müssen, ist, das Framework dem
Embedded binaries
Abschnitt auf derGeneral
Registerkarte Ihres App-Ziels hinzuzufügen .quelle
Embedded binaries
Abschnitt in meinem MacOS-Projekt. Was ist los mit dir?Also habe ich es geschafft, es zum Laufen zu bringen. Es ist ganz einfach, wenn Sie die richtigen Anweisungen haben. Was ich suchte, war ein "privates" Framework, das im App-Bundle gespeichert ist und nicht in den Ordner der Systembibliothek geschrieben wird.
Aufbau des Frameworks
Einschließlich des Frameworks
quelle
Es war ganz einfach für mich, ich habe gerade mein Framework zu meinen eingebetteten Binärdateien unter App-Zielen hinzugefügt
quelle
Die oben genannten Optionen waren für mich nicht möglich. Ich habe es gelöst, indem ich den Runpath-Suchpfad angegeben habe
Dies befindet sich auf der Registerkarte " Build-Einstellungen ". Im Abschnitt " Verknüpfen ". Ändern Sie ' Runpath Search Paths ' in
$(inherited) @executable_path/Frameworks
quelle
Ich bin auf dasselbe Problem gestoßen, aber die akzeptierte Lösung hat bei mir nicht funktioniert. Stattdessen bestand die Lösung darin, den Installationsnamen des Frameworks zu ändern.
Der Fehler im ursprünglichen Beitrag ist:
Beachten Sie den ersten Pfad nach Bibliothek nicht geladen . Das Framework wird von einem absoluten Pfad geladen. Dieser Pfad stammt aus dem Installationsnamen des Frameworks (manchmal auch als rpath bezeichnet), der wie folgt überprüft werden kann:
Wenn ein Framework in eine App eingebettet ist, sollte dieser Pfad relativ sein und die folgende Form haben: @ rpath / MyFramework.framework / MyFramework . Wenn der Installationsname Ihres Frameworks ein absoluter Pfad ist, wird er möglicherweise nicht zur Laufzeit geladen, und es wird ein Fehler ähnlich dem oben genannten erzeugt.
Die Lösung besteht darin, den Installationsnamen zu ändern:
Mit dieser Änderung erhalte ich den Fehler nicht mehr
quelle
Durch das Löschen abgeleiteter Daten wurde es für mich gespeichert
quelle
pod install
es funktioniert.Keines dieser Probleme löste dies für mich. Das Problem war am Ende ziemlich einfach. Es sieht so aus, als wäre es ein ziemlich schwerwiegender Xcode-Fehler, den ich unter Apple-Fehler 29820370 protokolliert und behoben habe: Wenn Sie Probleme haben (es scheint, als gäbe es mehrere Seiten mit ähnlichen Problemen), wäre es großartig, wenn Sie können Lösen Sie einen Fehler im Fehlerreporter aus: https://bugreport.apple.com/ und verweisen Sie auf den Fehler, den ich ausgelöst habe, um die Sichtbarkeit zu verbessern. Ich möchte Xcode wieder zu dem Vergnügen machen, das es vorher war - und das ist etwas, von dem ich sicher bin, dass Xcode sich selbst hätte reparieren sollen.
Hier ist die Lösung: 1. Öffnen Sie den Schlüsselbund - gehen Sie zu Apple Worldwide Developer Cert. 2. Doppelklicken Sie darauf. 3. Ändern Sie die Berechtigungsstufe von "Immer vertrauen", um die Systemstandards zu verwenden. 4. Speichern und schließen Sie sie. 5. Starten Sie Xcode neu. Bereinigen und erstellen Sie Ihr Projekt, und es sollte verschwunden sein.
Screenshot unten mit den richtigen Einstellungen: Hoffe das hilft!
quelle
Fügen Sie in Xcode 11 das Framework hinzu
General->Frameworks, Libraries And Embedded Content
Stellen Sie nach dem Hinzufügen sicher, dass Sie die
Embed & Sign
Option auswählenquelle
Wenn Sie ein benutzerdefiniertes Framework unter Xcode 10.1 in ein Projekt ziehen , wird davon ausgegangen , dass es sich bei dem Framework um ein Systemframework handelt, und das Framework wird unter Ihrem Ziel in den Abschnitt "Binär mit Bibliotheken verknüpfen" von "Phasen erstellen" eingefügt.
System-Frameworks befinden sich bereits auf dem Gerät, sodass es nicht auf das Gerät kopiert wird und daher zur Laufzeit nicht ausgeführt werden kann. KABOOM (Absturz in __abort_with_payload und Fehler beim Desinformieren: "Grund: Bild nicht gefunden"). Dies liegt daran, dass der Framework-Code nicht auf das Gerät kopiert wird ...
Damit Xcode sowohl das benutzerdefinierte Framework verknüpft als auch sicherstellt, dass es zusammen mit Ihrem Code auf das iOS-Gerät (Real oder Simulator) kopiert wird, muss das benutzerdefinierte Framework in "Bundle-Ressourcen kopieren" verschoben werden. Dadurch wird das Framework zusammen mit Ihrer ausführbaren Codedatei so verpackt, dass sie zusammen auf dem Gerät verfügbar ist.
So fügen Sie einem Projekt ein benutzerdefiniertes Framework hinzu und vermeiden den Apple-Absturz:
Das benutzerdefinierte Framework wird somit zusammen mit Ihrem Code auf Ihr Zielgerät kopiert und ist zur Laufzeit verfügbar.
[Leitartikel: Sie würden denken, Xcode wäre klug genug, um den Unterschied zwischen einem seiner System-Frameworks, die nicht auf das Gerät kopiert werden müssen, und einem benutzerdefinierten Framework herauszufinden, das sich, oh ich weiß nicht, in der Hierarchie des Projektstammverzeichnisses befindet ... 🙄]
quelle
Es sollte ein 'Skript ausführen' in 'Phasen erstellen' mit folgendem Inhalt enthalten: '/ usr / local / bin / carthage copy-frameworks'
In den 'Eingabedateien' dieses 'Skript ausführen' sollten Sie den Pfad zu Ihren Bibliotheken hinzufügen. So was:
quelle
Wenn Sie Ihren Schlüsselbund versehentlich zurücksetzen, kann dies an fehlenden Apple-Zertifikaten im Schlüsselbund liegen. Ich folgte diesem , um mein Problem zu lösen.
Ich hatte das gleiche Problem und konnte es beheben, indem ich den WWDR (Apple Worldwide Developer Relations Certification Authority) erneut herunterlud. Hier herunterladen: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
quelle
Wenn Sie Xcode 11 verwenden , stellen Sie sicher, dass Sie das Framework unter Framework-Einstellungen, Bibliotheken und Inhalte einbetten unter Zieleinstellungen - Allgemein hinzugefügt haben. Ändern Sie den Einbettungsstatus von "Nicht einbetten" in "Einbetten & Signieren".
quelle
Was es für mich gelöst hat, war der Wechsel
abstract_target
zumtarget
Hauptziel in meinem Podfile. Ich hatte es zuvor eingestelltabstract_target
und dies verursachte den beschriebenen Fehler. Jetzt funktioniert es wie ein Zauberquelle
Bei Xcode 8 werden einige veraltete Produkte aus dem Ordner für abgeleitete Daten entfernt (siehe diese Lösung) .
Apple: In macOS 10.12 und höher bereinigt Xcode veraltete abgeleitete Daten, vorkompilierte Header und Modul-Caches. (23282174)
Das Xcode-Build-System unterstützt das Entfernen veralteter Dateien einiger Arten von Build-Artefakten, die in einem früheren Build erstellt wurden, seitdem jedoch aus dem Projekt entfernt wurden.
Basierend auf den Gedanken des Autors habe ich dieses Build-Protokoll aus meinem Fall gefunden.
Nach dem Erstellen einer neuen Kopierdateiphase und dem Kopieren des veralteten Zielframeworks in das Frameworks- Ziel wird das obige Entfernungsprotokoll nach der Neuerstellung ausgeblendet.
Klären Sie einfach meine Situation und meinen Grund und hoffen Sie, dass es für jemanden hilfreich ist.
quelle
Für mich war dies die Lösung nach vielen Stunden der Suche !!
Aus irgendeinem Grund hatte Xcode 8 bereits in der Entwicklung eines benutzerdefinierten Swift 2.3-Frameworks die
DYLIB_INSTALL_NAME_BASE
Einstellung aus derproject.pbxproj
Datei entfernt. Ein kleiner Spaziergang in dieBuild Settings / Dynamic Library Install Name Base
Umgebung zurück, um@rpath
es zu reparieren.(von https://forums.developer.apple.com/thread/4687 )
quelle
Ich stellte fest, dass dieses Problem nur mit der Codesignatur und den Zertifikaten zusammenhängt, nicht mit dem Code selbst. Um dies zu überprüfen, erstellen Sie die einfache Einzelansicht-App und versuchen Sie, sie ohne Änderungen an Ihrem Gerät auszuführen. Wenn Sie denselben Fehlertyp sehen, zeigt dies, dass Ihr Code in Ordnung ist. Wie ich werden Sie feststellen, dass Ihre Zertifikate ungültig sind. Laden Sie alles erneut herunter und beheben Sie alle abgelaufenen. Wenn Sie dann die Basis-App erhalten, die den Fehler nicht meldet, versuchen Sie es erneut, nachdem Sie Xcode beendet und Ihren Mac möglicherweise neu gestartet haben. Damit war dieser Albtraum endlich beendet. Dies hat höchstwahrscheinlich nichts mit Ihrem Code zu tun, insbesondere wenn Sie beim Versuch, ihn auszuführen, die Meldung Build Successful erhalten. Zu Ihrer Information
quelle
Beim Versuch, Xcode 9 Beta zu testen und zu Xcode 8 zurückzukehren, wurde das Problem behoben. Eine einfache Bereinigung des Ziels löste das Problem.
quelle
Ich hatte das gleiche Problem aus einem anderen Grund. Ich habe eine neue Konfiguration für Debug und Release erstellt (unter PROJEKT -> Registerkarte Info -> Konfiguration). Und ich musste mein Shell-Skript für Pod-Frameworks (Pods- "appName" -frameworks.sh unter Targets Support Files) ändern, damit es funktioniert.
[Xcode 9]
quelle
Das einzige was bei mir funktioniert hat:
Ziel> Build-Phasen> [CP] Pods-Frameworks einbetten Deaktivieren Sie "Umgebungsvariablen im Build-Protokoll anzeigen" und "Skript nur bei Installation ausführen".
quelle
Ich habe viele Korrekturen versucht, aber was für mich funktioniert hat, war das Löschen eines fehlenden Ziels, das auf der Registerkarte "Erstellen" des Erstellungsschemas aufgeführt ist. Sie können darauf zugreifen, indem Sie das Bearbeitungsfenster des aktuellen Schemas öffnen.
Bearbeiten: Mein UI-Testziel funktionierte nicht so gut. Die Lösung bestand darin, es zu löschen und erneut zu generieren.
quelle
Öffnen Sie xcode -> general -> Embedded Binaries -> fügen Sie QBImagepicker.framework und RSKImageCropper hinzu -> clean project
Fügen Sie einfach QBImagePicker.framework und RSKImageCropper.framework bei eingebetteten Binärdateien hinzu, die für mich funktioniert haben
quelle
Ich denke, es gibt keinen festen Weg, um dieses Problem zu lösen, da es aus verschiedenen Gründen verursacht werden könnte. Ich hatte dieses Problem auch letzte Woche, ich weiß nicht, wann und was genau dieses Problem verursacht, nur wenn ich es auf einem Simulator mit Xcode ausführe oder versuche, es auf dem Telefon zu installieren, dann meldet es einen solchen Fehler, aber wenn ich Führen Sie es mit reaktionsnativen Run-Ios mit Terminal aus, es gibt kein Problem.
Ich habe alle im Internet veröffentlichten Methoden überprüft, z. B. Zertifikat erneuern, Einstellungen in Xcode ändern (alle oben genannten Möglichkeiten). Tatsächlich wurden alle Einstellungen in Xcode bereits wie zuvor angefordert festgelegt. Keine der Möglichkeiten funktioniert für mich. Bis heute Morgen, wenn ich die Pods lösche und neu installiere, wird der Fehler nach einer Woche endlich auftreten. Wenn Sie auch Cocoapod verwenden und dann ein Fehler ohne bestimmten Grund angezeigt wurde, können Sie vielleicht meinen Weg versuchen.
quelle
Ich habe dieses Problem nur beim Ausführen auf einem realen Gerät (iPhone SE) festgestellt. Am Simulator arbeitete das Projekt wie erwartet.
Ich habe alle Korrekturen von diesem Thread und von hier aus versucht . Keiner von denen hat für mich gearbeitet.
Für mich wurde das Problem nach dem Neustart des iPhone gelöst (sic!).
Ich tat:
Und es funktioniert endlich. :) :)
Wenn jede andere Lösung fehlschlägt, vergessen Sie nicht, sie auszuprobieren.
quelle
Xcode 11: Phasen erstellen -> Frameworks einbetten
quelle