Лайфхакер
Лайфхакер
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Лучшее
Новости
Жизнь
Рецепты
Здоровье
Кино
Технологии
Покупки
Куда поехать на выходные
Добрые новости
Стыдные вопросы
Есть мнение
Норм или стрём
Личный опыт
Объясняем за минуту
Сервисы
МакрадарТехнологии
19 ноября 2013

Android vs iOS: какая платформа лучше для разработчиков

Фото автора Сергей Суягин
Сергей Суягин

Android vs iOS: какая платформа лучше для разработчиков

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

⚡ Новости из мира гаджетов, обзоры, гайды и не только — в телеграм-канале «Технологии | Лайфхакер».

Разработчики — те, кто создают ключевую часть любой платформы, то есть приложения. Именно от качества инструментов разработки, предоставляемых им платформой, зависит конечный результат. Так под какую систему лучше писать? На этот вопрос ответит опытный разработчик приложений, успевший засветиться как в App Store, так и в Google Play.

Выбор платформы — фундаментальная проблема для любого нового проекта. Android или iOS? С учётом последних новостей о том, что Android успешно захватил 80% рынка, выбор становится ещё сложнее. Не имеет значения, что менеджеры и прочие не слишком осведомлённые с техническими аспектами вопроса люди думают об этом. Другое дело — разработчики.

Каково их мнение? Преимущество той или иной платформы здесь напрямую зависит от её способности сделать их жизнь лучше.

И под словом «их» я имею ввиду «нашу». Помимо авторской деятельности на TechCrunch я занимаюсь разработкой в HappyFunCorp. Кроме того, не так давно я создал дуэт опенсорсных приложений в рамках своего проекта-любимчика. Именно эти приложения я буду использовать для сравнения.

Для справки: ранее я успел написать несколько Android и iOS приложений, как для личных нужд, так и по работе. В частности, я написал мобильные клиенты для своего новостного агрегатора Scanvine, который собирает необычно популярные истории из социальных медиа. Исходники моих приложений можно найти на Github (Android | iOS), а сами приложения доступны в Google Play и App Store.

Ну что же, пусть начнётся битва.

Среда

Вы по-прежнему можете писать код в текстовых редакторах, и многие так делают до сих пор, но с точки зрения производительности куда полезнее использовать интегрированную среду разработки (Integrated Development Environment — IDE).

В случае с Apple у нас есть Xcode, и работать в этой среде — удовольствие. Она гибкая, быстрая, мощная и способна помогать, не становясь излишне навязчивой. И она же становится всё лучше, несмотря на сложные и параноидальные меры, предпринимаемые Apple с целью удержания полного контроля над iOS приложениями и устройствами. Отладчик работает плавно, а симулятор — быстр и отзывчив.

А что насчёт Android? Ох, Android. На данный момент актуальной средой разработки под него является Eclipse, кастомизированный кучкой Android плагинов, и это ДО НЕПРИЛИЧИЯ плохо. Медленный, неуклюжий, нелогичный, зачастую откровенно непонятный, плохо продуманный, излишне сложный — сущий бардак. Его отладчик настолько неудобен, что большую часть времени я провожу в ковыряниях с логами, в то время как с Xcode в моём распоряжении настоящий инструмент-охотник за багами. Не стоит забывать и о эмуляторе Android, которому сначала требуется несколько минут для загрузки, а потом он не может подключиться к ADB.

Справедливости ради нужно сказать, что Google знает об этой проблеме, и они работают над новой Android Studio IDE:

В настоящее время Android Studio доступна в качестве раннего превью. Некоторые функции ещё не доделаны, либо не реализованы, что может вызвать ошибки. Если использование незаконченного продукта вызывает у вас неудобство, то вы можете загрузить и продолжить использовать ADT Bundle (Eclipse с плагином ADT).

Приятно видеть, что они работают над проблемой, но всё же удивительно — через 4 с половиной года после покупки моего первого Android подобный бардак по-прежнему является пределом совершенства, которого смогла достичь среда разработки под Android.

Тут побеждает iOS, безоговорочно.

Конфигурирование

Под внешним лоском Xcode и Objective‑C скрываются ужасы Лавкрафта из эпохи программирования семидесятых. Шучу, я шучу… но всё же. Макросы и файлы заголовков, проекты, цели, схемы и конфигурации сборки, и ужасающе-пугающий список параметров сборки. А ещё невероятные открытия в стиле «Оу, ваш сторонний код не поддерживает ARC? Просто добавьте флаг ‑fno-objc-arc». Просто? Нет!

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

Тут побеждает Android.

Дизайн интерфейса

Казалось бы, здесь Apple безусловно выйдет победителем. С их конструктором ты получаешь возможность легко и быстро собрать простой и красиво выглядящий интерфейс. Проблема в том, что чем дольше я работал с конструктором, тем меньше он мне нравился. Это ещё один момент, когда открывается сложность конфигурирования — инструмент идеально подходит для создания простых вещей, но с развитием приложений простые вещи становятся вдруг сложными, и мне действительно не нравятся эти многоэкранные Storyboards, которые Apple добавила примерно год назад.

В теории Android снабжается сопоставимыми инструментами визуализации, но на практике ты пишешь XML файлы, содержащие инструкции по отрисовке, что при определённом везении приводит к правильному отображению приложения на всём многообразии форматов экранов Android устройств. Apple двигается тем же путём, и их Auto Layout явно затачивается под будущее расширение вариаций экранов на iOS устройствах.

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

В этом раунде победителя выбрать сложнее, но я отдам предпочтение iOS по двум причинам. Во-первых, она по-прежнему гораздо проще — всего 3 размера экрана (включая iPad) и 2 формата соотношения сторон. Многообразие Android в этом плане добавляет сложностей. Второй момент заключается в привлекательности дефолтных визуальных элементов (всплывающие меню, сообщения и так далее). У iOS всё это выглядит куда привлекательнее.

Тут побеждает iOS.

Язык

Android приложения пишутся на Java, iOS — на Objective‑C. Существуют исключения наподобие Xamarin, но в большинстве случаев такое разделение справедливо.

Я учился писать на Java, и поначалу особо не думал об Objective‑C, во многом из-за его громоздкости.

Строка вроде:

String s2 = s1.replace(“abc”,”xyz”);

Превращается в нём в:

NSString *s2 = [s1 stringByReplacingOccurrencesOfString:@"abc" withString:@"xyz"] ;

Но в процессе знакомства этот язык мне очень понравился. Он лучше и чище, чем Java.

При этом у Java тоже есть плюсы. К примеру, более простое отслеживание и отлавливание ошибок. Несколько последних лет у Android было ещё одно очень серьёзное преимущество в плане сбора мусора, то есть автоматического очищения памяти от ненужных объектов, но теперь у iOS умеет то же самое, и преимущество фактически сошло на нет. С учётом последнего факта победа здесь достаётся iOS.

Тут побеждает iOS.

API

У Android и iOS есть огромные библиотеки программного обеспечения, доступные разработчикам, и если говорить в общем, то они довольно схожи: API для работы функций самого телефона и связи, API для доступа в сеть, арсенал средств просмотра, включая мощный WebView — практически аналог полноценного браузера.

Большинство работы при этом выполняется контроллерами, и в общем iOS ViewController является эквивалентом Android Activity.

Чего действительно нет у Android, так это полноценного аналога фреймворка Core Data. Да и в целом система чище и лучше спроектирована. Для примера просто сравните эти два класса в iOS, которые выполняют большую часть работы в приложении, с этими тремя эквивалентными классами в Android. В конце концов, мне гораздо больше нравится работать с iOS CollectionViewController, нежели с Android ListAdapter.

Ещё одна важная метрика: количество строк кода. Мои версии приложений для обеих платформ фактически идентичны по возможностям и функциям, но в iOS на их реализацию потребовалось 1596 строк моего кода, включая файлы заголовков, а при создании Android версии при тех же функциях потребовалось 2109 строк. Разница в 32%.

Тут побеждает iOS.

Интернет

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

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

Однако ‚существует множество сторонних библиотек с открытым исходным кодом, и они делают жизнь куда проще. Я использовал AFNetworking, и она работает так же прекрасно, как о ней говорят в рекламе.

Тут побеждает Android по умолчанию, и iOS при использовании сторонних библиотек.

Шаринг

Насколько легко вам расшарить что-либо из конкретного приложения в Facebook*, Twitter, Evernote и прочие сервисы? Казалось, что это будет первый раунд, в котором Android выиграет 100% нокаутом: у неё есть мощная система взаимодействия между приложениями под названием Intents, да и в общем Android куда более лоялен к запросу и передаче данных между приложениями.

В общем же Apple значительно догнала конкурента в возможностях шаринга. Можете не верить мне на слово, посмотрите код функции «Поделиться историей» в Scanvine на Android и на iOS. Единственная причина, по которой код iOS больше — наличие в нём более гибкого трекинга из Google Analytics, нежели в Android.

Тут ничья.

Фрагментация

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

Тут побеждает iOS.

Публикация приложения

Публикация Android приложения исключительно проста. Инструмент в Eclipse позволяет быстро собрать приложение, и у тебя в руках уже есть готовый apk файл. Отправляйте его по емейлу, размещайте на сайте, либо загрузите в Google Play, сделав его доступным по всему (почти) миру буквально за час. Тут открывается возможность отслеживать статистику установок и креш-репорты вплоть до конкретной строчки кода, из-за которой приложение вылетает. При необходимости апдейт можно выкатить мгновенно.

Публикация в App Store — это кошмар. Мой друг советует выделять в календаре разработки как минимум день на войну с сертификатами и профилями дистрибуции. Не важно, сколько раз вы делали это раньше, и насколько проще пытается сделать этот процесс очередная версия Xcode — у вас всё равно будет много проблем. Тестирование приложения станет ещё большей проблемой, если только не использовать TestFlight. Добавим к этому iTunes Connect, который не идёт ни в какое сравнение с Google Play Developer Console.

Тут побеждает Android, безоговорочно.

Победитель

Им становится iOS, причём с некоторым отрывом. У Android есть преимущества, но в целом написать хорошее приложение под iOS остаётся куда проще, чем под Android. Добавьте сюда тот факт, что пользователи iOS более платёжеспособны, и вы получите ответ на вопрос, какая платформа должна стать приоритетной для стартапа. Вероятно, разрыв сократится после выхода Android Studio, позволив таким образом решить некоторые проблемы… но не все.

Кстати, мой основной телефон — Nexus 4, и я им очень доволен.

(via)

*Деятельность Meta Platforms Inc. и принадлежащих ей социальных сетей Facebook и Instagram запрещена на территории РФ.

Если нашли ошибку, выделите текст и нажмите Ctrl + Enter
Это интересно
Не только стройматериалы: как экосистема «Петровича» закрывает все задачи по ремонту

Не только стройматериалы: как экосистема «Петровича» закрывает все задачи по ремонту

Реклама
Поваренная книга донора. 15 простых и полезных рецептов, которые поддержат организм до и после сдачи крови

Поваренная книга донора. 15 простых и полезных рецептов, которые поддержат организм до и после сдачи крови

Быть заметным: 8 причин выбрать обновлённый фастбэк-кроссовер OMODA C5 

Быть заметным: 8 причин выбрать обновлённый фастбэк-кроссовер OMODA C5 

Реклама
Гид по здоровому весу. Что нужно знать об ожирении

Гид по здоровому весу. Что нужно знать об ожирении

Комментарии
Ihor Vovk
19.11.13 20:42
Наверное, имеется ввиду, в текстовых редакторах
Руслан Шашков
06.12.13 06:12
Но ведь есть уже давно AppCode того же разработчика, который Android Studio делает (http://www.jetbrains.com/objc/). Это я по поводу ремарки под заголовком "Победитель".
Trots Anatoly
14.12.13 09:35
раз с nexus 4, и коммент пишу тоже с
Артём Шалаев
31.01.14 20:11
Для андроид всегда была и есть лучшая IDE - Intellij IDEA. На основе которой и делается Android Studio. Так что первый пункт в топку. Как может быть простая и лаконичная java хуже этого перегруженного архаичного objective-c? А поймать исключение - вообще целая эпопея ) И как в шаринге может быть ничья, если в андроиде шаринг встроен в систему, а в ios, если мне не изменяет память, это все делается сторонними либами, где поддерживаемые приложения весьма ограничены. На счет простоты - ну не знаю... я изучаю сейчас ios после android. И мне очень сложно. То, что я делал в 2 клика, в 2 строчки кода на android, я хз как сделать это на ios... как-то не логично... пока понравился сторибоард разве что. Но к примеру, такая мелочь, как клавиатура, которая перекрывает инпуты - для андроида вообще нонсенс, т.к. система сама заботится о расположении вью и клавиатуры относительно друг друга.
Артём Шалаев
31.01.14 20:11
Для андроид всегда была и есть лучшая IDE - Intellij IDEA. На основе которой и делается Android Studio. Так что первый пункт в топку. Как может быть простая и лаконичная java хуже этого перегруженного архаичного objective-c? А поймать исключение - вообще целая эпопея ) И как в шаринге может быть ничья, если в андроиде шаринг встроен в систему, а в ios, если мне не изменяет память, это все делается сторонними либами, где поддерживаемые приложения весьма ограничены. На счет простоты - ну не знаю... я изучаю сейчас ios после android. И мне очень сложно. То, что я делал в 2 клика, в 2 строчки кода на android, я хз как сделать это на ios... как-то не логично... пока понравился сторибоард разве что. Но к примеру, такая мелочь, как клавиатура, которая перекрывает инпуты - для андроида вообще нонсенс, т.к. система сама заботится о расположении вью и клавиатуры относительно друг друга.
Володя Кириченко
15.03.16 10:36
Ещё один вопрос: Насколько мне известо, чтобы можно было публиковать свои приложения либо игры сколько нужно заплатить на каждой из платформ чтобы иметь возможность чтобы опубликовать своё приложение ?
Алексей Пономарь
15.03.16 10:38
Для iOS аккаунт разработчика стоит 100$ в год, для Android — единовременно 25$
Володя Кириченко
15.03.16 10:39
Спасибо :)
Что вы могли пропустить
Названы 19 устройств Samsung, для которых Android 17 станет последним крупным обновлением
Названы 19 устройств Samsung, для которых Android 17 станет последним крупным обновлением
0
Вчера
Новости
Устройства
Смартфон Samsung Galaxy S26 FE показали на качественных рендерах
Смартфон Samsung Galaxy S26 FE показали на качественных рендерах
0
Вчера
Новости
Устройства
Чем фитнес-браслет отличается от смарт-часов и что лучше выбрать
Чем фитнес-браслет отличается от смарт-часов и что лучше выбрать
0
Вчера
Устройства
Устройства
Как хоккейная шайба: подробности и примерная цена первого устройства OpenAI от Джони Айва
Как хоккейная шайба: подробности и примерная цена первого устройства OpenAI от Джони Айва
0
Вчера
Новости
Устройства
Бесплатным пользователям ChatGPT дали безлимит на чаты и доступ к одной из лучших моделей OpenAI
Бесплатным пользователям ChatGPT дали безлимит на чаты и доступ к одной из лучших моделей OpenAI
0
Вчера
Веб-сервисы
Новости
Google создала карманный ИИ‑переводчик, которому не нужен интернет
Google создала карманный ИИ‑переводчик, которому не нужен интернет
0
6 августа
Новости
Устройства
Студент из Южной Кореи создал навигатор, прокладывающий маршрут в тени
Студент из Южной Кореи создал навигатор, прокладывающий маршрут в тени
0
6 августа
Новости
Технологии
Samsung разрабатывает дешёвую версию часов Galaxy с недельной автономностью
Samsung разрабатывает дешёвую версию часов Galaxy с недельной автономностью
0
6 августа
Новости
Устройства
9 вещей, которые не стоит делать при использовании общедоступного Wi-Fi
9 вещей, которые не стоит делать при использовании общедоступного Wi-Fi
0
6 августа
Технологии
Технологии
Huawei представила пауэрбанк на 12 000 мА·ч с функцией поиска без интернета
Huawei представила пауэрбанк на 12 000 мА·ч с функцией поиска без интернета
0
6 августа
Новости
Устройства
Sega выпустила коллекцию ретро-часов в стиле культовых приставок Mega Drive, Saturn и Dreamcast
Sega выпустила коллекцию ретро-часов в стиле культовых приставок Mega Drive, Saturn и Dreamcast
0
6 августа
Новости
Устройства
Американский стартап Deep построил на дне океана жилую капсулу для учёных
Американский стартап Deep построил на дне океана жилую капсулу для учёных
0
5 августа
Новости
Технологии
«Подключение не защищено»: сайты российских банков перестали открываться в браузере — что делать
«Подключение не защищено»: сайты российских банков перестали открываться в браузере — что делать
0
5 августа
Технологии
Технологии
Huawei показала умные часы Watch GT 7 и 7 Pro с новыми режимами
Huawei показала умные часы Watch GT 7 и 7 Pro с новыми режимами
0
5 августа
Новости
Устройства
Huawei представила MateBook Pro S — ноутбук весом 798 граммов с автономностью до 18 часов
Huawei представила MateBook Pro S — ноутбук весом 798 граммов с автономностью до 18 часов
0
5 августа
Новости
Устройства

Новые комментарии

Аватар автора комментария
Виктор Подволоцкий39 минут назад

0 / 0

Всё так, очень переоценённая функция.
Чем фитнес-браслет отличается от смарт-часов и что лучше выбрать
Аватар автора комментария
Александр Журавлёв1 час назад

0 / 0

И без Смертельного Оружия. Бред.
Журналисты выбрали 25 лучших фильмов о мужской дружбе
Аватар автора комментария
Алексей Хромов2 часа назад

+1 / 0

В четверг в первой половине дня битком? Ни разу такого не встречал. Да, я всегда жил далеко от центра, поэтому говорю о районных кинотеатрах. И там реально почти всегда пусто. Это не значит, что в других кинотеатрах и в другое время точно так же. Это лишь значит, что я могу пойти на показ любого нового фильма и выложить оттуда фотографию пустого зала с подписью «Новый фильм Тарантино (Нолана, Долана, воскресшего Кубрика) проваливается». Так и пишутся новости. Ну а по поводу «адекватного ответа» — мне кажется, что угрозы родственникам режиссёра не попадают в это понятие.
Я пытался найти в фильме «Последний богатырь. Колобок» что-то хорошее. Получилось ли?
Аватар автора комментария
Замир Безгоев2 часа назад

0 / 0

«Я часто хожу в четверг утром в кино и в 90% случаев сижу в зале либо один, либо с двумя-тремя зрителями. Даже если это премьера мирового блокбастера — люди в будни всё-таки работают. На «Колобке» в моём районном кинотеатре в 14:40 собралось человек 10, что много. Всего за первый день фильм по официальным данным собрал более 50 миллионов рублей.» Ну вот тут автор кончено лукавит. Был я на премьерах в четверг, особенно летом, залы битком или почти битком. Рассказывать, что 10 человек на премьере ЛЕТОМ, когда сезон отпусков в самом разгаре, это «много», ну, это какое-то сострадание к создателям этой Чиабатты. Вообще, история с Колобком это исключительный случай, когда могущие играть нечестную игру с целью сверхприбыли получили вполне адекватный ответ от зрителя. Такого я не припомню на территории РФ. Не удивлюсь, если появятся новости, что бюджетников, мигрантов и пр. подневольных массово сгоняют на этот набор чудо-спецэффектов для красивой картинки.
Я пытался найти в фильме «Последний богатырь. Колобок» что-то хорошее. Получилось ли?
Поваренная книга донора. 15 простых и полезных рецептов, которые поддержат организм до и после сдачи крови

Поваренная книга донора. 15 простых и полезных рецептов, которые поддержат организм до и после сдачи крови

Лайфхакер
Информация
О проектеРубрикиРекламаРедакцияВакансииО компании
Подписка
TelegramВКонтактеTwitter (X)PinterestYouTubeИнициалRSS
Правила
Пользовательское соглашениеПолитика обработки персональных данныхПравила применения рекомендательных технологийПравила сообществаСогласие на обработку персональных данныхСогласие для рекламных рассылокСогласие для информационной программы
18+Копирование материалов запрещено.
Издание может получать комиссию от покупки товаров, представленных в публикациях