На прошедшей в этом году конференции WWDC компания Apple рассказала о технологии App Thinning. Теперь она применяется в iOS 9 на iPhone, iPad и iPod touch, а также в tvOS на Apple TV 4.0. Эта технология решает проблему с заполнением локальной памяти на устройствах.
Как вы знаете, установка приложений и игры выглядит следующим образом: вы заходите в App Store, находите нужный вам контент, нажимаете кнопку покупки, скачиваете установочный файл и устанавливаете его. В большинстве случае установочный файл универсальный — он скачивается на все виды устройств, а интерфейс приложения или игры адаптируетсяпод размер и разрешение экрана в момент запуска. У этого метода есть один существенный минус — пакет установки должен содержать код и графические элементы для всех устройств, в результате чего установочный файл сильно увеличивается в размере. Если вы ставите приложение на новую модель iPhone, вы скачиваете и те файлы, которые никогда не будут открываться на вашем устройстве, поскольку предназначены для других — всех предыдущих моделей смартфонов и всех планшетов Apple
Технология App Thinning позволяет уменьшить объем установочного файла в несколько раз. Процесс сборки приложений при этом усложняется: разработчик готовит код с тегами, которыми отмечено, какой код должен быть скачан на ту или иную модель смартфона или планшета. Компания Apple приводила в пример приложение DemoBots. Его оригинальный вариант совместим с 19 моделями устройств и весит 77 мегабайт. С использованием App Thinning его размер уменьшается до 22 мегабайт. При этом создается 19 разных файлов, но пользователь скачивает именно тот, который подходит к его устройству. Наиболее впечатляющих результатов эта технология позволяет добиваться в играх, ведь в них намного больше элементов графики, чем в приложениях.
Разбивки приложений на версии, привязанные к определенным моделям устройств, Apple показалось недостаточно, и компания придумала еще один способ уменьшить размер установочных файлов. Представьте, что в какой-нибудь игре имеется десять уровней, причем каждый из них открывается только после того, как будут пройдены все предыдущие. Очевидно, что после первого уровня вы не сможете перейти третьему, пятому, а тем более десятому. Так зачем их скачивать?
С использованием App Thinning разработчики могут указать, какая часть приложения или игры будет скачана во время первичной установки, и в какой момент будет подгружаться дополнительный контент. Скажем, сначала скачаются три первых уровня. Как только вы пройдете второй, игра закачает еще несколько. Если вы дошли до середины игры, будут скачаны финальные уровни, а первые, если вы их больше не запускаете, могут быть удалены.
Казалось бы, на этом можно остановиться, но нет, Apple пошла еще дальше. App Thinning предусматривает частичное удаление контента в тех играх, которые вы установили, но ни разу не запускали. Если для установки нового контента будет не хватать места, система проанализирует неиспользуемый код и избавится от него. Конечно, вы можете внезапно вспомнить об установленной когда-то давно игре, и в тот момент, когда вы попытаетесь запустить ее, она будет скачана заново.
Apple постаралась сделать так, чтобы пользователи не знали об этой технологии и не догадывались о том, что она существует. Удаление неиспользуемого контента и загрузка нового происходят в фоновом режиме, от пользователя не требуется подтверждения этих действий. Приложения тщательно скрывают подгрузку — в этот момент может быть показан какой-нибудь баннер. В большинстве случаев пользователи не заметят вообще никаких задержек, поскольку Apple рекомендует подгружать контент небольшими порциями (по 64 мегабайта).
Есть ли у этой технологии недостатки? Несомненно. Переход на App Thinning подразумевает конец эпохи игр и приложений, которые можно запускать без интернета. В особенности «пострадают» тяжелые игры, поскольку они больше не смогут хранить весь контент на устройстве, он будет подгружаться по мере прохождения.
С другой стороны, App Thinning позволит разработчикам создавать очень сложные игры и обновлять их практически в режиме реального времени. Игрокам для получения доступа к новому контенту (например, приуроченному к какому-нибудь празднику) не придется скачивать обновления по 1,5-2 гигабайта — игра будет обновляться моментально и незаметно. Фактически у разработчиков вообще пропадет необходимость в выкладывании в App Store новых версий игр, ведь общий контент в них может меняться динамически по несколько раз в день. Без сомнений, App Thinning окажет влияние на игры вроде Minecraft и Disney Infinity, где пользователи создают собственные миры и посещают места, созданные другими. В таких проектах станет намного больше мультиплеерной составляющей и всевозможного интерактива.