Главная 30 Любопытным 30 Android vs iOS: какая платформа лучше для разработчиков

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.

У 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, и я им очень доволен.

О admin

x

Check Also

Аpple обновила линейку аксессуаров для iPhone

Аpple обновила линейку аксессуаров для iPhone После вчерашней презентации Apple обновила ассортимент своего онлайн магазина. ...

Овсяное печенье с яблоками и орехами

Овсяное печенье с яблоками и орехами Захотелось сладенького? Мы нашли для вас рецепт очень вкусного ...

Генератор новостей про Apple или «Ведущие аналитики полагают

Генератор новостей про Apple или «Ведущие аналитики полагают…» Замечательное развлечение придумал известный подкастер и блогер ...

Apple не виновата в распространении интимных фото знаменитостей

Apple не виновата в распространении интимных фото знаменитостей Скандальная история с утекшими интимными фотографиями знаменитостей ...

Apple не покажет iWatch 9 сентября

Apple не покажет iWatch 9 сентября Пока весь мир пытается разглядеть дату презентации iWatch в ...

Apple научит свои устройства определять силу нажатий на корпус

Apple научит свои устройства определять силу нажатий на корпус В ноябре прошлого года Apple уже ...

Apple не покажет MacBook Air Retina на презентации 16 октября

Apple не покажет MacBook Air Retina на презентации 16 октября 16 октября состоится вторая осенняя ...

Apple не так уж много зарабатывает на iPhone 5C

Apple не так уж много зарабатывает на iPhone 5C AllThingsD удалось получить доклад от исследовательской ...

Apple не будет выпускать iPhone 6s с 16 ГБ памяти

Apple не будет выпускать iPhone 6s с 16 ГБ памяти Взяв новую планку по количеству ...

Apple не выдерживает напора конкурентов в Китае

Apple не выдерживает напора конкурентов в Китае iPhone в Китае больше не пользуется такой дикой ...

Apple не хочет, чтобы вы использовали iPhone 6s в качестве весов

Apple не хочет, чтобы вы использовали iPhone 6s в качестве весов Разработчик Райан Маклеод в ...

Apple не покажет новую Apple TV на WWDC 2015

Apple не покажет новую Apple TV на WWDC 2015 Компания Apple откажется от ранее запланированного ...

Apple назвала победителей премии Design Awards 2014

Apple назвала победителей премии Design Awards 2014 Apple выбрала 12 приложений, которые, по ее мнению, ...

Apple наращивает производство iPhone и iPad

Apple наращивает производство iPhone и iPad Дефицит на новые iPhone заставил Apple привлечь к работе ...

Apple научит свои устройства распознавать лица пользователей

Apple научит свои устройства распознавать лица пользователей В Купертино всегда стараются сделать камеры в своих ...

Apple нанимает известного специалиста по рекламе на радио

Apple нанимает известного специалиста по рекламе на радио Согласно сообщению от AdAge, вице-президент по продажам ...

Apple напоминает пользователям MobileMe о почте на

Apple напоминает пользователям MobileMe о почте на iCloud.com Многие из вас наверняка уже перевели свои ...

Apple нанимает знатоков музыки

Apple нанимает знатоков музыки В Купертино решили сделать свой музыкальный потоковый сервис iTunes Radio менее ...

Apple научит iPhone рационально расходовать энергию

Apple научит iPhone рационально расходовать энергию Пожалуй, самым слабым местом современных смартфонов является относительно непродолжительное ...

Apple напомнила о push-уведомлениях в OS X Mavericks

Apple напомнила о push-уведомлениях в OS X Mavericks Apple разослала некоторым разработчикам сообщения, в которых ...

Apple нанимает известного специалиста по телевидению

Apple нанимает известного специалиста по телевидению На работу в Купертино вышел Жан-Франсуа Муле (Jean-Francois Mulé), ...

Apple наняла дизайнера, вдохновившись его концептами интерфейса iOS

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

Apple нанимает специалистов по искусственному интеллекту

Apple нанимает специалистов по искусственному интеллекту Чтобы сделать виртуального помощника Siri умнее и полезнее, Apple ...

Apple нанимает дизайнера кроссовок

Apple нанимает дизайнера кроссовок Дизайнер Бен Шаффер (Ben Shaffer) из Nike присоединится к команде iWatch. ...

Apple: налоговый кодекс США настолько плох, что мы в невыгодном положении относительно Samsung

Apple: налоговый кодекс США настолько плох, что мы в невыгодном положении относительно Samsung На слушании ...

Apple: АНБ следит за пользователями через iPhone? Не, не слышали

Apple: «АНБ следит за пользователями через iPhone? Не, не слышали» Недавно в Сеть просочились новые ...

Apple наказали за слишком дорогие тарифы для iPhone

Apple наказали за слишком дорогие тарифы для iPhone Торговая комиссия Тайваня оштрафовала Apple на 20 ...

Apple начала рассылать приглашения на презентацию 10 сентября

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

Apple начала снимать эксклюзивные клипы для Apple Music

Apple начала снимать эксклюзивные клипы для Apple Music В новом музыкальном сервисе Apple Music за ...

Apple набирает сотрудников для работы в российском представительстве!

Apple набирает сотрудников для работы в российском представительстве! Сколько всего мы уже слышали на тему ...

Apple начинает собирать абсолютно новую модель MacBook

Apple начинает собирать абсолютно новую модель MacBook Команда DigiTimes внимательно следит за планами Apple относительно ...

Apple Music

Apple Music — вот он, вот он, музыкальный сервис моей мечты! До выхода Apple Music ...

Apple начала оформлять Moscone West к WWDC 2015

Apple начала оформлять Moscone West к WWDC 2015 WWDC — важнейшее событие в IT-индустрии, которое ...

Apple Music будет доступен в России с 30 июня, цена подписки

Apple Music будет доступен в России с 30 июня, цена подписки — 169 рублей После ...

Apple Music теперь можно слушать и на Android

Apple Music теперь можно слушать и на Android После не слишком удачного дебюта в Google ...

Рейтинг@Mail.ru