Лайфхакер
Лайфхакер
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Лучшее
Рубрики
Рецепты
Подкасты
Сервисы
Колонки
Декабрь без стресса
🎄 Ёлка Лайфхакера
Новости
Здоровье
Спорт и фитнес
Покупки
Технологии
Отношения
Кино
Реклама
МакрадарТехнологии
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

Лучшие предложения

10 пар зимней обуви, в которой тепло и не скользко

10 пар зимней обуви, в которой тепло и не скользко

Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей

Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей

Берём в подарок фен-щётку с вращением от Tuvio

Берём в подарок фен-щётку с вращением от Tuvio

GaN-зарядка от Ugreen

Самую популярную GaN-зарядку от Ugreen отдают со скидкой 63%

15 veshchej deshevle 1 000 rublej, kotorye navernyaka prigodyatsya

15 вещей дешевле 1 000 рублей, которые наверняка пригодятся

Надо брать: колонка для компьютера с RGB-подсветкой за полцены

Надо брать: колонка для компьютера с RGB-подсветкой за полцены

Отличный подарок кому угодно — «Яндекс Станция Лайт 2» с Алисой за 5 000 рублей

Отличный подарок кому угодно — «Яндекс Станция Лайт 2» с Алисой за 5 000 рублей

Надо брать: зимние ботинки от Golden Camel с рейтингом 5 звёзд и скидкой 59%

Надо брать: зимние ботинки от Golden Camel с рейтингом 5 звёзд и скидкой 59%

Это интересно
проигрыватели на разный бюджет

Проигрыватель в подарок: 3 варианта на разный бюджет

ТЕСТ: Что о вас говорят ваши траты на Новый год

ТЕСТ: Что о вас говорят ваши траты на Новый год

Как меняется «Битрикс24»: девять комментариев из интернета, которые давно не актуальны

Как меняется «Битрикс24»: девять комментариев из интернета, которые давно не актуальны

Реклама
Где живёт добро: карта маленьких больших дел 2025 года

Где живёт добро: карта маленьких больших дел 2025 года

Комментарии
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
Спасибо :)
Что вы могли пропустить
Xiaomi анонсировала флагманские часы Watch 5 с eSIM и датчиком ЭМГ для мышц
Xiaomi анонсировала флагманские часы Watch 5 с eSIM и датчиком ЭМГ для мышц
0
18:40
Новости
Устройства
Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей
Надо брать: игровой ноутбук Asus TUF Gaming дешевле 70 000 рублей
0
17:30
Покупки
Устройства
Представлен камерофон Xiaomi 17 Ultra с 1-дюймовым сенсором и специальной версией Leica Edition
Представлен камерофон Xiaomi 17 Ultra с 1-дюймовым сенсором и специальной версией Leica Edition
0
16:40
Новости
Устройства
На видео показали возможный дизайн складного смартфона iPhone Fold
На видео показали возможный дизайн складного смартфона iPhone Fold
0
14:46
Новости
Устройства
25 устройств Xiaomi получат HyperOS 3 до 2026 года
25 устройств Xiaomi получат HyperOS 3 до 2026 года
0
14:10
Новости
Технологии
«Яндекс Go» начал показывать спрос на такси в реальном времени
«Яндекс Go» начал показывать спрос на такси в реальном времени
0
13:40
Новости
Технологии
Праздничные помощники: как «Алиса» и «Станции» помогают создать новогоднее настроение
Праздничные помощники: как «Алиса» и «Станции» помогают создать новогоднее настроение
0
13:30
Технологии
Технологии
Google наконец-то даст возможность менять адрес почты Gmail
Google наконец-то даст возможность менять адрес почты Gmail
0
12:14
Веб-сервисы
Новости
Надо брать: колонка для компьютера с RGB-подсветкой за полцены
Надо брать: колонка для компьютера с RGB-подсветкой за полцены
0
Вчера
Покупки
Устройства
Мессен­джер для звонков imo: что это за приложение и как им пользоваться
Мессен­джер для звонков imo: что это за приложение и как им пользоваться
0
Вчера
Ликбез
Технологии
Что делать, если ваш сайт упал: пошаговая инструкция для предпринимателей от Т2
Что делать, если ваш сайт упал: пошаговая инструкция для предпринимателей от Т2
Вчера
Технологии
Технологии
Надо брать: робот-пылесос от Tuvio с функцией влажной уборки дешевле 6 000 рублей
Надо брать: робот-пылесос от Tuvio с функцией влажной уборки дешевле 6 000 рублей
0
23 декабря
Покупки
Устройства
WhatsApp отреагировал на ограничение работы в России
WhatsApp отреагировал на ограничение работы в России
0
23 декабря
Новости
Технологии
ChatGPT запустил персональные итоги года со статистикой сообщений и картинкой на основе ваших тем
ChatGPT запустил персональные итоги года со статистикой сообщений и картинкой на основе ваших тем
0
23 декабря
Веб-сервисы
Новости
Samsung готовит Wide Fold с экраном 4:3, который станет конкурентом складного iPhone
Samsung готовит Wide Fold с экраном 4:3, который станет конкурентом складного iPhone
0
23 декабря
Новости
Устройства

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

Аватар автора комментария
Надежда Фоменко19 минут назад

0 / 0

а я, наоборот, уже 3 года как, еду часов в 11 именно 31 декабря и покупаю все продукты, народу никого, ассортимент полный, и уже точно понимаешь что и на сколько гостей готовить. А раньше за неделю и это был ужас, то одно кончилось, то другое, то на кассе очередь, народ нервный, в общем, опытным путем пришла к закупке 31 декабря) Единственное, накануне варю все нужные овощи и яйца для салатов, они как раз успевают остыть и салаты делать не составляет большого труда
Список продуктов на новогодний стол: кое-что можно купить заранее
Аватар автора комментария
Evgeny Ivakhnenko1 час назад

0 / 0

отключения сквозного шифрования с восапа не требуют, не надо фантазировать
WhatsApp отреагировал на ограничение работы в России
Аватар автора комментария
Evgeny Ivakhnenko1 час назад

0 / 0

что-же требуют с вотсап?
WhatsApp отреагировал на ограничение работы в России
Аватар автора комментария
Kremlina Nova3 часа назад

0 / 0

Аааа. Ясно ))
Надо брать: 3D-принтер от Anycubic со скидкой 31%
Приоритетная задача! Чек-лист отдыха на праздниках

Приоритетная задача! Чек-лист отдыха на праздниках

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