[解決済み】ライブラリ?静的?ダイナミック?それともフレームワーク?プロジェクトの中に別のプロジェクトがある
質問
既存のiOSアプリがあるのですが、テストを容易にするために、別のプロジェクトとして開発してきたコードの大きな塊を追加したいと考えています。新しいチャンクは、基本的に画像をさまざまな共有サービスなどに保存することを扱っています。この共有コードは多くのテストと将来のアップデートが必要なため、そのコードチャンクを既存のアプリに組み込む最良の方法は何だろうと考えていました。
スタティック・ライブラリ、ダイナミック・ライブラリ、フレームワークのどれにすべきなのか、正直なところ、何が違うのか、どうすればXcodeにセットアップできるのか、よくわかりません。
私が知っているのは、共有コードのテスト・更新用アプリを別に用意し、メインアプリにそれを使わせる必要がある/させたいということだけです。
どのように解決するのですか?
まず、一般的な定義(iOSに特化したもの)をいくつか紹介します。
静的ライブラリ - コンパイル時にリンクされたコードの単位で、変更されることはありません。
ただし、iOSのスタティック・ライブラリは ではない は、画像やアセットを含むことができません(コードのみ)。この課題を回避するには メディアバンドル とはいえ
より良い、正式な定義は、Wikipediaに記載されています。 こちら .
ダイナミックライブラリ - 実行時にリンクされるコードやアセットの単位で、以下のようなものです。 可能性があります。 を変更します。
しかし、iOS用のダイナミックライブラリを作成できるのはAppleだけです。これを作成するとアプリが拒否されるので、作成することはできません。(参照 これ 他のSOの投稿に確認と理由があります)。
ソフトウェアフレームワーク - タスクを達成するためにコンパイルされたコードのセット...したがって、実際には 静的フレームワーク または ダイナミックフレームワーク これらは通常、上記のコンパイルされたバージョンに過ぎない。
をご覧ください。 ソフトウェアフレームワークに関するWiki をご覧ください。
したがって、iOSでは、基本的に静的ライブラリか静的フレームワークを使うしかありません(主な違いは、静的フレームワークは、コンパイルされた
.a
一方、静的ライブラリは単にサブプロジェクトとして含まれることが多く、すべてのコードを見ることができます。
.a
ファイルをプロジェクトの依存関係として使用します)。
iOS用の静的ライブラリとメディアバンドルのセットアップはそれほど難しくなく、その方法については多くのチュートリアルがあります。個人的には、このチュートリアルをお勧めします。
https://github.com/jverkoey/iOS-Framework
これは非常にわかりやすいガイドで、偽の静的ライブラリを扱うというデメリットはありません。
静的ライブラリを作成したら、それを サブモジュール を Git に登録して、さまざまなプロジェクトで使えるようにします。
グッドラック
EDIT
について
サブプロジェクト
私の知る限り、これを正しく動作/コンパイルさせるには、基本的にサブプロジェクトが最初にコンパイルされるようなコンパイルチェーンを設定する必要があり、これにより静的フレームワークである
.a
ファイルを作成し、プロジェクトで依存関係として使用します。
このチュートリアルでは、このことについて説明しています。
http://www.cocoanetics.com/2011/12/sub-projects-in-xcode/
EDIT 2
iOS 8から、Appleは開発者がダイナミックフレームワークを作成することを許可するようになりました! (注意:ダイナミックフレームワークを含むには、アプリのターゲットが最低でもiOS 8でなければなりません...バックポーティングは許可されていません)。
これは新しいプロジェクトテンプレートとして追加されました。Xcode 6.1では、次の場所で見つけることができます。
New Project -> iOS -> Framework & Library -> Cocoa Touch Framework
関連
-
[解決済み] UIViewController viewDidLoad vs. viewWillAppear。適切な役割分担とは?
-
[解決済み] フレームワークとライブラリの違いは何ですか?
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] iOSアプリを投稿するためにアーカイブしようとすると、プロビジョニング設定の競合エラーが発生する
-
[解決済み】UIScrollView Scrollable Content Size Ambiguity
-
[解決済み】Xcode Derived dataフォルダの中身を安全に削除できますか?
-
[解決済み】Xcode : プロセスのタスクの取得に失敗しました。
-
[解決済み】Xcode 10: この実行ファイルに有効なプロビジョニングプロファイルが見つかりませんでした。
-
[解決済み】Xcodeのビルドオプション「Enable bitcode」Yes/Noの影響について
-
[解決済み] xcodeでiOSアプリのアーカイブを生成できない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】AdMobにアプリケーションを入れたら「ライブラリが見つからない」というエラーが出た
-
[解決済み] Cordova Camera iOSの問題。NOT_FOUND_ERR
-
[解決済み] Xcode 4で「既存のフレームワークを追加」する方法は?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] フレームワークとライブラリの違いは何ですか?
-
[解決済み] アプリケーション・バイナリ・インターフェース(ABI)とは何ですか?
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み】スタティックリンクとダイナミックリンクの比較
-
[解決済み】xcode 7でENABLE_BITCODEは何をするのですか?
-
[解決済み】Xcode。ターゲットとスキームとは、わかりやすく言うと?