Site icon AppTractor

Как я уменьшил размер моего приложения на 73%

Этим летом я заметил, что мое приложение набрало вес, но я не был уверен, что вызвало это и как это выяснить.

Поиграв с иконкой одного размера, я познакомился с процессом определения размера приложения и решил копнуть дальше.

Последние результаты на iPhone 14 Pro были такими:

App size: 71,8 MB compressed, 82,4 MB uncompressed

Это много для приложения, которое изначально весило около 8 Мб (если я правильно помню…). С тех пор я добавил много коров, а также два расширения (виджет и уведомления), но все равно это увеличение не показалось мне правильным.

Ассеты являются общими для приложения, виджета и уведомлений, но файл Assets.car дублируется для каждого из них. Таким образом, любой такой файл занимает в приложении iPhone в 3 раза больше места, чем сам файл.

Благодаря моему другу Акселю я научился открывать файлы Assets.car с помощью iOS Images Extractor.

Все мои коровы — это универсальные PDF-файлы, но Xcode генерирует из них 3 PNG. Вот почему некоторые люди перестали использовать PDF-файлы.

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

В ней много деталей, поэтому, конечно, ее было трудно сжать. Три png-файла (@1x, @2x, @3x) вместе весили 1.2 Мб!

Это связано с тем, что в моем файле Affinity Designer размер монтажной области установлен на 800×600 точек, а это означает, что Xcode сгенерирует @1x с размером 800×600 пикселей. Это излишне, тем более что @3x теперь будет иметь разрешение 2400×1800 пикселей. Это НАМНОГО больше пикселей чем то, что нужно приложению.

Поскольку в Xcode 12 добавлена поддержка файлов SVG, я решил попробовать.

App size: 78,1 MB compressed, 88,9 MB uncompressed

Только версия @3x, сгенерированная Xcode, весила 3.9 Мб.

Затем я попробовал другой подход, который мне предложили — я создал Swift Package «CowsKit» только с этим ассетом.

К сожалению, как и в случае с Assets.car, пакет дублируется во всех таргетах, которым он нужен, как показано на этом изображении моего расширения уведомлений.

Я вернулся к своему файлу и изменил размер Artboard на 400ptx300pt вместо 800ptx600pt.

App size: 70,9 MB compressed, 81,5 MB uncompressed

Это было обнадеживающе. Мне стало любопытно, и я сделал еще одну попытку с разрешением 80ptx60pt.

App size: 70,3 MB compressed, 80,8 MB uncompressed

Это на 1.5 Мб меньше всего с одним файлом. А так как это векторный файл, я могу отобразить корову на весь экран, и качество будет таким же.

Я не мог в это поверить. Я подумал, что:

Для этого второго пункта я сделал две проверки:

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

Результат

После нескольких часов повторной обработки изображений мне не терпелось увидеть результат.

App size: 21,2 MB compressed, 32,2 MB uncompressed

С 71.8 Мб до 21.2 Мб для iPhone 14 Pro.

Дополнительно

Я использовал iOS Image Extractor и DaisyDisk для проверки файла Assets.car и обнаружил еще несколько вещей, которые можно было бы улучшить:

Это сэкономило мне еще 2 МБ:

App size: 19,3 MB compressed, 30,6 MB uncompressed

Обновление иконок моих приложений для поддержки новых размеров

К этому моменту мои иконки все еще использовали All Sizes (Xcode 13), что означало, что мне не хватало некоторых размеров.

Я воссоздал иконки для моих 99 альтернативных иконок и для основной и создал новый экспорт.

App size: 29,1 MB compressed, 41,2 MB uncompressed

Дополнительные 10 Мб! Это меня удивило, потому что если бы мои недавние злоключения в единой иконкой закончились бы ничем, то общий вес приложения все равно был бы намного меньше.

Я подготовил новый архив:

App size: 22,2 MB compressed, 33,4 MB uncompressed

Оказывается, Single Size Icon не так уж и плох! Единственная причина, по которой мой результат был разочаровывающим, заключается в том, что мое сравнение было несправедливым, поскольку параметр Single Size обрабатывал больше размеров, чем моя существующая конфигурация (All Sizes в Xcode 13).

Сравнение размеров файлов в App Store

Последним шагом для меня было сравнение размеров файлов в App Store Connect.

Вы можете получить к ним доступ на вкладке Testflight:

Вот скриншоты до/после. Результат чертовски радует.

Вывод

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

По-видимому, правила, по которым нужно жить, таковы:

Источник

Exit mobile version