7

軽度のハックを使用すると、iOS 用の静的フレームワークを作成できます。静的フレームワークは非常に便利に使用できます。追加の手順 (ビルドへの追加やヘッダー検索パスの追加など) なしで、単純に新しいプロジェクトにドロップできます。

最近 OS X プログラミングを始めたのですが、最初に気付いたのは、静的フレームワークが利用できないようだということでした。動的フレームワークは明らかに利用可能であり、推奨されていますが、アプリケーションでの使用を目的とした小さなプライベート フレームワークを作成したいので ( へのインストールではありません/Library/Frameworks)、新しいアプリケーション プロジェクトで動的フレームワークを使用するには、まだ多くの追加手順が必要です

私の理想的な世界では、静的フレームワーク (ヘッダー ファイルとコンパイル済み.aファイルを含むフレームワーク) を作成し、そのフレームワークを新しいプロジェクトにドラッグ アンド ドロップして、コーディングを開始します。OS X でそのような静的フレームワークを作成する方法はありますか?

PS通常のフレームワークプロジェクトでMach-O出力タイプを「静的ライブラリ」に設定しようとしましたが、エラーが発生しましFramework target has invalid MACH_O_TYPE value of 'staticlib'.た。

4

2 に答える 2

2

Mac OS X で動的フレームワークを作成できます。動的フレームワークでは、LD_DYLIB_INSTALL_NAME を @rpath/Foo.framework/Versions/A/Foo として設定できます。

このフレームワークとリンクしたいアプリがある場合は、必ず実行してください

  install_name_tool -add_rpath <rpath> <full-path-to-app-binary>

Foo.app があれば

  install_name_tool -add_rpath Foo.app/Contents/Library Foo.app/Contents/MacOS/Foo 

Foo.framework を Contents/Library にコピーするだけでロードされ、すべてが機能するはずです。

これが役立つことを願っています。

おそらく、パブリック ヘッダーを持つ静的ライブラリを使用する方が簡単でしょう。静的ライブラリをビルドすると、Xcode にヘッダーを自動的にコピーさせることができます。ターゲットでは、フォルダーを検索パスに追加できます。

静的ライブラリを使用する場合、Xcode はアプリが実際には必要としないデッド コードを削除しますが、静的ライブラリにコンパイルされます。

于 2014-12-18T07:45:41.540 に答える
1

静的フレームワークは、OS X では実際にはサポートされていません。いずれにせよかなり壊れやすく、iOS には存在するが OS X には存在しない特定の問題を解決します。

作成したライブラリを開発者が簡単に使用できるようにしたい場合は、いくつかのオプションがあります。

  1. ココアポッドを使用します。CocoaPods でライブラリを公開するためのチュートリアルがあります。これはおそらく、OS X でライブラリを配布する最も簡単な方法です。
  2. ライブラリをフレームワークとしてパッケージ化します。インストール名を正しく ( に@rpath/<library name>) 設定すると、下流の開発者はフレームワークを Xcode プロジェクトにコピーし、アプリケーションのランタイム検索パスを に設定するだけで済みます@executable_path/../Frameworks)。
于 2014-12-15T21:29:54.757 に答える