最近、既存の (iOS 7 互換) アプリに iOS 8 Photos Extension を追加しました。拡張機能は、一部のアイコンやその他の画像をメイン アプリと共有します。これらのアセットを共有するために組み込みフレームワークをまだ使用できないため (iOS 7 では使用できません)、これらのアセットを両方のターゲット (メイン アプリとアプリ内にバンドルされた拡張機能) に追加しました。そのため、アプリのサイズが約 2 倍になると予想していました。
しかし、ここに問題があります。アプリのサイズが約 3 倍になりました。理由を調べてみたところ、拡張バンドル内のコンパイル済みアセットは、メイン アプリ内のアセット (17.2 MB) と比較して 2 倍以上のサイズ (38.6 MB) であることがわかりました。これらは同じアセット カタログからのものであるため、これは奇妙です。
いくつか実験した結果、iOS のバージョンに関係があることがわかりました。拡張ターゲットには (明らかに) 展開ターゲットとして iOS 8 があり、メイン アプリにはまだ iOS 7 があります。メイン アプリの展開ターゲットを iOS 8 に変更すると、コンパイルされたアセットも 2 倍以上になります。
私の推測では、iOS 8 の場合、明示的に提供されていなくても、アセット コンパイラは iPhone 6 Plus 用の @3x イメージを自動的に生成します。問題は、アプリのサイズが不必要に大きくなるのを避けるために、意図的にそれらを提供しないことにしたことです (なんと皮肉なことでしょう...)。スケールアップしたバージョンは、私には十分に見えました。このアプリは、iOS 7 用にビルドされた場合 (アセットが小さい場合)、6 Plus でも動作し、意図したとおりに見えます。
TL;DR: iOS 8 の場合、アセット コンパイラは iOS 7 よりもはるかに大きな結果を生成します。
そうしないように伝える方法はありますか?