Site icon AppTractor

Как я уменьшил размер банковского приложения для iOS на 50%

TPBank — это мое вьетнамское банковское приложение, которым я пользуюсь каждый день уже 6 лет. Недавно я впервые посмотрел на размер приложения и был шокирован.

650 МБ. В 2 раза больше, чем средний размер банковского приложения в стране.

Мне стало любопытно, и я решил разобраться в этом.

В этой статье я расскажу о том, что мне удалось обнаружить, и о некоторых решениях, позволяющих сократить размер приложения вдвое. Надеюсь, вы сможете чему-то научиться и применить эти приемы в своем iOS-проекте.

Выражаю благодарность Emerge за их потрясающие инструменты.

1. Неиспользуемые тяжелые ресурсы

Когда я проверял их бандл, я понял, что они используют определенные mp4-файлы и изображения для особых событий, таких как Новый год и Рождество. Однако сейчас уже декабрь. Сохранение ресурсов для новогодних событий годовой давности в приложении является ненужным, и мы должны удалить их.

Я нашел эти новогодние ресурсы, отфильтровав ключевое слово «tet» (Новый год по-вьетнамски). Удаление всех этих ресурсов может уменьшить размер приложения на 30 МБ.

2. Неоптимизированные ресурсы

Размер ресурсов приложения TPBank составляет 200 МБ. Это даже больше, чем у некоторых других банковских приложений.

При анализе приложения я заметил 2 проблемы:

2.1. Несжатые изображения

В приложении TPBank много больших изображений. Размер многих изображений превышает 2 МБ.

Мы можем уменьшить размер изображений с помощью сжатия с потерями или конвертировать их в формат HEIC. Это может уменьшить размер приложения на 159.7 МБ.

2.2. Использование iPad изображений для iOS-приложения

Фильтрация ресурсов по ключевому слову «iPad» дала следующие результаты:

TPBank iOS Bundle содержит ресурсы для iPad. Это связано с тем, что изображения настроены как универсальные. Мы можем изменить принадлежность этих изображений на iPad, а Apple поможет нам удалить их из приложения для iOS (App Thinning). Это поможет уменьшить размер iOS-приложения на 20 МБ.

2.3 Невозможность использовать App Thinning

Некоторые модули приложения TPBank сделаны с помощью Flutter.

Однако ресурсы в модуле Flutter нельзя оптимизировать, используя ассеты 1x/2x/3x и App Thinning. Это приводит к огромному размеру ассетов (17.1 МБ только для модуля Flutter).

3. Дублирование ресурсов

Можно легко заметить, что TPBank содержит много дублирующихся ресурсов: изображений и шрифтов.

Изучив пакет, я заметил, что некоторые фреймворки содержат собственные встроенные шрифты.

Мы можем перенести эти дублирующиеся ресурсы и шрифты в общий UI бандл. Потенциальная экономия, рассчитанная инструментом Emerge, составляет почти 28 МБ.

Мы также можем интегрировать некоторые инструменты для обнаружения дубликатов ресурсов, о которых я уже рассказывал в предыдущей статье.

4. Не вырезанные бинарных символов

Двоичные файлы Swift содержат большое количество символов, которые используются динамическим компоновщиком. В производственных сборках они, как правило, не нужны. Приложение TPBank не удаляет эти ненужные символы, что увеличивает размер приложения.

Чтобы убрать двоичные символы, мы можем обратиться к этому руководству от Emerge. Потенциальная экономия при размере приложения составляет 55 МБ.

5. Малоиспользуемые ресурсы

Я использовал Emerge Tools и Asset Catalog Tinkerer, чтобы более тщательно изучить ассеты. Я обнаружил множество тяжелых рекламных изображений, которых никогда не видел в приложении.

99% пользователей не увидят эти изображения для событий, потому что они не относятся к основным бизнес-потокам приложения. У этих изображений низкий коэффициент использования.

Из-за их большого размера (многие изображения имеют размер ~4 МБ) мы можем рассмотреть возможность их перемещения в CDN, чтобы уменьшить размер приложения и принести пользу 99% пользователей.

Итого

Эти простые решения могут уменьшить размер приложения более чем на 300 МБ (~50% от исходного размера).

Есть еще много других улучшений, которые мы можем сделать, например:

Если вы нашли этот пост полезным, пожалуйста порекомендуйте статью другим.

Источник

Exit mobile version