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

Разработка

Дневники разработчиков: Babycare №9

Babycare – приложения для ухода за новорождённым с популярной Android-версией. Теперь Максим Колпаков и компания Wachanga покоряют пользователей iOS и каждую неделю пишут об этом заметки.

Babycare

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

/

Автор:

Прошло 11 недель челленджа. На этой неделе окончательно выпустили китайскую локализацию, а также запостили в App Store видеоролик вместо первого скриншота. Оба события принесут (или не принесут) плоды не раньше следующей недели. Тогда и опишу результаты.

Произошёл казус. Договариваясь с блогерами и сообществами о продвижении приложения, получили от некоторых следующий фидбек. Они отказываются работать с нами, так как «изображение бутылочки дискредитирует ценность грудного вскармливания». Мы знали о подобной особенности, но с точки зрения пользователей всё было в порядке в 99% случаев. Блогеры же имеют другое мнение. Думаем, что делать, готовим эксперименты с альтернативными иконками. Если и юзеры выберут другую иконку, то, конечно, сменим.

У нас в компании есть некий код, ДНК, который я сформулировал, и который мы вкладываем теперь в каждый наш новый продукт. Один из первых пунктов этого кода – «Масштабируемость». Сейчас мы делаем только продукты, которые можно легко запустить по всему миру. Обеспечивают такую возможность несколько условий:

  • Минимум контента, а если без него никуда, то UGC – User Generated Content. Это позволит дешевле переводить продукт на другие языки.
  • Минимальная зависимость от национальных особенностей. Например, грудное вскармливание – это намного ближе к физиологии и, значит, интернационально.
  • B2C-продажи. Мы убрали любые B2B-компоненты на период масштабирования, так как это снижает скорость роста. По достижении определенного уровня проникновения, конечно, есть смысл вернуть B2B обратно.
  • Простота клиентской поддержки. Например, для того чтобы это делать на десятках языков, коммуникации с клиентами нужно вести в текстовом виде. В крайнем случае, на первых порах можно на голосе оставить только первую линию, отдав её на аутсорс и обеспечив скриптами, которые нестандартные проблемы всё равно переводят на текстовую коммуникацию.
  • Наличие универсальных каналов привлечения клиентов. Facebook, Instagram, Adwords, App Store, Google Play – эти каналы есть в каждой стране. Если продукт сможет получать достаточно пользователей из них, то он проходит отбор.

Есть и другие особенности «Масштабируемости», но о них я расскажу только в том случае, если вы будете активнее в комментариях. А ещё мне нравятся лайки и репосты  ;)

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

Новости

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

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

AppTractor

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

/

Автор:

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

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

Новости

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

Дизайн и прототипирование, PWA и звуки, которые важны.

AppTractor

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

/

Автор:

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

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

Разработка

“Крутись и уворачивайся”: история разработки Circle vs Spikes

Немного о себе: 30 лет, программированием начал заниматься относительно поздно, всего 2 года назад. Имелся технический бэкграунд, но в целом от программирования был далек. Знакомых кодеров тоже не было, пришлось самому набивать шишки, пытаясь понять, что и как делать. Привлекла идея делать мобильные приложения, так как хотелось работать на себя. Ну а что может быть интереснее геймдева. Таким образом была поставлена цель – научиться делать мобильные игры.

AppTractor

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

/

Автор:

Но сначала нужно было изучить основы. Решил взяться за фундаментальные вещи: теория, алгоритмы, проектирование и т.д. Промучившись месяца два понял, что нужно ставить практические задачи, а теорию изучать уже по мере надобности. Стал изучать Java, которая повсеместно используется для Android. Да и фреймворк LibGDX, о котором я уже тогда начал думать, был на Java.

Освоив на достаточном уровне Java и LibGDX, я захотел пройти весь путь от идеи игры до публикации. Хотелось начать с чего-то простого. Пришла мысль сделать 2D-аркаду, в которой надо уворачиваться от препятствий, двигаясь при этом по сложной траектории.

Итак, у меня была неплохая цель – сделать в короткие сроки простую игру, довести ее до публикации в Google Play и, таким образом, набраться опыта. В итоге “короткие сроки” растянулись более чем на полтора года. Частенько я переделывал все с нуля, тратил много времени на каждый этап, добавлял или убирал функционал. Много времени было вложено и в создание редактора уровней. Если игра будет нравится людям, включу его в игру в одном из обновлений. Вот так он выглядит сейчас.

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

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

Крутись и уворачивайся

В игре вы управляете кругом, который движется по орбите. При этом орбита вместе с кругом движутся вперед. Таким образом соединяются две траектории: круговая и прямолинейная. Это делает механику интересной, заставляет просчитывать наперед это сочетание. Кругом надо уворачиваться от множества разных препятствий (шипов, маятников, лазеров, блоков…). Управление при этом предельно простое – касанием экрана можно менять направление вращения по орбите.

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

На то, чтобы сменить направление вращения (другими словами – на каждое касание) требуется 1 заряд. Уровень вы начинаете, имея 100 зарядов. Цель – истратить как можно меньше зарядов за уровень. То есть нельзя бездумно тыкать по экрану, нужно просчитывать траекторию и использовать заряды с умом.

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

Имеется поддержка Google Play Игр:

  1. Достижения – за каждое из которых открывается новый скин или цветовая тема.
  2. Лидерборды
  3. Сохранения и синхронизация между устройствами

Музыку мне сделал друг, специально для игры, за что я ему очень благодарен. Кому интересно, вот ссылка на его страничку в Soundcloud: https://soundcloud.com/octonick.

Также я постоянно делаю новые уровни, так что пройдя все – не спешите удалять игру. Я планирую часто выпускать обновления.

Если у вас есть какие-либо вопросы, пишите, постараюсь ответить всем: ibragames.com@gmail.com.

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

Реклама

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

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

Вакансии

Популярное

X
X

Спасибо!

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