Yota Devices
Компания
42,00
рейтинг
26 августа 2014 в 16:15

Разработка → Фрагментация Android практически перестала быть проблемой?

Привет, Хабр! Сегодня мы хотим предложить вашему вниманию перевод статьи, в которой Эдди Вессалло (Eddie Vessallo) (CEO Entropy) высказывает интересную точку зрения о фрагментации Android. Не секрет, что среди устройств, работающих под этой ОС, нет даже намёка на какую-то унификацию разрешений дисплеев. Всевозможные смартфоны и планшеты от десятков, если не сотен, производителей отличаются невероятным разнообразием разрешений дисплеев. Это уже давно привело к тому, что разработка приложений под Android связана с очень большими трудозатратами по оптимизации интерфейса под всевозможные разрешения. Однако автор статьи-первоисточника считает, что теперь это практически перестало быть проблемой.

Будем откровенны: как разработчики приложений, мы всегда холили и лелеяли красоту и отточенность iOS. Но за последние несколько месяцев произошло кое-что странное. Многие из наших сотрудников начали использовать Android-устройства в качестве основных, шокируя коллег и близких. Но ещё более примечательно то, что наши проекты начали всё больше тяготеть к Android — от нативных приложений для наших лучших клиентов до прототипов и демонстрационного кода для Android Wear и Google Glass.

Что тут происходит? Разве Android не был одной сплошной головной болью для разработчиков вроде нас (как и для наших клиентов)?

Несколько последних лет главными аргументами против разработки под Android были:

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

Но теперь ситуация изменилась. Android всё ещё является вызовом для разработчика, но мы вынуждены признать (и обратите внимание, что это слова признанных поклонников iOS) — в 2014 году фрагментация Android стала мифом.

Начиная с 2010 года Google прикладывает огромные усилия для решения этой проблемы, стоящей перед разработчиками. И им это удалось сделать довольно впечатляющими и «закулисными» способами.

Большая доля пользователей Android всё ещё пользуется старыми версиями ОС. И Google совершенно этого не скрывает. Вот данные по состоянию на 7 июля 2014:



На первый взгляд, ничего хорошего. Особенно если сравнить с Apple, у которой свыше 90% пользователей используют самую последнюю версию операционной системы (iOS 7).

Тайное оружие Google в борьбе с фрагментацией


Но это не та статистика, которую следует искать разработчикам. Пришло время поговорить о Сервисах Google Play. Для разработчиков это куда важнее, чем используемые версии ОС. Сервисы Google Play, представленные в 2012 году, являются эффективным средством для скачивания основных служб, необходимых для запуска Android-приложений. Если на минуту отвлечься от разнообразия версий ОС, то ситуация предстаёт в другом свете — свыше 93% пользователей Android используют самую последнюю версию Сервисов Google Play.

Немаловажным является и тот факт, что Google медленно выводит основные функции Android, API и элементы приложений из операционной системы в Сервисы Google Play. Это даёт разработчикам уверенность в том, что их приложения будут корректно работать (включая различные новые функции) на всех устройствах, использующих последнюю версию Сервисов.

И самое главное, пятая версия Сервисов сейчас распространяется на все устройства, использующие Android от 2.3 Gingerbread до 4.4 KitKat. Это полностью лишает основания аргумент, согласно которому разработчики вынуждены привязываться к функциональности старых версий ОС ради обеспечения совместимости основных возможностей своих приложений.

Но что насчёт зоопарка разрешений дисплеев, из-за которого приходится костьми ложиться дизайнерам и тестерам? На эту тему разработчик Рассел Иванович (Russell Ivanovic) опубликовал замечательный пост, в котором развенчал точку зрения о дисплейном «аде» дизайнеров. По словам Рассела, всё далеко не так плохо, как думают многие разработчики. Считается, что количество используемых разрешений, требующих оптимизации и тестирования, выглядит примерно так:



Источник: Courtesy of OpenSignal’s Android Fragmentation 2013 report.

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



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

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


Со своей стороны нам хотелось бы отметить, что соотношение сторон у обоих дисплеев YotaPhone соответствует выделенному варианту:



То же самое верно и для второго поколения нашего смартфона. Так что, исходя из всего вышесказанного, создание интерфейса и его тестирование не потребуют дополнительных усилий со стороны разработчиков приложений для YotaPhone и YotaPhone 2.
Автор: @YotaDevices
Yota Devices
рейтинг 42,00
Компания прекратила активность на сайте

Похожие публикации

Комментарии (40)

  • –5
    На самом деле, Сервисы Google Play — это убийца старых девайсов. Просто почитайте комменты в Google Play. Занимает 22 мегабайта — не удалить, не переместить на SD карту. Благо, уже далеко позади времена, когда на телефонах было по 256МБ внутренней памяти
    • +14
      Примите как данность, что это часть системы.
      Вы же не считаете что EI слишком много в Windows места занимает или там банк драйверов для абсолютно ненужных вам устройств.
      • +1
        Кажется, тут даже более уместна аналогия с .NET Framework.
        • 0
          Разве MS его насильно устанавливает в ОС?
          • 0
            Начиная с Win7 в системе уже есть .NET 3.5. И снести его кажется нельзя, но не уверен на 100%
            • +2
              Можно.

              image
            • –1
              В 8 его точно нужно руками ставить.
              • +1
                Да в 8 .Net 3.5 и 2.0 нужно ставить. Но 4 ли 4.5 уже встроен в систему, ASP.NET приложения которые на 4 работают в системе сразу запускаются, не нужно ставить дополнительно ничего
                • 0
                  ну так часть системных приложений теперь на нем работает
      • +12
        Это не часть системы. Android — формально является открытой системой. А сервисы — не только закрытые, но и с ограничением на список устройств, куда их можно ставить. Так что официальная позиция гугла как раз в том, что сервисы — это никоим образом не часть системы и андроид существует отдельно от них. Но это часть инфраструктуры, которую пытаются сделать неотъемлемой.
    • +1
      Еще год назад без них почти все работало.
  • +7
    Дизайнерам нет нужды перекомпоновывать интерфейс под каждое возможное сочетание сторон. Вместо этого достаточно проработать в высоком разрешении несколько приведённых выше вариантов, которые можно легко применить для дисплеев почти любого размера.


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

    И когда у Вас заработает BLE? Все гос.конторы ждут новой прошивки.
    • 0
      И для последней картинки не хватает указания размеров, еще бы хорошо указать весь список разрешений которые подходят под этот паттерн.
  • +5
    Google, как я понимаю, также преследует цель вернуть тот процент устройств, который у него отжали амазон и прочие, выпилив дефолтные сервисы гугла.

    Кстати на счет библиотек гугла для разработчиков. Как-то я с опаской смотрю на эту затею. Сегодня мы используем их либу одной версии, а завтра они говорят что переходите на новую, иначе через месяц всё перестанет работать.
  • +3
    С сервисами не все так хорошо как написано. С более-менее крупных проектах размер библиотеки становится серьезной проблемой, так как проект просто перестает собираться из-за ограничения на 64K методов в dex-файлах.
    • +3
      Именно!
      Вот эпическая борьба с этим багом фейсбуком, ну и еще одно упоминание данной проблемы на хабре, может кому будет интересно.
    • –3
      Я думаю, число приложений с 64+ тыс. методов (даже включая все задействованные готовые библиотеки) — отнюдь не массовое. Проблема есть, но большинство разработчиков (а обычно софтины пишутся не таки уж большие) о ней скорее всего никогда не узнает.
      • +3
        Подключаем Amazon Web Services и получаем 70к методов.
        Конечно, библиотека разделена на части и можно тягать по отдельности… А если все нужны?
        Ну и даже по отдельности там все равно надо подключать core библиотеку, а она достаточно объемная.
        И почти со всеми библиотеками так.
        Упереться в 65к ограничение раз плюнуть. Пару либ подключаем и уже не компилируемся.
    • +2
      Вроде как, не использующиеся методы успешно режутся proguard.
      • +1
        С точки зрения разработки — это костыль.
        • +5
          А что это меняет? Проблема то решена.
          • 0
            Возможно. Но, как мне кажется, эта проблема должна быть решена на стороне платформы, а не лататься её пользователями.
            • 0
              Насколько помню, в Anroid L она и частично или полностью решается. Проблема Android'а в том, что часто старые проблемы решаются в новых версиях, которые нельзя установить на старые телефоны (без альтернативных прошивок и тамбурина).
              • 0
                Да выкидывать надо эти старые телефоны через полгода после покупки. Это я вам как разработчик приложений говорю :) Нам так удобнее будет
              • 0
                Если серьезно, то Android L не решает проблему 64к. Так что проблема актуальна, придется резать с помощью proguard (тем, кого прижмет)
      • 0
        Как раз по ссылке от Mikhail_dev такой вариант рассматривается, плюс второй. Короче, проблема вполне решаема. :)
        • 0
          proguard часто неприменим.
          к примеру один из наших проектов не хочет нормально работать с включеным proguard… решение нашли — все объемные либы вынесены в ndk. Но это костыль.
  • +3
    А почему только книжная ориентация экрана, а как же альбомная?

    Делать один вариант и поворачивать приложение принудительно в книжную ориентацию, как это делает Яндекс.Такси и всякие наколенные поделки — неправильно.
    • –4
      Тратить половину бюджета на то, чтобы придумать удобный интерфейс для альбомной ориентации — вот что неправильно. (касается только смартфонов)
    • 0
      тем более что бывают такие девайсы (HP Slate 21 например) где только альбомная ориентация и нет — повернуть аппарат — не вариант (вес и конструкция)
      ладно еще если просто на треть экрана портретная картинка масштабированная но некоторые приложения просто тупо не работают (но при этом — ставятся из PlayStore) и все тут.

  • +7
    С разрешением всё на самом деле не так страшно. Когда мы разрабатывали последнее приложение, то на практике проверили: для смартфонов достаточно поддерживать 320x480 и 480x800, на более крупных экранах всё будет в целом нормально. Плюс отдельно нужно проверять и затачивать для планшетов. Т.е., число сочетаний примерно как для iOS (3.5 и 4 дюйма для смартфонов, плюс для планшетов).

    Что же до API… В случае отсутствия необходимости поддерживать Android 2.3, всё будет достаточно приятно, постоянно натыкаться на «блин, этого нет в старой версии» не придётся. Но нужно всё-равно внимательно относиться к совместимости, там были переходы например между 4.1 и 4.2 например (или 4.2 и 4.3? Уже путаюсь, там у вложенных элементов работа с RelativeLayout немного поменялась, появилось свойство, которого не было в предыдущей версии), но в целом — если вы пишите не игру, проблема с разрешениями и API практически отсутствует.

    Вот если вы пишете игру, то размер экрана может для вас сыграть злую шутку, наборы спрайтов или расположение интерфейса (судя по отзывам знакомых) доставляет определённые проблемы.
    • 0
      Исходя из статистики Screen Sizes and Densities для себя сделал вывод что если разработка идет только под смартфоны дизайн следует делать под 720х1280 и 320х480. Именно в таком порядке. 720 это хшдпи который апскейлится или даунскейлится всего на одну ступень и захватывает 68% устройств. При разработке под 480x800 шдпи для того чтоб охватить фулл ашди нужно апскейлить на 2 ступени что выливается в не самого лучшего качества графику на топовых девайсах.

      developer.android.com/about/dashboards/index.html?utm_source=ausdroid.net#Screens
  • 0
    Я в своей последней игре сделал 2 опции: растягивать картинку или сохранять пропорции (сверху-снизу появляются черные полоски, как в широкоформатном кино, но это неизбежное зло) и все довольны!
  • –1
    И все-таки если разрабатывать приложение под андроид 2.3 и выше, то появляются проблемы. В старом андроиде нету action bar, фрагментов и еще некоторых вещей, которые активно используются в приложениях. Из-за этого приходится использовать android support library, что не очень удобно.
    • 0
      Ну во-первых вполне удобно (я вообще не помню проектов, где не использовали support.v4 library), во-вторых некоторые классы есть только в в support library.
      А вообще о 2.3 можно забыть, потому что это боль, но не из-за support library
  • –2
    Рассел Иваныч — это пиццикато!
  • +3
    Если
    Google медленно выводит основные функции Android, API и элементы приложений из операционной системы в Сервисы Google Play

    — как обеспечивается работа на не поддерживаемых Гуглом устройствах? Начиная от амазоновских Файров и заканчивая китайскими девайсами?
  • +2
    Если не ошибаюсь, то у iOs ситуация следующая:
    — 960х640
    — 1136х640
    — 1024х768
    — 1334 x 750
    — 2208 x 1242

    и она выглядит как-то похуже той, что представлена выше для Android. печаль…
    • 0
      Два последних варианта все же еще не вышли, так что не могут быть однозначно приняты.
  • +2
    Складывается впечатление, что ios разработчики волнуются за андроид фрагментацию больше, чем сами адроид разработчики :)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое Разработка