Как удалить сжатие приложение
Владелец смартфона, решивший перепрошить Андроид или штатными средствами установить обновление официальной прошивки, перед первым включением устройства после применённых изменений непременно увидит окошко оптимизации приложений. Возможно его появление и в ряде других случаев, например при некорректном предыдущем завершении работы. Для чего нужна оптимизация приложений на Android и можно ли её полностью отключить — попробуем разобраться.
Что такое оптимизация приложений на Андроиде?
Оптимизация приложений на смартфоне — вполне естественный системный процесс; он может быть связан как с установкой нового программного продукта (самого лучшего антивируса на Андроид, графического редактора и так далее), так и с выполнением одного из стандартных алгоритмов, заложенных разработчиками.
Во время оптимизации телефон или планшет на Android с использованием программно-аппаратной связки (именно поэтому доступ к «Рабочему столу» ограничен) проверяет соответствие созданных приложениями данных текущим потребностям, восстанавливает связи между файлами и удаляет лишнюю информацию. Таким образом, по завершении процесса места во внутренней памяти становится больше, а приложения, ранее функционировавшие со сбоями или переставшие запускаться, восстанавливают работоспособность.
Процесс оптимизации при запуске смартфона на Android полезен, и стремиться убрать его любой ценой не стоит — до тех пор, пока устройство вследствие внутренней ошибки не начинает оптимизировать приложения при каждом штатном включении. Следствием этого может стать необходимость по нескольку раз перезагружать устройство, извлекать из него батарею и так далее; это неудобно, особенно когда нужно срочно воспользоваться смартфоном. И именно с такой оптимизацией, выходящей за рамки штатной, стоит бороться.
Важно: отключить оптимизацию приложений при запуске Андроида раз и навсегда невозможно; это системная опция, включающаяся помимо воли пользователя. Ниже будет рассказано только о способах борьбы с процессом, мешающим нормальной работе устройства — и только о безопасных вариантах.
Как убрать оптимизацию приложений на Android при включении?
Перед тем как приступить к отключению оптимизации (насколько оно вообще возможно), стоит сделать ещё одно замечание. Часто владельцам смартфонов на Android рекомендуют для устранения проблемы использовать кастомные (скачанные из Интернета и не одобренные разработчиком оперативной системы) прошивки — полные или касающиеся раздела Recovery.
Делать этого не стоит по трём причинам:
- нет никакой гарантии, что по завершении манипуляций в устройстве сохранятся пользовательские данные и настройки приложений;
- установка такого ПО подразумевает прошивку смартфона — это существенно сложнее, чем скачать Плей Маркет на Андроид, и в ряде случаев подразумевает отказ от гарантии;
- уже давно существуют специальные приложения, запускаемые из рабочей среды Android и справляющиеся с задачей ничуть не хуже кастомного Рекавери.
Совет: некоторые способы подразумевают необходимость скачать на устройство стороннее приложение — если не включается вай-фай на планшете или смартфоне, нужно предварительно решить эту проблему и переходить к исполнению инструкции.
Оптимизация в «Настройках» Android
Очень часто причиной желания системы лишний раз оптимизировать приложения становится невозможность иным образом избавиться от накопленного за время работы «мусора» — кэша приложений и отдельных создаваемых ими файлов, утративших значение.
Самый простой способ убрать оптимизацию при очередном включении устройства — это:
- Открыть «Настройки» Андроида и перейти в раздел «Оптимизация», «Очистка» или имеющий аналогичное по смыслу название.
- Дождаться, пока система завершит подготовку к очистке.
- Ознакомиться с текущим состоянием устройства и, если планируется навести порядок во всех перечисленных в окошке категориях, нажать на кнопку «Оптимизировать».
- Если же нужно только очистить кэш и таким образом отключить очередную оптимизацию, перейти в раздел «Память».
- Готово! Системного кэша на устройстве стало меньше, а значит, с большой долей вероятности отпала и необходимость очередной оптимизации при включении смартфона на Android.
Выборочная очистка кэша
Если первый вариант не помог и телефон продолжает оптимизировать приложения при каждом запуске, стоит попробовать, снова используя только системные средства, удалить в «Настройках» Андроида кэш отдельных приложений — возможно, именно он, не видимый системой, мешает нормальной загрузке. Пользователю нужно:
- Снова открыть «Настройки» телефона и перейти в раздел «Приложения» (иногда — «Память»).
- В открывшемся окне ознакомиться со списком установленных программ и объёмом занимаемого каждой из них пространства, после чего перейти к очистке кэша наиболее «весомых».
- И посмотреть, сколько места занимают кэш приложения, то есть созданные им и не имеющие принципиального значения для работоспособности файлы, и важные данные.
- Нажав на кнопку «Очистить кэш» и немного подождав, владелец смартфона на Android избавится от системного «мусора» и, вполне вероятно, сможет убрать оптимизацию приложений при очередном включении.
- Можно попробовать удалить и данные, важные для работы программы. Нажав на кнопку и согласившись с условиями.
- Пользователь избавится от сохранённых паролей, настроек и других параметров — а вместе с ними, бесспорно, и от ненужных файлов, замедляющих запуск и способных быть причиной постоянных попыток Андроида оптимизировать приложения.
Совет: перед тем как очищать данные, стоит как минимум переписать пароли, сохранённые в программе, и скопировать важную информацию — иначе она будет безвозвратно утеряна.
Сброс до заводских настроек
Если отключить оптимизацию приложений при включении смартфона на Android, используя перечисленные выше штатные средства, так и не получилось, юзер может выполнить полный сброс прошивки до исходного состояния. Проблема гарантированно решится, однако все данные, хранящиеся во внутренней памяти, будут уничтожены — а значит, перед тем как приступить к операции, не помешает сделать резервные копии.
Чтобы сбросить устройство до базового состояния, понадобится:
- Открыть «Настройки» Андроида и, спустившись вниз по странице.
- Параметр «Сброс данных» — «Сброс настроек» убрать оптимизацию при включении Android не поможет.
- Внимательно ознакомиться с условиями выполнения восстановления до заводских настроек.
- И нажать на кнопку «Сбросить» — через несколько минут владелец получит «чистый» телефон, не стремящийся синхронизировать приложения при каждом запуске.
Совет: в дальнейшем пользователю следует своевременно обновлять прошивку устройства — это поможет избежать системных ошибок, приводящих к слишком частому запуску оптимизации.
Очистка данных в файловом менеджере
Пользователь может попытаться вручную удалить кэш приложений, не определяемый системными настройками, в той или иной степени замедляющий запуск телефона и приводящий к слишком частой оптимизации Андроида. Сделать это можно с помощью любого стороннего файлового менеджера — встроенные, как правило, не слишком удобны. Владельцу смартфона на Android понадобится:
- Запустить приложение и перейти во внутреннюю память устройства.
- Здесь, последовательно открывая папки приложений.
- Пользователь может смело удалять все содержащиеся в них данные, выделяя их.
- Процесс займёт от нескольких секунд до нескольких минут. В результате обладатель телефона на Android получит устройство, очищенное «мусора» и не нуждающееся в постоянной оптимизации приложений.
Совет: помимо данных, содержащихся в указанном каталоге, имеет смысл вручную удалять папки, созданные удалёнными программами и по какой-либо причине оставшиеся на устройстве.
Отключение автозапуска
Сравнительно редко, но могут влиять на постоянное стремление Android к оптимизации и программы, автоматически включающиеся при запуске телефона. Отключить лишние пользователь сможет с помощью одного из самых нужных приложений для Андроида — All-In-One Toolbox. Скачав и установив его, нужно:
- Запустить программу и перейти на вкладку с дополнительными опциями.
- Подождать, пока All-In-One Toolbox создаст список всех установленных приложений.
- Выбрать ненужное при запуске и отключить его автостарт, передвинув ползунок в соответствующее положение.
- Чтобы убрать автозапуск сразу для всех программ и таким образом минимизировать вероятность новой оптимизации, пользователь может тапнуть по кнопке «Отключить всё».
- Включить случайно удалённые из автозагрузки приложения можно, переставив ползунок в исходное положение.
Очистка с помощью сторонних программ
- Запустив приложение и тапнув по кнопке «Сканировать»
- Пользователь должен подождать, пока NoxCleaner завершит сбор данных.
- Ознакомиться со списком предлагаемой к удалению информации.
- И, оставив отмеченными как минимум первые три строчки, нажать на кнопку «Очистить».
- Если программа уведомляет о невозможности очистить системный кэш — перейти по ссылке «Очистить немедленно».
- Теперь пользователю остаётся нажать на кнопку «Продолжить» и подождать завершения очистки.
- Как только приложение закончит работу, можно выйти из него и перезагрузить телефон — как правило, произведённых манипуляций достаточно, чтобы отключить постоянную оптимизацию при старте Android.
Очистка с помощью App Manager
Это приложение стоит особняком в списке всевозможных оптимизаторов; оно предназначено для целенаправленной очистки кэша и в большинстве случаев работает эффективнее аналогов. Чтобы убрать непрестанную оптимизацию с его помощью, владелец смартфона на Android должен:
- Запустив программу, тапнуть по пиктограммке метлы вверху экрана.
- Установить галочку в чекбоксе «Разрешить специальные возможности» и предоставить App Manager соответствующие разрешения.
- После чего нажать на круглую кнопку в центре окна.
- Процесс очистки занимает полторы-две минуты; по окончании приложение выдаст уведомление о полном удалении кэша приложений, а пользователь сможет наконец перезагрузить свой смартфон без навязчивых попыток оптимизации.
Подводим итоги
Полностью отключить оптимизацию приложений при включении смартфона на Android невозможно — это опция ОС, применяемая по мере необходимости и вне пожеланий пользователю. Чтобы убрать слишком часто запускаемую оптимизацию, стоит попробовать очистить системный кэш и отключить автозапуск части установленных программ. Радикальный способ — сброс до заводских настроек; перед его применением рекомендуется сохранить важную информацию на внешнем носителе.
Ваш компьютер может сжимать файлы, если на его жестком диске не хватает места (особенно, если ОС создает место для новых обновлений Windows). Более того, поврежденная база данных кэша значков может показывать двойные синие стрелки на файлах / папках, заставляя пользователя думать, что сжатие включено.
Проблема возникает, когда пользователь замечает 2 синие стрелки в правом верхнем углу папок (например, папка рабочего стола) или системного диска и при проверке обнаруживает, что содержимое должно быть сжато (каждый новый файл / папка, созданная / добавленная в папку / drive автоматически сжимается), и когда он распаковывает содержимое, при перезагрузке содержимое снова сжимается.
Прежде чем перейти к решениям, позволяющим остановить автоматическое сжатие файлов Windows, убедитесь, что параметр Storage Sese (Настройки >> Система >> Хранилище) отключен. Если вы столкнулись с проблемой сжатия в приложении (например, сжимаются файлы, загруженные из браузера Firefox), удалите это приложение, удалите все его следы в системе, а затем переустановите приложение, чтобы проверить, решена ли проблема автоматического сжатия. Более того, если ваша система используется более чем одним человеком, спросите второго человека, включает ли он сжатие (например, брат или сестра играет в тяжелую игру, и если на системном диске заканчивается место, и пользователя просят сжать диск , другой человек может это разрешить).
Решение 1. Удалите временные файлы системы и выполните очистку диска.
Автоматическое сжатие в Windows 10 можно запустить, если на системном диске не хватает места. В этом контексте удаление временных файлов и выполнение очистки диска может решить проблему.
- Щелкните правой кнопкой мыши Windows и откройте «Выполнить».
- Теперь перейдите по следующему пути:% temp%Удалите файлы в папке% Temp%
- Затем удалите все содержимое временной папки и запустите командное окно «Выполнить» (шаг 1).
- Теперь перейдите по следующему пути: tempУдалите файлы в папке Temp
- Затем удалите все содержимое временной папки и откройте «Этот компьютер» (на левой панели окна).
- Теперь щелкните правой кнопкой мыши системный диск (например, диск C) и выберите «Свойства».Открыть свойства системного диска
- Затем нажмите кнопку «Очистка диска» и откройте «Очистить системные файлы».Нажмите Очистка диска в свойствах системного диска.
- Теперь установите все флажки (кроме основных типов файлов, которые вы хотите сохранить, например, папки «Загрузки») и нажмите кнопку «ОК».Откройте Очистить системные файлы
- Затем дайте процессу завершиться и убедитесь, что на вашем системном диске достаточно свободного места (20 ГБ для 32-разрядной ОС и 32 ГБ для 64-разрядной ОС.Отметьте файлы для удаления и нажмите OK.
- Теперь распакуйте папку / диск и игнорируйте любые ошибки, о которых сообщалось во время процесса.
- Затем перезагрузите компьютер и проверьте, решена ли проблема автоматического сжатия. Если проблема не исчезнет, подождите 5 минут, а затем проверьте, устранена ли проблема сжатия в системе.
Решение 2. Обновите Windows вашего ПК до последней сборки
Для завершения некоторых обновлений Windows требуется много места, и в соответствии с требованиями к пространству ваша ОС может сжимать файлы / папки в вашей системе, чтобы освободить место, необходимое для завершения обновлений. В этом контексте обновление Windows на вашем ПК (чтобы обновления не ожидались и ОС не требовалось создавать пространство для размещения обновлений) может решить проблему.
- Вручную обновите Windows вашего ПК до последней версии. Убедитесь, что не осталось ожидающих установки дополнительных / дополнительных обновлений.Проверить наличие обновлений Windows
- После установки обновлений проверьте, не сжимается ли содержимое диска / папок автоматически.
Решение 3. Отключите сжатие в драйвере / папках
Может быть множество факторов, которые могут включить автоматическое сжатие дисков / папок (например, автоматическое сжатие ОС для установки новых обновлений Windows). В этом случае отключение сжатия (в свойствах папки / диска или в групповой политике) может решить проблему.
Отключить сжатие на диске
- Щелкните правой кнопкой мыши Windows и откройте проводник.
- Теперь перейдите к проблемному диску и щелкните его правой кнопкой мыши.
- Затем откройте «Свойства» и на вкладке «Общие» снимите флажок «Сжать диск для экономии места на диске».Сожмите этот диск, чтобы сэкономить место на диске
- Теперь примените свои изменения и дождитесь завершения декомпрессии (игнорируйте любые ошибки, сообщаемые в процессе декомпрессии).
- Затем перезагрузите компьютер и проверьте, решена ли проблема со сжатием.
Отключить сжатие в папке (например, в папке на рабочем столе)
- Перейдите в проблемную папку (например, папку «Рабочий стол») и щелкните ее правой кнопкой мыши.
- Теперь выберите «Свойства» и нажмите кнопку «Дополнительно».Откройте дополнительные свойства папки.
- Затем снимите флажки с опций «Папка готова к архивированию» и «Сжать содержимое для экономии места на диске».Снимите флажки «Папка готова к архивации» и «Сжать содержимое для экономии места на диске».
- Теперь примените изменения (если проблема связана с несколькими папками, повторите описанную выше процедуру для всех таких папок) и перезагрузите компьютер, чтобы проверить, решена ли проблема сжатия.
Если вы столкнулись с проблемой, при которой сжатие влияет только на папки профиля пользователя (например, рабочий стол пользователя, документы, данные приложений и т. Д.), Затем примените вышеуказанные шаги к следующей папке один за другим (если сжатие не включено ни на одном из файлов). папок, затем включите / отключите сжатие в этой папке):
- Щелкните правой кнопкой мыши Windows и откройте «Выполнить».
- Затем выполните следующее, чтобы открыть системный диск: Откройте системный диск с помощью окна команды запуска
- Теперь отключите сжатие в папке «Пользователи» (как описано выше, и, если будет предложено, обязательно примените его к вложенным папкам / файлам), а затем откройте папку «Пользователи».Отключите сжатие в папке пользователей и откройте ее
- Затем отключите сжатие в папке профиля пользователя и откройте ее.Отключите сжатие в папке профиля пользователя и откройте ее
- Теперь откройте папку «Документы» (или запустите «Документы» в командной строке «Выполнить») и отключите сжатие в ней.Отключить сжатие в папке документов
- Затем примените то же самое к следующим папкам (выполните в поле команды «Выполнить»): Downloads AppData% appdata%
- Затем перезагрузите компьютер и проверьте, не сжимается ли содержимое папок автоматически.
Отключить сжатие с помощью редактора групповой политики
- Щелкните Windows, введите: Group Policy и откройте Edit Group Policy. Пользователям Windows 10 Home может потребоваться установить редактор групповой политики.Открыть редактор групповой политики
- Теперь на левой панели перейдите по следующему пути: Конфигурация компьютера >> Административные шаблоны >> Система >> Файловая система >> NTFS.
- Затем дважды щелкните «Не разрешать сжатие на всех томах NTFS» и установите переключатель «Включено».Включите параметр Не разрешать сжатие для всех томов NTFS в редакторе групповой политики
- Теперь примените свои изменения и перезагрузите компьютер, чтобы проверить, решена ли проблема со сжатием.
Используйте командную строку, чтобы отключить сжатие
Используйте PowerShell для отключения CompactOS
В некоторых случаях сжатие происходило только на модулях ОС (технически говоря, CompactOS), поскольку системный диск (особенно SSD-диски) имеет ограниченную емкость хранилища. В этом случае отключение CompactOS может решить проблему.
- Щелкните правой кнопкой мыши Windows и выберите PowerShell (Admin).
- Затем выполните следующее: compact / compactOS: neverУстановите для CompactOS значение Never
- Теперь выйдите из PowerShell и проверьте, решена ли проблема автоматического сжатия.
Решение 4. Восстановите базу данных кэша значков
В некоторых случаях после установки обновлений Windows диск / папки были распакованы, но два значка синих стрелок продолжают отображаться в файлах / папках (заставляя пользователя думать, что содержимое все еще сжато), но проблема была вызвана повреждена база данных Icon Cache. В этом случае восстановление базы данных Icon Cache может решить проблему.
- Если проблема связана только с некоторыми значками ярлыков некоторых EXE-файлов, проверьте, решает ли проблему воссоздание ярлыков (и удаление старых ярлыков) этих файлов.
- Если это не так, закройте все открытые папки / приложения в вашей системе и откройте диспетчер задач своей системы (щелкните правой кнопкой мыши Windows и выберите Диспетчер задач).
- Затем щелкните правой кнопкой мыши процесс Windows Explorer и выберите «Завершить задачу».Завершить задачу проводника Windows
- Теперь подтвердите завершение процесса проводника и откройте меню «Файл».Запустить новую задачу в диспетчере задач
- Затем выберите «Запустить новую задачу» и установите флажок «Создать эту задачу с правами администратора».
- Теперь введите CMD.exe в поле «Открыть» и нажмите клавишу Enter.Запустить задачу CMD.exe
- Затем по очереди выполните следующее: CD / d% userprofile% AppData Local DEL IconCache.db / a EXIT Удалить базу данных Iconcache
- Снова откройте «Выполнить новую задачу» и введите: explorer.exe.Запустите новую задачу Explorer.exe в диспетчере задач
- Затем нажмите клавишу Enter, и как только откроется проводник, перезагрузите компьютер, чтобы проверить, удалены ли значки сжатия.
Если проблема не исчезнет, проверьте, решает ли проблему выполнение следующих действий в командной строке с повышенными привилегиями:
Вы также можете использовать редактор реестра (на свой страх и риск, но обязательно сделайте резервную копию реестра), чтобы заблокировать выполнение значков, создав файл блокнота (который сохраняется как файл .reg) со следующими строками:
Редактор реестра Windows версии 5.00
Затем дважды щелкните его, чтобы объединить с реестром (убедитесь, что вы поместили пустой файл в папку System32) и проверьте, удалены ли значки сжатия.
Если проблема не устранена, проверьте, решает ли выполнение обновления на месте (загрузите ISO-образ Windows 10 и запустите его от имени администратора, но обязательно используйте параметр «Сохранить приложения и файлы») проблему сжатия.
Заметили, что на вашем смартфоне почти не осталось памяти? Возможно, вы не отключили несколько опций, а возможно, это необратимый процесс. Лайф разобрался, как очистить память в смартфоне.
Мессенджеры и приложения сохраняют файлы сами по себе
В ряде приложений, которыми мы часто пользуемся, включена автоматическая загрузка файлов. WhatsApp сохраняет все фото и видео, которые вам присылают собеседники, Instagram — снимки с фирменными фильтрами. Через год одна из таких "папочек" вполне может заполнить 10–15 гигабайт.
В каждом приложении сохранение файлов можно отключить. Наиболее гибкие настройки сохранения кэша — в WhatsApp. Зайдите в "Настройки" —> "Данные и хранилище". Вы увидите раздел "Автозагрузка медиа" и сможете управлять сохранением файлов — они могут вообще не перемещаться в память телефона или сохраняться, но только при подключённом Wi-Fi.
Как определить, что мобильное приложение шпионит за вами. Оно совершает эти 6 действий
Чтобы удалить загруженные данные, зайдите в диспетчер файлов или просто приложение "Файлы" (название зависит от прошивки смартфона). Как правило, в нём есть отдельная папка конкретного приложения. И удалите все ненужные данные.
Слишком много кеша
Приложения собирают мелкие данные, чтобы работать быстрее, не тратить лишний трафик и не скачивать их из Интернета каждый раз. Фотографии пользователей в соцсетях, их аватары, записи и даже рекламные баннеры. Много места они не "съедят", но вполне могут занять несколько сотен мегабайт.
Почти каждое приложение браузера, соцсети или мобильной игры позволяет контролировать сохранение кеша. Сбросить его можно в настройках программы, как правило, в разделе памяти и сохранённых файлов.
Фото и видео сильнее других данных заполняют память смартфона. Более того, часть фотографий — это рандомные скриншоты. В смартфонах последних двух лет снимок экрана делается при одновременном нажатии на качельку регулировки громкости и кнопки питания.
К сожалению, решение проблеме ещё не нашли — на iPhone без рамок это единственный способ сделать скриншот, производители Android-смартфонов предлагают альтернативную команду — свайп тремя пальцами вниз, но отключить снимок экрана по одновременному нажатию качельки и кнопки питания нельзя.
Поэтому единственный способ не забивать память — стабильно чистить галерею. Кроме того, фотографии можно хранить в "Google фото" — снимки сохранятся, окажутся доступны с разных устройств и не будут занимать пространство на накопителе.
Настройки -> Основные -> Хранилище iPhone. Вы увидите раздел "Другое", и файлы, хранящиеся в нём, также забивают память. Они могут занимать до 80% памяти вашего смартфона в зависимости от продолжительности пользования.
Проблема в том, что файлы из этой папки бесполезные, а удалить их невозможно. Грубо говоря, это хлам, который iOS накапливает во время работы.
Удалить его можно только одним способом — полностью обновив прошивку на iPhone. Беда в том, что после этой операции восстановить резервную копию невозможно. Стоит ли жертвовать всеми данными ради свободного места на накопителе? Подумайте, прежде чем решиться на эту процедуру.
Telegram хотят разблокировать, но смысл? Одна функция "Яндекс.Мессенджера" убивает его и WhatsApp
Более безопасное решение — выгрузить все необходимые данные в облако и загрузить обратно вручную. Это займёт больше времени, но вы освободите заветные гигабайты.
Эта опция есть не во всех смартфонах, зависит от прошивки. Когда вы удаляете файлы, они не стираются безвозвратно, а попадают в корзину и удаляются только спустя определённое время — в iOS через 30 дней, в Samsung One UI — спустя 15 дней.
Плюс этой опции — надёжность системы. Если вы случайно удалили файл, останется время, чтобы его восстановить. Минус — когда надо срочно освободить память, придётся удалить файлов и приложений больше, чем если бы функция "Корзина" была отключена.
Сегодня в магазинах приложений для платформ iOS и Android существует ограничение на размер приложения в 100 МБ. Магазин Apple для приложений, которые не укладываются в этот лимит, запрещает закачку при помощи мобильного интернета. В Google Play же это строгий лимит на размер APK – все, что не укладывается в него, должно быть вынесено в файлы дополнений. Для пользователей с платным трафиком закачка большого приложения может быть довольно затратной, поэтому его размер нужно стараться уменьшить всеми силами.
В рамках этой статьи мы расскажем, с помощью каких приемов мы смогли уложиться в это ограничение на проекте Gardenscapes для платформы iOS. Статья касается в основном мобильных игр, но методы сжатия универсальны и могут пригодиться для любых проектов с тяжелой графикой. Для того, чтобы говорить о методах сжатия, нужно определиться с тем, как формируется архив приложения.
Формат магазина приложений Apple
Приложения на платформе iOS распространяются в виде бинарных файлов с расширением .ipa. Эти сжатые .zip-папки, в которые входит исполняемый файл приложения (для процессора с архитектурой ARM), а также ресурсы приложения. Использование .zip-формата означает, что ваш ipa-файл можно открыть с помощью любой удобной утилиты для работы с архивами и изучить. Если точнее, то Apple использует свой собственный формат LZFSE, и так просто распаковать архив не получится. Тем не менее, оглавление архива прочитать можно без дополнительных усилий. Для примера давайте посмотрим на содержимое ipa в проекте Gardenscapes:
Диаграмма распределения ресурсов в .ipa файле
Большую часть занимают ресурсы игры, при этом исполняемый файл почти не уступает им. Системные ресурсы и ресурсы SDK при этом занимают достаточно мало места в архиве, поэтому оптимизировать их чаще всего нет смысла.
Оптимизация размера исполняемого файла
Исполняемый файл занимает так много места по двум причинам:
- В нем содержится бинарный код для двух архитектур (32 и 64 бита);
- Исполняемый файл в ipa зашифрован, что сильно ухудшает сжатие.
Пункт 2 актуален всегда. При расчете предполагаемого размера IPA нужно учитывать несжатый размер исполняемого файла. В лучшем случае он сожмется только незначительно. Именно поэтому Apple не рекомендуют хранить большие объемы данных (изображения, большие текстовые ресурсы и т.д.) в исполняемом файле, это может привести к аномально большому размеру приложения. Стоит также проверить настройки оптимизации в XCode и убедиться в том, что вы не подключаете лишние библиотеки.
Оптимизация ресурсов
Для мобильных игр можно выделить группы ресурсов, по списку от более тяжеловесных к менее тяжеловесным:
- Игровая графика;
- Анимации;
- Видео и звуки;
- Шрифты;
- Текстовые ресурсы и текстовые настроечные файлы.
Сжатие игровой графики
Размер графики можно уменьшить двумя способами:
- Плотно упаковать графику в полигональные атласы, чтобы сэкономить за счет прозрачных пикселей. Полигональные атласы больше предназначены для экономии оперативной памяти, но и размер файлов с атласами тоже становится несколько меньше.
- Разделить графику на различные группы, по требуемому качеству и упаковать каждую группу в свой сжатый формат.
- png: формат сжатия без потерь. У него наилучшее качество, но он занимает очень много места на диске. Этот формат не рекомендуют использовать в приложении, поскольку lossless-вариант webp оптимальнее по размеру. Тем не менее, загрузочный экран и иконки приложения в ipa должны быть в формате .jpg. Для оптимизации размера .jpg можно воспользоваться утилитой optipng, доступной в Mac Ports.
- webp: lossy-вариант c приемлемым размером. Позволяет менять качество для различных типов изображений, но достаточно долго распаковывается. Существует также и lossless-вариант.
- pvrtc: аппаратно-поддерживаемый сжатый формат для iOS. Быстро загружается, занимает очень мало места. Однако, есть ряд ограничений. Во-первых, изображение обязательно должно быть квадратом со стороной, равной степени двойки.
Пример одного и того же изображения в формате webp, сжатого с настройкой качества 85, 95 и 100. Разница заметна, но даже самое сжатое изображение выглядит приемлемо. При этом разница в размере между webp85 и webp95 примерно 3 КБ.
webp нужно применять осторожно из-за проблем со скоростью распаковки. На медленных устройствах загрузка такого изображения может дать заметные лаги. Не стоит использовать его для упаковки большой графики, которая подгружается на лету.
В таблице приведены размеры атласа 2048x2048 при сжатии в разных форматах:
Формат | png | pvrtc | webp lossless | webp 95 quality | webp 85 quality |
Размер, КБ | 8057 | 2049 | 5593 | 2218 | 1579 |
Как видите, формат png не следует использовать вообще. Из форматов webp и pvrtc можно выбрать подходящий, с учетом требований к качеству графики и скорости ее загрузки
Анимации
В Gardenscapes в основном используются анимации с ключевыми кадрами, которые экспортируются из .swf. Для экономии места в таких анимациях нужно стараться оптимизировать число кадров в секунду (FPS). В нашем проекте стандартом выбрана частота 24 FPS, анимации не теряют в качестве и достаточно компактны. Помимо частоты кадров, на размер анимации влияет количество деталей. Если анимация содержит много деталей, ее размер также будет большим – поскольку для каждой детали будет хранится свой набор ключевых кадров. Для дополнительного сжатия мы используем специальный lossy-кодек для анимаций. Также мы используем FSE-кодирование, больше информации можно найти здесь.
Видео и звуки
Здесь нет каких-то общих рекомендаций, в целом все сводится к тонкой настройке форматов кодирования. Какого-то феноменального выигрыша тут получить нельзя, у нас получилось сжать видео на примерно 30% по сравнению с первоначальным вариантом и сэкономить порядка 10-20% на звуках. Все зависит от конкретного видео и аудио – нужно подбирать настройки экспериментально.
Шрифты
Обычно, шрифты не занимают много места в большинстве приложений. Но это пока вы не столкнетесь с локализациями для языков с иероглифическим письмом. Число иероглифов там может измеряться тысячами. Это увеличивает файлы шрифтов до нескольких мегабайт. Чтобы бороться с этим, мы используем автоматизированный скрипт, который составляет списки символов на основе файла с игровыми текстами – все неиспользуемые символы удаляются изо всех шрифтов.
Текстовые ресурсы и текстовые настроечные файлы
Это обычно самая малая по размеру группа ресурсов, и ее не нужно отдельно оптимизировать. Сам ipa-файл это архив, а текстовые данные хорошо архивируются. В нашем проекте тексты тем не менее занимают довольно много места. В основном из-за необходимости поддержки многих локализаций.
Если все возможности исчерпаны
Размер билда – это действительно проблема для нас. Насколько все серьезно, можно понять по некоторым дополнительным способам сжатия, которые мы изобрели.
- Внутри ipa-файла приложение упаковано в так называемый пакет (package). Все файлы приложения находятся в папке «Payload/<имя_пакета.app>. При упаковке файла в zip-архив к оглавлению прибавляется его полный путь. Поэтому, <имя_пакета.app> будет в оглавлении всех файлов игры. И если файлов много, то как ни крути, а лишняя информация дублируется. Мы переименовали пакет так, чтобы его имя состояло ровно из одной буквы, и хоть чуть-чуть, но уменьшили размер.
- Просматривая содержимое исполняемого файла, мы увидели, что встречаются полные пути к исходным файлам C++. Откуда они взялись? Оказывается, некоторые макросы __FILE__, __LINE__, попадали в production-код, и компилятор заботливо раскрывал их для каждого исходного файла, где они использовались. Мы провели ревизию таких макросов, и еще немного уменьшили билд.
- У кого-то есть еще идеи? Напишите в комментариях.
Итого
Оптимизация размера билда – обширная тема, в этой статье описаны только общие принципы и способы сжатия ресурсов. Кроме этого обычно возникают и другие сложные вопросы:
- Менеджмент ресурсов: как избавиться от дубликатов ресурсов и найти все неиспользуемые ресурсы;
- Система загрузки ресурсов из интернета, если мы не влезли в 100 МБ. Как организовать дозагрузку ресурсов так, чтобы пользователь испытывал минимум дискомфорта, а дизайнерам было бы удобно с ней работать;
- Как минимизировать расход трафика, особенно при обновлении версии игры.
Post scriptum
Пока статья готовилась к публикации Apple увеличила максимальный объем билда до 150 МБ. Казалось бы, стало лучше. Но в Google Play все еще остается лимит 100 МБ. В результате все получается еще сложнее. Если мы при подготовке билда для iOS будем ориентироваться только на ограничение магазина Apple в 150 МБ, то после этого при подготовке билда для Android точно не сможем уложиться в 100.
Нужно делать разные билды для iOS и Android, чтобы оптимально использовать возможности магазинов приложений. Сейчас мы все еще в процессе поиска лучшего решения. И очень ждем аналогичного шага по увеличению лимита от компании Google. После этого можно будет просто заменить в тексте статьи число 100 на 150, и в ней снова все будет правильно.
Читайте также: