iOS 8は動的リンクをサポートしていますか?
-
02-01-2020 - |
質問
IOS7まで、Appleはセキュリティ上の懸念のために動的リンクをサポートしていませんでした。通常、開発者間で通常静止ライブラリに依存しています。これはアプリの実行可能ファイルの一部として構築されました。
IOS8の拡張機能の導入は、拡張機能が別々の実行可能ファイルであるため、これを少し変更しているようです。拡張子とその含有アプリ間のコードを共有することはフレームワークを介して行われます。 Appleは彼らのリリースノートでこれを言っています:
iOSのフレームワーク。 IOS開発者は、 Dynamic フレームワークを作成できるようになりました。 フレームワークはカプセル化するためのコードとリソースの集まりです。 複数のプロジェクトにわたって貴重な機能。フレームワーク 両方で使用できる共有ロジックを拡張機能で完全に動作させる メインアプリケーション、およびバンドルされた拡張子。
強調は私のものです。
さらに、拡張開発ガイドでは、「埋め込みフレームワーク」を介して拡張子と包含アプリの間でコードを共有できることを説明しています。
私の質問は、組み込みフレームワークとは何ですか、それはどのように動的枠組みとどのように異なりますか、そして私たちは本当にiOS8で適切な動的リンクを見ますか?私が読んだすべての文書はこれについてあいまいなようです。
解決
「埋め込み」と「動的」フレームワークはフレームワークの同じ側面を参照していません。彼らは互いに反対ではありません。まず、フレームワークとは何を定義しましょう.Apple Lingoでは、フレームワークはいくつかのコンパイル済みコード+上記のコードのパブリックヘッダーを指します。
-
これで動的フレームワークは、コードが動的ライブラリとして構築されたフレームワークです。コードが静的ライブラリとして構築される「静的な」フレームワークの反対です。あなたが疑問に思う場合は、静的ライブラリと動的ライブラリの違いは何ですか?
-
および最後に、埋め込みフレームワークは、システム全体でインストールされているとは対照的に、「/ system / library / Frameworks」では、アプリ内でパッケージ化されているフレームワークです。
他のヒント
埋め込みフレームワークは、システムディレクトリにインストールされているグローバルフレームワークではなく、アプリバンドルに含まれているものです。
動的フレームワークは動的にリンクされたフレームワークを意味しません。アプリはまだサンドボックス環境で動作します。カスタムフレームワークがiOSでインストールされることが嫌ではありません。開発した共通のフレームワークを使用するあなたのアプリのそれぞれは、すべてのアプリのバンドルの中にコピーされる予定です。
あなた自身のためにこれを見ることができます。 Xcodeの派生データディレクトリとアプリのデータ内に移動し、すべての組み込みフレームワークがコピーされたすべての埋め込みフレームワークがあります。
静的ライブラリと比較してiOS 8を持つフレームワークを作成した唯一の新しいものは、パブリックヘッダーファイルとアセットがフレームワーク内にバンドルされることです。以前のバージョンのXcodeでこの種のものをしていた場合は、パブリックヘッダーの提供とその後、Xcode設定内の検索パスを追加し、検索パスを追加し、別のバンドルに合格しなければならないアセットを追加します。
私が見るフレームワークを使用することの欠点だけで、私たちは単に lipo を単に使用してすべての種類のアーキテクチャのためのFAT静的ライブラリを生成することはできません。
IMO Appleは「Dynamic」という言葉を使って「独立」を提案しています。
WWDC2014 - 建物現代のフレームワーク詳細については