Android vs ios: яка платформа краще для розробників

Зміст:

Anonim

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 =;

Але в процесі знайомства ця мова мені дуже сподобався. Він краще і чистіше, ніж 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)

Android vs ios: яка платформа краще для розробників