43569


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

言語：Swift4  
環境：Xcode9.3

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

[![100MB超えしたipaファイル](https://i.stack.imgur.com/PJN36.png)](https://i.stack.imgur.com/PJN36.png)

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

[![アプリ内のファイル一覧](https://i.stack.imgur.com/dKFIb.png)](https://i.stack.imgur.com/dKFIb.png)

これらのライブラリをimportしていた覚えがなかったため、これらが一体何なのかもよく分かっていません。  
原因を調べている中で[こちらの質問](https://stackoverflow.com/questions/32588757/after-
switching-to-xcode-7-app-size-grew-from-9-mb-to-60-mb-is-there-a-
fix)が近いかなと思って読んでいましたが、何故このライブラリが大きくなっているのかまでは言及されていませんでした。（[こちらの記事](http://blog.sorausagi.org/2017/10/swift-
objective-c.html)も参考にさせていただきました。）

また、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

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

  * <https://developer.apple.com/library/content/qa/qa1795/_index.html>
  * <http://www.bravesoft.co.jp/blog/archives/1284>

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

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

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


CC BY-SA 3.0
2018-04-23T11:11:49.333
43494
2018-04-26T10:29:12.050
27641
question
ios xcode swift4
ipaファイル内のFrameworksのサイズが膨れ上がっているのは何故？


> そこで私が知りたいことは以下の２点です。
>
>   * このライブラリがアプリに格納されている理由
>   * ipaファイルのサイズを落とすにはどうすれば良いか
>

について回答します。

**libswiftCore.dylib** と **libswiftFoundation.dylib** が含まれる理由はずばり

「 **Swiftを使っているから** 」

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

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

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

**追記**

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

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

[![App Store
ファイルのサイズ](https://i.stack.imgur.com/pqJXK.png)](https://i.stack.imgur.com/pqJXK.png)

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


CC BY-SA 3.0
2018-04-26T08:43:15.473
43569
2018-04-26T10:29:12.050
2018-04-26T10:29:12.050
23829
23829
43494
answer