ios - ツール - 画像 スライス リンク



スクリプトを使用せずにシミュレータスライスを削除することなく動的フレームワークを作成する方法 (1)

疑われるように、GoogleMobileAds.frameworkは動的フレームワークではなく静的フレームワークです。

> file GoogleMobileAds
GoogleMobileAds: Mach-O universal binary with 5 architectures: [arm_v7: current ar archive] [arm_v7s] [i386] [x86_64] [arm64]
GoogleMobileAds (for architecture armv7):   current ar archive
GoogleMobileAds (for architecture armv7s):  current ar archive
GoogleMobileAds (for architecture i386):    current ar archive random library
GoogleMobileAds (for architecture x86_64):  current ar archive random library
GoogleMobileAds (for architecture arm64):   current ar archive

一方、動的フレームワークでfileを実行すると、異なる結果が得られます。

> file AppKit 
AppKit: Mach-O universal binary with 2 architectures: [i386: Mach-O dynamically linked shared library i386] [x86_64]
AppKit (for architecture i386): Mach-O dynamically linked shared library i386
AppKit (for architecture x86_64):   Mach-O 64-bit dynamically linked shared library x86_64

残念ながら、あなたが説明している問題はApp Store配布システムの既知の制限です。 理論的には、動的フレームワークを配布する正しい方法は、全脂肪バイナリをすべてのアーキテクチャーと一緒に配布し、ビルド時に不要なアーキテクチャーを捨てるか、App Storeの配布システムにそれをスライスさせることです。特定のデバイス用のアプリ(「 slicing 」)。 私が推測しなければならないのは、これらのシステムはApp Storeからのスライスをサポートしていないため、App Storeの配布はiOS 8以下のサポートのためにこのようなフレームワークで失敗することです。

Googleが静的ライブラリを作成するのは、iOS 7をサポートするためです。この日と時代において愚かな理由として、GoogleもCocoaPodの使用を強く主張しているため、開発者にとって多くの問題を引き起こしています。 静的フレームワークは、表面的には銀色の弾丸のように見えますが(「アーチを作成するためのスクリプトはありません。埋め込みはできません」)、実際にはそれほど素晴らしいものではありません。 たとえば、コンパイルされていないリソースを含めたい場合は、静的フレームワークではうまくいきません(動的フレームワークはバンドルですが、静的フレームワークはバンドルされていません)。

動的フレームワークを作成して配布したいと思います。 シミュレータ、iPhoneデバイス上で実行し、App Storeに送信できるようになると動作する必要があります。

私はこのguideおかげでlipoに気付いた。 シミュレータアーキテクチャとiphoneアーキテクチャを、ソースコードを配布せずに配布できる単一の動的フレームワークに組み合わせる方法を示します。 それは私がシミュレータとiPhoneデバイスの両方にフレームワークを使うことを可能にします。 ただし、 シミュレータを構築しているためApp Storeに送信しようとすると失敗します。

カルタゴは興味深い解決策を提供します。 シミュレータとiPhoneの両方で機能するフレームワークを作成します。 しかし、それをApp Storeに送信するときが来たら、シミュレータスライスを切り取るためのスクリプトを実行する必要があります。

ただし、 DoubleClick for PublishersDFP )の作成者は、シミュレータとデバイスの両方で機能するフレームワークを作成する方法見つけました 。 App Storeへの送信に合格します。 そして、シミュレータスライスを切り取るためのスクリプトを必要としません(AFAIK)。 私が本当にしなければならないのは、 GoogleMobileAds.frameworkファイルをLinked Frameworks and LibrariesドラッグすることGoogleMobileAds.frameworkです。 ほとんどの動的フレームワークのようにEmbedded Binariesに追加する必要がないことは少し驚くべきことです)

これを実証するDFPを使用したサンプルプロジェクトを作成しました。

// clone repository
git clone --recursive https://github.com/wh1pch81n/DoubleClickGoogleExample.git

// Move to correct branch
git submodule foreach 'git checkout master'
git submodule foreach 'git pull origin master' 

これで、Simulation_mateスキームを選択してアプリを実行できます。 アプリの下部に単一の広告バナーが表示され、広告が実際に機能していることが示されます。

依存グラフはこのようになります。

Simulation_mate.app
   -> Mate.framework
      -> DFP.framework
         -> GoogleMobileAds.framework

繰り返しになりますが、私はシミュレータ、iPhoneでSimulation_mateを実行し、それをApp Storeに送信することができます。

私の質問は、世界中でどのように彼らがこのようにGoogleMobileAds.frameworkを作成したのですか? このようなフレームワークを作成するためにどのようなステップに従う必要がありますか?





frameworks