[解決済み] iOSのStaticとDynamicのフレームワークの違いについて
質問
iOS 8 のリリースに伴い、iOS の動的および静的フレームワークについて少し混乱していることを認めざるを得ません。
私は自分が作成したライブラリを配布する方法を探しており、iOS 7 以上をサポートする必要があります。(注: これは独自のフレームワークになります。私は cocoa pods を使用することができず、また、ソースを配布することもできません)。以下は、私がすでに知っていることです。
- iOS 8 では iOS 用の "埋め込みフレームワーク" を導入しましたが、私の理解では、それらは iOS 7 では動作せず、iOS 8 以降でのみ動作します。
- 私のライブラリを静的ライブラリ (.a ファイル) として配布し、ヘッダーも配布するオプションがあります。これが状況に対処する一般的な方法であることは知っていますが、私はそれよりも単純なものを見つけたいと思います (そして、可能であれば、いくつかのリソースを一緒にバンドルすることも)。
- また、iOS 7 はダイナミック リンクをサポートしていないため、ダイナミック .framework ライブラリをサポートしていない (スタティックのみ) ことがわかりました。しかし、iOS 8 では、静的リンクと同様にサポートされています。
そして以下は、この情報についての私の質問です。
- 私は、Mach-O 型を "static library に変更することで、.framework ターゲットを作成し、それを静的にすることができると見ました。これは、問題なく iOS 7 をサポートし、また、私のライブラリを .framework バンドルとして配布するために十分なことでしょうか? もしそうなら、インターネット上の多くのリソースが示唆しているように、なぜiOS 8の"埋め込みフレームワーク"がそれほど大きな問題なのでしょうか?私は何かを見逃しているのでしょうか?
- 私が作る他のアプリケーションと同様に、.framework をコード化する必要があるのでしょうか?
- 他のリソース (コア データや画像など) を .framework ファイルに含める必要がある場合はどうすればよいですか? そのために別の .bundle ファイルを作成する必要があるのでしょうか。
どのように解決するのですか?
iOS8 以前では、Xcode では iOS 用の静的ライブラリを作成するオプションしかありませんでした。 その際の共通の問題は、バイナリとヘッダーを別々に出荷しなければならないことでした。
その後、一部の開発者は「静的フレームワーク」を作成するというアイデアを思いつきました。[.framework は lib とヘッダーへのシンボリック リンクを持つフォルダーに過ぎません]。そのような例の 1 つが https://github.com/jverkoey/iOS-Framework
このオプションは、iOS 7または8またはそれ以前で動作します。なぜなら、これらは単なる静的ライブラリで、ヘッダーファイルも一緒にバンドルされているという利便性があるからです。
リソースについての質問ですが、私たちはそれらを '.bundle' でバンドルする必要があります。リソースを出荷するために、それらを .framework フォルダで囲むことができるかどうかはわかりません...。過去には、私は自分のライブラリを静的なフレームワークとバンドルとして出荷していました...
しかし、Swiftを使用している場合、上記のオプションはうまくいきません。Xcode は、Swift コードを含む静的ライブラリの構築をサポートしていません。
Swiftを使用する場合は、動的フレームワークを使用する必要があります。理論的には、Dynamic frameworksはiOS7で動作します。しかし、iTunes Connect は、アプリが iOS7 をターゲットにしていて、Dynamic frameworks を使用している場合、拒否すると思います :-).
お役に立てれば幸いです。
関連
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] Xcode 4で「既存のフレームワークを追加」する方法は?
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] アプリのプレビュー用にiOSシミュレータのビデオをキャプチャー
-
[解決済み] インポート vs #インポート - iOS 7
-
[解決済み] UITextFieldのテキストインセット?
-
[解決済み] ファイルはユニバーサル(3スライス)ですが、iOSの静的ライブラリのための(n)ARMv7-sスライスエラーが含まれていない、どうにかして回避するには?
-
[解決済み】スタティックリンクとダイナミックリンクの比較
-
[解決済み】ライブラリ?静的?ダイナミック?それともフレームワーク?プロジェクトの中に別のプロジェクトがある
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理】iOSのエラー、アーキテクチャx86_64の未定義シンボルについて
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] Objective-Cで文字列が空かどうかをテストするにはどうすればよいですか?
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] UITextViewのサイズをコンテンツに合わせるには?
-
[解決済み] アプリのプレビュー用にiOSシミュレータのビデオをキャプチャー
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み】スタティックリンクとダイナミックリンクの比較
-
[解決済み】ライブラリ?静的?ダイナミック?それともフレームワーク?プロジェクトの中に別のプロジェクトがある
-
[解決済み] Xcodeで「Linked Frameworks」ではなく「embedded binaries」を使用すべきなのはどのような場合ですか?