Connect with us

Разработка

“Похудевшие” приложения освободят пространство на iPhone и iPad

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

Анна Уханаева

Опубликовано

/

     
     

iOS8 была не слишком добра к iPhone и iPad на 8Гб и 16Гб. Обновления “по воздуху” требовали многих гигабайтов свободной памяти, и их установка сокращала доступное на вашем устройстве свободное пространство. Вместе с iPhone6 Plus, принесшим “3x” ресурсы, приложения стали больше, чем они когда-либо были. К счастью, iOS9 должна помочь с этой проблемой, пишет ArsTechnica.

Apple уже упомянула, что компания уменьшила память, требующуюся для OTA обновления iOS 9, с 4.6 Гб до 1.3 Гб, но более интересная технология пока не получила внимания: Похудение приложений (App Thinning). Цель ее состоит в том, чтобы приложения на вашем телефоне или планшете оставили больше свободного пространства.

Есть три основных механизма, которые разработчики могут использовать для уменьшения размеров приложений. Первый и самый значительный – Нарезка приложения (App Slicing). Каждый бинарник приложения для iOS, который вы скачиваете, содержит весь код для всех устройств (если предположить, что это новое универсальное приложение с поддержкой iPhone 6 Plus, устройств 32 бита и 64 бита) – оно содержит ассеты для буквально каждого поддерживаемого iOS устройства, независимо от того, нужен этот код для вашего устройства или нет.

Допустим, у вас iPhone 5C с 32-битным CPU и GPU без поддержки API Metal. Скачайте современную универсальную и игру, и в нее будет включен 64-битный код, ресурсы для iPad и “3х” для iPhone 6 Plus, к тому же еще и ненужный код Metal API. А нужен всего-то 32-битный код, “2х” ассеты для iPhone и код для OpenGL графики. Нарезка приложения позволит скачивать только ту часть, которая нужна именно для вашего устройства.

Важно заметить, что это не должно потребовать большой дополнительной работы от разработчиков – все, что нужно, согласно документации, положить все в каталог ассетов и тэгировать для разных платформ. Разработчики так же, как и сейчас, загружают полные версии своих приложений в App Store, а App Store проделывает работу по компиляции и доставке специфичных для устройства версий этих приложений.

DSC00764-640x427

Вторая функция куда более сложная. Ресурсы по запросу (On-Demand Resources, ODR) – части приложений, которые скачиваются только тогда, когда они нужны и удаляются с устройства после выполнения своей задачи. Apple выложила на сайте для разработчиков много подробностей об ODR, но основная вещь – не надо использовать все ресурсы в приложении в одно и то же время.

Например, в игре с большим количеством уровней, предполагает Apple, нужно использовать только те данные, которые нужны для прохождения конкретного уровня и дальнейших, а уже пройденные больше не нужны. Для приложения с туториалом нужно скачать туториал для первого запуска, а после его прохождения можно его удалить, если ясно, что его не будут проходить заново. Приложение с покупками внутри может не скачивать эти элементы, пока вы их не купите.

Во время кодинга приложений разработчикам, которые хотят использовать ODR, нужно будет присваивать тэги разным частям кода. Пример Apple – снова игра, в которой можно тэгировать ассеты для разных уровней. Данные будут скачиваться из App Store (или с вашего тестировочного Mac, если вы разработчик), когда они нужны, и удаляться, когда ОС нужна память для чего-то другого. Разработчики смогут указать, какой ассет нужен для первого запуска приложений, когда приложению эти ресурсы больше не нужны и какие тэги нужно удалять в первую очередь для очистки пространства.

ODR_flow_2x

Apple предоставила полный список того, какой контент приложений может быть тэгирован как ODR – картинки и медиа файлы в него включены среди нескольких других вещей – но реально выполняемый код нельзя тэгировать как ODR.

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

Последняя часть – то, что Apple назвала Bitcode. Когда разработчики загружают приложения в App Store, вместо уже скомпилированных программ им нужно предоставить “промежуточную” версию этих приложений, которая будет компилироваться непосредственно для устройства, когда пользователь скачивает приложение. Это делает возможным часть функциональности Нарезки приложений – определяет, загружает ли ваше приложение 32- или 64-битный код.

Поскольку Apple компилирует код по запросу, компания сможет реализовывать улучшать компилятор без необходимости разработчику ресабмитить приложение. В целом, это не сильно отличается от JIT (just-in-time) на Android и рантаймов ahead-of-time (AOT) Dalvik и ART, которые компилируют код для конкретной архитектуры CPU, когда вы запускаете или загружаете приложений (соответственно).

Использование Bitcode включено по умолчанию, но опционально для приложений на iOS (скорее всего скоро оно станет обязательным). Тем не менее, оно уже необходимо для нативных приложений на Apple Watch.

Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
Click to comment

You must be logged in to post a comment Login

Leave a Reply

Новости

Интересные материалы: 23.10

На ночь глядя разбираемся с Tensorflow, менторством джуниоров и магией бумаги.

AppTractor

Опубликовано

/

Автор:

Весь день мы собираем лучшие материалы о разработке и маркетинге технологий, стартапов, мобильных приложений и игр для iOS и Android из самых разных источников:

Комментарии
Продолжить чтение

Обучение

От данных к действиям с Airbnb Plus

История Data Science-интерна, который провел лето в Airbnb.

AppTractor

Опубликовано

/

Автор:

Стажировки – это одна из самых сильных и важных вещей для студентов. Они позволяют вам за 3 коротких месяца многому научиться и кратно вырасти в опыте. Помимо этого, стажировки помогают налаживать связи, улучшают навыки работы в команде и позволяют научиться ориентироваться в организациях.

Этим летом Габриэль Сикуэйра прошел стажировку по Data Science в новой команде Airbnb Plus. В этой статье он отвечает на некоторые распространенные вопросы о Data Scientists в Airbnb и проливает некоторый свет на то, что действительно делает стажер в Больших Данных.

 

Комментарии
Продолжить чтение

Интервью

Евгений Кот (Wrike): Dart стал гораздо серьезнее!

Каково будущее Dart? Что нового в версии Dart 2.0 по сравнению с предыдущей? Евгений Кот ответил на наши вопросы про язык, на котором разрабатывается продукт в Wrike, а также рассказал про DartUp – первую русскоязычную конференцию пo Dart/Flutter, которая пройдет 1 декабря в Санкт-Петербурге.

AppTractor

Опубликовано

/

Автор:

Евгений Кот – фронтенд тимлид в компании Wrike. До этого чем только не занимался, был C++ и C#. В Dell начал заниматься фронтендом, так и завертелось. Также Евгений –  Dart GDE (Google Developer Expert).

Вы работаете в компании, которая использует Dart для разработки своего продукта. Что было до него? В какой момент пришло понимание, что нужно переходить именно на Dart?

Когда я только пришёл в Wrike ( это было четыре года назад) нас было гораздо меньше, а фронтенд за это время вырос аж в семь раз! Тогда мы писали всё на JavaScript. Также у нас был ExtJS третьей версии, включая части других фреймворков. Продукту всё-таки уже десять лет.  Эти технологии не так плохи сами по себе, но вдесятером поддерживать такой проект становилось всё сложнее. В тот момент стало понятно, что компания и команда будут расти вместе с продуктом. Нам была нужна типизация – чем строже, тем лучше. В те времена выбор был небольшой: Flow и TypeScript только начинали развиваться, но не давали должной уверенности. Стали искать альтернативы и наткнулись на Dart. Тогда, конечно, инструменты были “сырее” и сам язык был немного другой. Но мы не побоялись и поставили на “тёмную лошадку”. О том, почему мы перешли на Dart,  можно почитать в нашей статье.

Dart — язык программирования, созданный Google. Dart позиционируется в качестве замены/альтернативы JavaScript. Один из разработчиков языка Марк Миллер написал, что JavaScript «имеет фундаментальные изъяны», которые невозможно исправить. Поэтому и был создан Dart.

Первая общедоступная информация об этом языке программирования появилась 12 сентября 2011 года на конференции разработчиков Goto. 10 октября 2011 была проведена официальная презентация языка Google Dart.

Задачи, поставленные перед разработчиками языка:

  • Создать структурированный и в то же время гибкий язык для веб-программирования
  • Сделать язык похожим на существующие для упрощения обучения
  • Высокая производительность получаемых программ как в браузерах, так и в иных окружениях, начиная от смартфонов и заканчивая серверами.

Dart: как и где он используется?

Ну-с, немного ликбеза. Dart – язык, созданный Google уже больше шести лет назад. Он имеет строгую типизацию, SDK и свою экосистему и может исполняться на различных платформах. Сами разработчики позиционируют его как “язык, оптимизированный для клиентской разработки“. Таким образом, он лучше всего подходит для разработки именно клиентских приложений – Web и Mobile. На бекенде его тоже можно использовать, но там конкуренция инструментов гораздо выше.

Чтобы понять бенефиты Dart, надо просто попробовать написать большое приложение, например, на JavaScript – недостатки слабой системы типов рано или поздно всплывут. Тут конечно можно со мной поспорить, и я с радостью это сделаю, пишите в соцсети :-) Мы используем его для создания web-части нашего продукта. Также у нас есть несколько критических сервисов, написанных на Dart, и мы присматриваемся к мобильным возможностям языка.

Многие нам говорят – “так на нём никто не пишет, только Wrike, что же его использовать”. Это совсем не так. В русскоговорящем сообществе мы, пожалуй, самые большие его потребители –  это правда. Даже коллеги из Google признают, что у нас самое большое после них web-приложение. Но компаний много: например, Workiva. Сам Google перешёл на Dart в AdWords – это их основной сервис для зарабатывания денег. Малейшая бага – и всё, миллионов нет.

В русскоязычном сегменте появляются вакансии и компании, которым интересен данный язык программирования. Кстати, на конференции DartUP, которая пройдет в Петербурге уже 1 декабря, будут выступать разработчики из других “евангелистов” языка.

Вы организовали сообщество русскоязычных Dart-разработчиков, которое официально было признано Google. C чего все начиналось?  Как вы поддерживаете и развиваете сообщество?

Ну как это обычно бывает – используешь сам, а потом понимаешь, что только с коллегами обсуждать скучно и нужна “свежая кровь”. Началось всё с небольшого митапа три года назад – тогда Dart в России вообще никто не использовал. С тех пор это переросло в небольшое, но уютное комьюнити. Основным каналом общения остаётся чат в телеграмме, но также есть Slack. Периодически мы организуем митапы побольше, все видео доступны на YouTube канале:

Мне кажется сообщество – это как костер:  оно само себя поддерживает, если есть топливо. Мы отвечаем на вопросы в чате, организуем митапы, делимся своим опытом. Понятно, что с каждым инфоповодом в канал приходят новые люди, основной вопрос: “Ну что там, можно Dart для продакшена использовать?”. Ответ – “да” обычно не устраивает, так что бывают и холивары.

В чем основные преимущества Dart? Можно ли его использовать для создания мобильных приложений?

Это система типов + SDK + поддержка различных платформ. Я могу написать один блок кода и переиспользовать его везде. Сейчас никого этим не удивишь. JavaScript есть в каждом “утюге” и языки с типизацией уже не в новинку (TS, Kotlin и так далее). Но преимущество состоит как раз в сочетании всех этих факторов. В Dart 2.0 разработчики выкрутили типизацию на максимум. На Dart писать просто приятно. В целом, все разговоры X лучше Y всегда должны начинаться с вопроса: “Для каких  именно задач это можно применять?”. И тут уже можно что-то обсуждать.

Что касается мобильных приложений, теперь есть Flutter! Он позволяет писать код сразу под Android и iOS – эти приложения будут быстрыми и красивыми. Звучит как рекламный слоган, но это действительно так. Архитектура Flutter отличается от всех остальных мультиплатформенных фреймворков (ReactNative, Xamarin и прочих), поэтому это что-то совершенно иное.

Подкаст AppTractor: Flutter

Расскажите немного про Dart 2.0. Какие нововведения в нем произошли по сравнению с предыдущей версией языка?

Когда язык только проектировался, он должен был “убить” JavaScript, но “под капотом” он был достаточно слабо типизирован. И это, на мой взгляд, определило его провал в те годы. Ведь зачем нужен ещё один JS, который, по своей сути, не очень от него отличается? Во второй версии Dart стал гораздо серьезнее во многих вопросах. Это открыло дорогу многим оптимизациям (например, более агрессивному TreeShaking). Также была проделана большая работа по инструментам: появилось много пакетов, новый сборщик и так далее. Теперь это более production ready язык, чем был когда-либо.

Как родилась идея организовать конференцию DartUp, которая совсем скоро пройдёт в Спб? Что вы от нее ожидаете?

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

Конференция DartUp полностью бесплатна, нужно только зарегистрироваться. И как и год назад, мы  наварили специального Dart-пива.

Мы ожидаем от конференции только позитивных эмоций!  Приятно видеть, что сообщество растет и взрослеет. А ещё ожидаем в гости всех и тем более тех, кто о Dart ничего не слышал – будет весело!

Комментарии
Продолжить чтение

Новости

Интересные материалы: 22.10

У нас лучшие идеи для приложений, архитектура и конкурс ВКонтакте.

AppTractor

Опубликовано

/

Автор:

Весь день мы собираем лучшие материалы о разработке и маркетинге технологий, стартапов, мобильных приложений и игр для iOS и Android из самых разных источников:

Комментарии
Продолжить чтение

Реклама

Наша рассылка

Нажимая на кнопку "Подписаться" вы даете согласие на обработку персональных данных.

Вакансии

Популярное

X
X

Спасибо!

Теперь редакторы в курсе.