ipaファイル内のFrameworksのサイズが膨れ上がっているのは何故?

投稿者: Anonymous

iOSEngineer初心者です。以下の環境で実施しました。

言語:Swift4
環境:Xcode9.3

はじめて着手したiOSアプリの開発も一区切りが付き、TestFlightにアップロードするためにp12とプロビジョニングプロファイルを管理者からいただいてipaファイルを作成しました。
(本来ならXcodeから直接TestFlightにアップロードしたいのですが、社内規則上、ipaファイルを渡して管理者にあげてもらう必要があり、このような手段を取っています。)
すると、ipaファイルのサイズが100MB超になってしまいました。。。

100MB超えしたipaファイル

コード量とやっていることは大したことない為、困惑してしまいました。
ipaファイルをunzipして中身を確認したところ、FrameworksのlibswiftCore.dyliblibswiftFoundation.dylibのサイズが極端に大きいことに気づきました。(画像が大きくてすいません。。)

アプリ内のファイル一覧

これらのライブラリをimportしていた覚えがなかったため、これらが一体何なのかもよく分かっていません。
原因を調べている中でこちらの質問が近いかなと思って読んでいましたが、何故このライブラリが大きくなっているのかまでは言及されていませんでした。(こちらの記事も参考にさせていただきました。)

また、ipaファイルのサイズを小さくするために、以下のことを試しましたが、劇的な効果は得られませんでした。

  • Apple LLVM OptimizeLevel → Fastest, Smallest
  • Asset Catalog Compiler-Options Optimization → Space
  • log部分をコメントアウト
  • Swift Compiler-Code Generation OptimizeLevel → Optimize for Size
  • Deployment Postprocessing → Yes
  • Symbols Hidden by Default → Yes
  • Strip Linked Product → Yes

以下のサイトも参考にしていました。

そこで私が知りたいことは以下の2点です。

  • このライブラリがアプリに格納されている理由
  • ipaファイルのサイズを落とすにはどうすれば良いか

分かりづらい点や情報が不足しているところがあれば指摘してください。
何卒よろしくお願い致します。

解決

そこで私が知りたいことは以下の2点です。

  • このライブラリがアプリに格納されている理由
  • ipaファイルのサイズを落とすにはどうすれば良いか

について回答します。

libswiftCore.dyliblibswiftFoundation.dylib が含まれる理由はずばり

Swiftを使っているから

です。
Swiftを使っているアプリならどれでもこれらを含んでいます。

なので、Swiftをやめて、すべてObjective-Cで書き直せばサイズはぐっと小さくなるでしょう。

という解決策はおそらく現実的ではないと思いますので、
実際にはどんな小規模なアプリでも Swift を使っていればこのサイズになることを
管理者に理解してもらうほかないと思います。

追記

実際にiTunes Connectにアップロードすると、
アクティビティ→すべてのビルドにアップロードしたビルドが列挙されます。
そのビルドをクリックして、「App Store ファイルのサイズ」を開くと
各機種に実際にダウンロードされる推定ファイルサイズを確認することができます。
(ビルドが「処理中」の場合はしばらく待ってください)

以下の例では、手元では 154.4MBだった ipa が
ダウンロードサイズでは 11MB ほどになることが確認できます。

App Store ファイルのサイズ

それでも Swift を全く使わないアプリに比べれば大きいですが、
100MBまるごとユーザーの端末にDLされるわけではないことがわかると思います。
管理者の説得材料にどうぞ。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *