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

Короткая версия: Потому что разработка для Android — отстой. Я только недавно реализовал функцию в приложении для iOS и Android. На iOS это заняло у меня 23 строки кода и несколько минут. На Android у меня ушло 567 строк кода и 3 дня.

Длинная версия: Во-первых, позвольте мне сказать, что другие ответы, которые говорят о том, как мало денег в Android, по крайней мере частично верны, но (лично для меня) это не так страшно, как они это себе представляют. Я зарабатываю нетривиальную сумму денег на своих приложениях для Android, но я делаю более чем вдвое больше, чем на своих приложениях для iOS.

Но главное … Android отстой. Я знаю, это звучит как религиозный аргумент, но терпите меня.

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

Apple усердно работает над тем, чтобы iOS работала очень хорошо и в то же время выглядела хорошо. Многие из визуальных конфет, которые Apple включает в iOS, на самом деле помогают в юзабилити, они не просто для наглядности . Они тонко передают информацию пользователю, чтобы пользователь понимал, что происходит и почему что-то происходит.

Тем не менее, Google сосредоточился в первую очередь на том, чтобы заставить работать только основы Android, потому что они ценили идею индивидуального выражения разработчиками, а не Apple, которая хотела, чтобы приложения выглядели единообразно. (Раньше я работал в Google, поэтому понимаю внутренний менталитет.) Проблема в том, что подавляющее большинство разработчиков не обучены удобству использования или графическому дизайну, и поэтому их приложения выглядели грубыми и работали грубыми. Во времена Android 4.x Google понял, что у них есть реальная проблема, потому что нет двух приложений для Android, работающих одинаково, потому что каждый разработчик придумал свой подход. Они начали пытаться стандартизировать пользовательский интерфейс и заставили некоторых своих специалистов по графике сделать визуальные элементы более привлекательными. Это все еще не было здорово.

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

Эта функция включает в себя нажатие удержание элемента в списке / таблице, а затем перетаскивание его вверх или вниз для изменения порядка элементов в таблице (перетаскивание). В iOS это заняло всего 23 строки кода, потому что по сути все уже встроено в базовую систему iOS. Объект UITableView (прокручиваемые списки, которые вы видите повсюду в iOS) уже знает, как реагировать на нажатие нажатие, и уже знает, как анимировать перемещение строки при перетаскивании пальца… и уже применяет красивую тень при перетаскивании. строка вокруг… и уже знает, как анимировать другие строки таблицы, чтобы они перемещались по пути, когда вы перетаскиваете эту одну строку, и т. д. Она также уже имеет встроенные хуки, чтобы система могла запрашивать мой код: Разрешить ли пользователю перетаскивать этот ряд? Может ли пользователь поместить эту строку между x и y? и он скажет мне, что пользователь просто перетащил эту строку в это новое место, что позволяет моему коду реагировать на это событие.

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

Но Android не делает ничего из этого, поэтому мой код Android имеет длину 567 строк, и мне потребовалось 3 дня, чтобы все это заработало. К счастью, в этом ОДНОМ конкретном случае мне не пришлось писать весь этот код самому, потому что ОЧЕНЬ многие другие разработчики Android жаловались на отсутствие этой невероятно базовой функции. В ответ Google опубликовал «пример кода», который показал, как вручную создать элементарную форму перетаскивания. Конечно, этот код был устаревшим, потому что он был написан для Android 4 и не работал для Android 5, 6 или 7 (7.x является текущей версией на момент написания этой статьи).

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

Это означало, что я потратил несколько дней на создание функции, которая даже не работает так же хорошо или выглядит так же хорошо, как функция, которая уже существует в iOS и заняла у меня всего несколько минут. Я взял скриншот кода из обоих и поместил их рядом, чтобы я мог использовать его, чтобы объяснить разницу. (см. ниже. На снимке экрана показаны комментарии в коде, но я не учел комментарии в числе строк).

Всякий раз, когда у меня есть клиент, которому нужно их приложение на iOS и Android, я говорю им, что версия Android будет выпускаться в 4 раза дольше и будет только на 80% лучше. Когда я даю им цитату, я определяю, сколько потребуется приложению для iOS, а затем умножаю это число на 2,5, чтобы покрыть версию для Android… что не платит за все мое время на версии для Android, но зарядка в 4 раза больше звучит для них нелепо, потому что они не знают, на что это похоже.

0

Ура! Вы первые нашли эту информацию, сделайте доброе дело, поделитесь ей в: