アプリ開発

iOSアプリのサイズを軽量化したときの話

先週、iOSアプリのプロジェクトを見直し、35.8 MB から 17.3 MB まで 軽量化しました。
その方法とは、「プロジェクトから要らない画像を削除するだけ」でした。

iOSアプリのサイズを最適化する

Appleは、iOS11の公開にあわせて、モバイルデータ通信時にApp Storeからアプリをダウンロードするときの容量制限を 100 MB から 150 MB に拡大しました。

Higher Limit for Over-the-Air Downloads - News - Apple Developer
Higher Limit for Over-the-Air Downloads - News - Apple Developer

We’ve increased the cellular download limit from 100 MB to 150 MB, letting customers download more a ...

続きを見る

さらに、iPhone端末自体の大容量化や、LTE回線により高速通信が可能になったことで、大きなサイズのアプリも不自由なく利用できるようになりました。
とは言え、アプリのサイズはもちろん今でも小さいほうがいいです!

私自身も、当初からアプリのサイズは小さくするように開発していました。
写真はその都度ダウンロードするため、アプリの中には5枚くらいしか入ってない...はずでした。

私がはじめに着目したのは、データベースファイルです。

SQLiteファイルを最適化する

私の使用しているSQLiteファイルには、テキストと写真のURLなどが保存されています。
調べてみると、SQLiteはテーブルからデータを削除したらすぐSQLiteファイルのサイズが小さくなる訳では無いようです。ファイルの中で利用されていた領域はすぐに削除されるのではなく次にデータが追加された時に再利用されます。

空き領域の開放(VACUUM文) | SQLite入門
空き領域の開放(VACUUM文) | SQLite入門

SQLite のデータベースでファイルの追加や削除を繰り返していくと、格納されているデータの量に比例しないようなファイルのサイズになることがあります。ここでは VACUUM 文を使って使用していない領 ...

続きを見る

私のアプリではデータの削除はしていませんので、これは関係ありませんでした。

アプリサイズの内訳をチェックする

今回、ビンゴだった解決策はこちらです。
アプリサイズの内訳を確認してみたところ、不要ファイルがたくさん含まれていました。
(まさか、プロジェクトに含まれてたら使ってなくても一緒にコンパイルされてしまうなんて、、)

その方法は、まず以下の手順でOrganizerを開きます。

Xcodeでアーカイブしたファイルを再度表示する

以前にアーカイブしたiOSアプリをもう一度使いたいときってありませんか?私は、これが分からなくてもう一度ビルドし直した経験があります...が、時間の無駄ですよね、、笑 Contents1 Xcodeの ...

その後、確認したいアーカイブを選択後、右クリックして「Show In Finder」を選択。ファインダーで開きます。

次に、開いたディレクトリにある .xcarchiveファイルを右クリックして、「パッケージの内容を表示」を選択します。

さらに、Products > Applications の中にある、.appファイルを右クリックして、先ほどと同様に「パッケージの内容を表示」を選択します。

この中のファイルをサイズの大きい順に並べたら一目瞭然ですね!あまりにサイズの大きい画像などは、縮小や圧縮をしてみても良いかもしれません。

見事、ダイエットに成功!

▲ 軽量化前
▲ 軽量化後

アプリサイズが大きかった原因が分かってスッキリです!

-アプリ開発
-, ,

© 2020 teckmemo