Connect with us

Разработка

Как мы сократили размер приложения с 31 МБ до 2 МБ

Создатель приложения WhatSaga поделился историей разработки и борьбы за качество конечного продукта.

Анна Гуляева

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

/

     
     

Четыре недели назад я опубликовал первое приложение в Google Play. Немного бэкграунда: меня зовут Иршад, я учусь на последнем курсе колледжа по направлению информатики и уже несколько лет занимаюсь программированием и разработкой. История началась около пяти месяцев назад: однажды второкурсник Атул Наир сказал мне, что хочет поучиться разработке приложений на Android.

Лучший способ узнать что-то — делать это непосредственно. Я посоветовал ему создать простое приложение и предложил несколько идей:

  • приложение будет показывать текущие статусы пользователей WhatsApp, которыми можно будет поделиться и которые можно будет сохранить;
  • пользователи смогут постить в WhatsApp видео дольше 30 секунд;
  • пользователи смогут постить аудиостатусы вместе с изображениями.

Функция “статуса” в WhatsApp в то время была довольно новой, поэтому эти идеи казались мне вполне интересными.

И он начал создавать это приложение. Вот эскиз, который я набросал в тот день.

Что дальше?

Мы разделили задачи на три группы:

  1. Текущие статусы
  2. Видеостатусы
  3. Аудиостатусы

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

Затем я начал помогать Атулу в создании видеостатусов. У меня было несколько других проектов, поэтому в основном я только искал библиотеки для работы с видео, пока он писал сам код. Вскоре функция была закончена, но была одна проблема.

Да, Атул быстро учился, и он отправил мне APK через неделю, но размер файла был 31 МБ и я не мог этого понять. Мы решили использовать популярную библиотеку ffmpeg для обработки видео, хотя проще всего было использовать Ffmpeg-Android от WritingMinds. Встроенные библиотеки весили больше 27 МБ, что вносило самый большой вклад в размер APK. Я сказал, что мы должны сделать размер файла как можно меньше.

После нескольких недель он вернулся и размер APK составлял уже 18 МБ, а приложение работало, как и раньше. Атул последовал этому совету и включил только версию armv7, что сократило размер приложения в два раза. Но этого было недостаточно: люди не будут скачивать приложение, которое занимает больше 5 МБ. Я был упрям. Я показал ему несколько видеоредакторов в Google Play, которые занимали менее 5 МБ и спросил, почему мы не можем сделать так же.

В итоге, после ещё нескольких попыток Атул пришел с хорошей новостью. Он сократил размер APK до 2.6 МБ. Он был таким же упрямым и нашел нужное решение. Он использовал нативный компилированный C++ файл .so с минимальными функциями ffmpeg, который включал и нужную нам функцию. Файл занимал 4 МБ, но после сжатия стал весить всего 2 МБ. Вот анализ APK-файла версии 1.2:

Да, теперь он занимает 2.9 МБ после обновления с поддержкой WhatsApp for Business

Кроме того мы использовали такие функции, как proguard minify и drawable optimization, чтобы другие ресурсы не занимали много места. Все пошло быстрее, мы создали функцию аудиостатусов, а потом выпустили наше приложение в Google Play в течение нескольких дней!

Мы назвали приложение WhatSaga, и вы можете посмотреть его здесь.

Представьте, если бы я сдался быстрее. Мы бы сделали решение в 10–15 МБ или даже больше, и это не идет ни в какое сравнение с 2.6 МБ. Действительно ли размер приложения так важен в современных смартфонах с гигабайтами памяти и трафика? Ответ: да. Если у вас будет два приложения с похожим интерфейсом и функциями, но одно из них будет на 3–4 МБ тяжелее, какое вы выберете?

Почему размер приложения все еще влияет на количество пользователей

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

Комментарии
Если вы нашли опечатку - выделите ее и нажмите 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

Спасибо!

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