10

WebKit、WebCore、および JavaScriptCore のアプリ バンドルにカスタム フレームワークがあります。WebKit、WebCore、または JavaScriptCore のシステム バージョンに依存する他のすべてのフレームワークでも、私のカスタム バージョンを使用したいと考えています。たとえば、Webkit のカスタム バージョンは、WebKit のシステム バージョンに依存するプライベート システム フレームワークをロードします。これは、私の WebKit とシステム WebKit の両方がロードされ、通常はその直後にクラッシュが発生することを意味します。

これを行う必要があることを私が理解している方法は、アプリバンドルの実行が開始される前に DYLD_FRAMEWORK_PATH 環境変数を設定することです (フレームワークをロードするための検索順序は、ここにあります: http://code.google.com/p/macdependency/wiki/SearchPaths)。setenv を使用してコードで環境変数を設定できますが、現在実行中のプロセスには影響しません。有効にするには、プロセスを再度起動する必要があります。これも避けたい。

私の質問は、アプリバンドルの実行前に DYLD_FRAMEWORK_PATH を設定する最良の方法は何ですか? これは、リリース アプリ バンドルでも機能する必要があります。実行可能ファイルの実行が開始される前に誰かが私のアプリ バンドルをクリックするたびにスクリプトを実行する方法はありますか? それとも他に何か提案はありますか?

前もって感謝します。

4

4 に答える 4

2

Jeff Wolskiは、この件に関する Apple のドキュメントを直接参照して、正しい考えを持っています。このスレッドは、Xcode でそれを実現する方法についても優れたアドバイスを提供します。これには、別の仕様方法 (~/.bash_profileユーザーに対して直接使用するなど) に関連するまれなケースが含まれます。

私が声を上げた理由は、あなたを支援できる可能性のあるスクリプトも求められたからです (報奨金提供者も同じ問題を抱えているようです)。Webkitはそのドキュメントでそのようなスクリプトを参照していることが判明しました。これは、該当する Webkit ソース コードとは別に選択することをお勧めします。これにより、少なくとも開発者によると、これを適切に行う方法についての追加のガイダンスが得られるはずです。

あなたのプロジェクトの幸運を祈ります。

于 2012-04-08T00:11:05.480 に答える
1

environment.plistまたは のLSEnvironmentキーをお勧めしますinfo.plist。以下のリンクをチェックしてください。

https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/EnvironmentVars.html

于 2012-04-06T21:09:13.443 に答える