Ich habe benutzerdefinierte Frameworks in meinem App-Bundle für WebKit, WebCore und JavaScriptCore. Ich möchte, dass alle anderen Frameworks, die von den Systemversionen von WebKit, WebCore oder JavaScriptCore abhängig sind, auch meine benutzerdefinierten Versionen verwenden. Zum Beispiel lädt meine benutzerdefinierte Version von Webkit private System-Frameworks, die wiederum von der Systemversion von WebKit abhängen. Das bedeutet, dass sowohl mein WebKit als auch das System WebKit geladen werden und in der Regel kurz darauf ein Absturz auftritt.
So wie ich das verstehe, muss die Umgebungsvariable DYLD_FRAMEWORK_PATH gesetzt werden, bevor das App-Bundle ausgeführt wird (Suchreihenfolge zum Laden von Frameworks finden Sie hier: Ссылка ). Sie können Umgebungsvariablen im Code mit setenv festlegen, dies wird jedoch für den derzeit laufenden Prozess nicht wirksam. Ich müsste den Prozess erneut starten, damit er wirksam wird. Das möchte ich auch vermeiden.
Also meine Frage ist, was ist der beste Weg, um den DYLD_FRAMEWORK_PATH vor der Ausführung der My App-Bundle zu setzen? Dies muss auch in einem Release-App-Bundle funktionieren. Gibt es eine Möglichkeit, ein Skript auszuführen, wenn jemand auf mein App-Paket klickt, bevor die ausführbare Datei gestartet wird? Oder gibt es andere Vorschläge da draußen?
Vielen Dank im Voraus.
Jeff Wolski hat die richtige Idee , indem er direkt auf Apples Dokumentation zu diesem Thema Bezug nimmt. Dieser Thread bietet auch hervorragende Tipps, wie Sie das erreichen können in Xcode, einschließlich Eckfällen, die mit alternativen Methoden der Spezifikation verknüpft sind (z. B. durch direkte Verwendung von ~/.bash_profile
für Ihren Benutzer).
Mein Grund dafür ist, dass Sie auch nach einem Skript gefragt haben, das Ihnen helfen könnte (und ein Bounty-Provider scheint das gleiche Problem zu haben). Es stellt sich heraus, dass Webkit auf ein solches Skript in seiner Dokumentation verweist , das Sie vielleicht abgesehen von der zutreffende Webkit-Quellcode . Dies sollte Ihnen zusätzliche Hinweise dazu geben, wie Sie es zumindest den Entwicklern zufolge richtig machen sollten.
Viel Glück mit Ihrem (Ihren) Projekt (en).
Ich würde environment.plist
oder den Schlüssel LSEnvironment
in info.plist
empfehlen. Überprüfen Sie den folgenden Link.
Tags und Links xcode frameworks environment-variables app-bundle