Содержание

  1. Специфика мобильных приложений на Android
  2. Особенности разработки под Android
  3. Политика публикации приложений в Google Play
  4. Выводы

Операционная система Android была выпущена компанией Google 23 сентября 2008 года. 11 июля 2005 года корпорация купила стартап Android Inc, занимающейся этой разработкой, и превратила это направление в одно из ключевых. С тех пор Android быстро развивается и теперь установлен на более чем 83% всех мобильных устройств в мире.

Специфика мобильных приложений на Android

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

Аппаратно устройство может иметь фронтальную камеру, может и нет. Симкарт может быть любое количество. Физические кнопки могут присутствовать или нет. Экрана может быть два: дополнительный с тыльной стороны или на чехле.

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

Расположение осей акселерометра может оказаться не таким, как в документации

Казалось бы – мелочь. Но если вы делаете игру, управляемую наклонами устройства (например, гонки), то сначала вам надо попросить пользователя повертеть телефон в руках в заданных направлениях, чтобы приложение распознало позицию установленного датчика. Иначе на одном смартфоне для поворотов нужно будет делать наклоны влево-право, а на другом – вперед-назад.

Схематичная демонстрация основных размеров экранов Android и iOS

Размер экрана и его разрешение – отдельная проблема. Например, если вам нужно разместить изображение на весь экран iOS устройства, вы используете несколько изображений под типовые размеры iPhone 6 и выше, iPhone 6 Plus и выше, iPhone X и iPhone X Max. В случае же с Android экраны имеют и разное разрешение, и разное соотношение сторон, и разную плотность.

В связи с этим для Android–разработчиков существуют разные инструменты, например 9 Patch – схема разметки, позволяющая задать правила растягивания изображения при изменении его размера. Без нее сложно корректно отобразить в том числе и фоновые изображения в связи с разными размерами экранов

Пример использования 9 Patch в Android

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

Распределение версий ОС Android на 7 мая 2019 г. Последняя версия, Pie (Android 9) установлена только на 10% устройств. Версии 5.х (Lollipop) и младше занимают более 20% рынка.

Во-вторых, это большой разброс версий операционной системы Android, установленных у пользователей. Это порождает множество проблем:

  1. Необходимо учитывать особенности отображение интерфейса на разных версиях ОС и разных оболочках. Так, системные элементы управления могут выглядеть совершенно по-разному на разных версиях Android и разных оболочках одной и той же версии Android;
  2. Разные версии в ряде моментов имеют разную логику работы. Например, до версии 6.0 приложения не должны были запрашивать каждое разрешение отдельно (доступ к камере, микрофону и так далее), они указывались списком в Google Play и, подразумевалось, что пользователь ознакамливается с ними до момента загрузки. Начиная с 6.0 каждое разрешение должно быть запрошено отдельно уже в момент работы приложения. Соотвественно, если вы не реализовываете оба варианта логики, приложение не будет работать либо до версии 6.0, либо в более поздних;
  3. Программные методы и библиотеки меняются: какие-то из них признаются устаревшими и их требуется заменять на более новые. Таким образом всегда встает выбор: либо поддерживать наиболее последние функции ОС, либо позволить как можно большему количеству пользователей установить мобильное приложение;
  4. В последних версиях ОС добавилась многозадачность рабочей области. Пользователь может отобразить на экране одновременно несколько приложений и вашему может быть выделена совершенна произвольная по размеру область. Это также надо учитывать.

Разные темы отображения одного и того же приложения в Android

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

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

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

Активити и фрагменты представляют собой логически обособленные элементы со своим жизненным циклом

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

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

Особенности разработки под Android

1. В отличие от iOS, мобильные приложения для Android представляют собой взаимосвязь отдельных, логически обособленных элементов, как об этом говорилось выше. То есть нельзя просто взять и портировать приложение на другую мобильную операционную систему, переписав код с одного языка программирования на другой. Нужно закладывать совершенно другую архитектуру.

Другой подход наблюдается и в других аспектах.

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

Иконка приложения может иметь разную форму на экранах разных пользователей.
Но она всегда должна оставаться прекрасной.

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

Кнопка, выступающая над активной областью, должна быть только одна (одного цвета). Нельзя использовать несколько выступающих кнопок разных цветов.

Кнопка, панель навигации, иконка и все остальные элементы должны следовать этим правилам, если вы хотите сконструировать красивый material интерфейс и получить предложение от Google на продвижение вашего мобильного приложения в Google Play.

На кнопках нельзя использовать вертикальное выравнивание текста и иконки. Как и нельзя использовать более одной иконки на одной кнопке.

3. Рекомендуемым Google языком программирования для Android в настоящее время является Kotlin, не Java. Различие между ними существенно меньше, чем между Objective-C и Swift для iOS, но все же это немного разные подходы к разработке.

4. Тестирование на большом парке физических устройств (не эмуляторов) при этом имеет чрезвычайно важное значение. Даже оно в силу огромного количества разных телефонов на рынке не обеспечивает беспроблемное функционирование на всех доступных моделях, но по крайней мере снижает вероятность проблем на наиболее популярных девайсах.

Политика публикации приложений в Google Play

Перед публикацией в магазин приложений Google Play сборки проходят гораздо менее тщательный контроль с точки зрения соблюдения требований по построению интерфейса, выбора тематики и запроса персональных данных пользователей.

Несмотря на то, что Google недавно изменил подход к проверке приложений, сделав его более тщательным и более ручным, среднее время ревью приложений составляет 2-4 часа. Это существенно быстрее, чем 2-3 дня в случае с App Store.

Общая схема процесса проверки приложений: сначала это делают алгоритмы, выставляя сборке определенный бал, затем живой человек принимает решение, учитывая его величину и другие факторы

Раньше многие этим пользовались с целью раскрутки приложения. В Android Market, предыдущей версии Google Play, была вкладка “Новые приложения”, отображающая обновления в их хронологической последовательности. Таким образом, чем чаще вы обновляли версию своего приложения, тем больше получали загрузок. Каждый апдейт в России давал 1-3 тысячи загрузок, и за месяц можно было достичь хороших результатов, если приложение действительно приносило пользу (если рейтинги плохие, загрузок вы получали единицы).

Сейчас продвижение приложений стало намного сложнее, но в первую очередь нужно сделать классный продукт, в том числе с точки зрения требований концепции Material Design. Вы их можете не соблюдать, но такое приложение будет рекламироваться в Google Play самой Google в исключительных случаях.

Выводы

Разработка мобильных приложений для Android имеет следующую специфику:

  1. Android – самая популярная операционная система в мире. Как следствие, диверсификация устройств, управляемых ею, огромна. Нужно убедиться в том, что мобильное приложение поддерживает подавляющее большинство моделей устройств целевой аудитории.
  2. UI/UX должен учитывать не только разные размеры экранов устройств, но и работу в режиме многооконности, и плотность пикселей экранов: тонкий шрифт на некачественных дисплеях будет искажен или вовсе исчезнет.
  3. Количество актуальных версий Android, находящихся в использовании, много. Надо учитывать все из тех, которыми пользуется ваша целевая аудитория.
  4. При проектировании интерфейса необходимо руководствоваться концепцией Material Design.
  5. Рекомендуемым Google языком программирования для Android является Kotlin.
  6. Тестирование на обширном парке физических устройств – очень важно.
  7. Настроить личный кабинет разработчика и опубликовать приложение можно за 2-3 часа.

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