Android vs iOS с точки зрения сложности разработки.Как много «дополнительного» времени нужно потратить, чтобы приложение работало на всех устройствах?
Недавно, поделился с коллегой о своих планах перейти на мобильную разработку под Android.
Он сказал, зачем тебе android? Под него писать очень геморройно: очень много устройств, будут проблемы совместимости, в отличие от iOS, где с этим все намного проще.
Интересно узнать из первых рук, насколько проблемно разрабатывать под android в сравнении с iOS?
Какие есть подводные камни у iOS, каких нет в Android?
Как много "дополнительной" мороки нужно для каждой платформы, чтобы твое приложение работало корректно на всех устройствах данной платформы? Много ли трудностей сделать так, чтобы приложение android корректно работало на всех многочисленных устройствах android? И тоже самое про iOS.
Наткнулся на видео, которое мне сильно помогло в переходе с Андроид на iOS. Здесь именно советы новичку, который вообще не пользовался айфонами ранее. Рекомендую: https://www.youtube.com/watch?v=ofe3NTzLr3Y&t=1s
Разработка под iOS исключительно проста. Наличие отличной документации от Apple. Комьюнити развито достаточно неплохо. Порой Interface Builder существенно сокращает время разработки.
Подводный камень - это наличие MacOS девайса для разработки, но некоторые кодят на вируталках или извращаются еще хлеще.
Возможно для кого-то подводный камень - это платить 99$ в год, чтобы публиковать приложения в AppStore.
Возможно для кого-то подводный камень - это сам процесс публикации приложений в AppStore.
С точки зрения технической Swift язык + XCode IDE перекрывают практически все необходимые потребности для эффективной и быстрой разработки под iOS.
а чем вызвана простота?
Для разработки под android есть отличная документация от Google, развитое community, отличная ide - Android Studio. И если Java последних версий иногда использовать не вариант, ее постепенно заменяет Kotlin, насколько я знаю.
Меня же интересует, как много "дополнительной" мороки нужно для каждой платформы, чтобы твое приложение работало корректно на всех устройствах.
nicenice, могу ответить с позиции разработчика игр: на iOS значительно проще. В первую очередь - нет такого зоопарка железа, предсказуемая производительность, в абсолютном большинстве актуальные версии ОС и т.п. Например, я игры тестирую на iPad4 (с Retina дисплеем) и iPhone SE - этого вполне хватает, чтобы работало на весьма широком диапазоне устройств (начиная с iPhone 2, если потребуется, хотя обычно ориентируются на что-то более новое). На Android же существует куча устройств, о существовании которых (в качестве использования вашей программы) вы даже не задумываетесь. Например, у знакомого не приняли игру в один из сторов (может Самсунговский, может Амазоновский, не помню) из-за того, что на каком-то фотоаппарате рычажком зума не регулировалась громкость в игре (такие вещи обычно решаются блокированием несовместимых устройств - и их (заблокированных) количество обычно исчисляется тысячами - да, заставить работать на всех не получится принципиально). Тестирую для Android также на паре устройств - старом планшете (с Android 4.2.2) и современном телефоне (Android 7). При этом тестировщики находят кучу устройств, где возникают проблемы - а лично у меня нет ни желания, ни возможности покупать десятки разных устройств исключительно для тестирования. А пользователь не будет разбираться - он просто влепит единицу в сторе из-за того, что игра тормозит/не запускается на его современном китайфоне за полторы тысячи.
Ещё имел негативный опыт, когда делал одно простое приложение под Android - определение позиции, отправка данных на сервер, вывод локальных уведомлений с данными, полученными с сервера. Даже такое простое приложение пришлось править два раза - когда менялась мажорная версия ОС (4 → 5 и 5 → 6), ибо оно просто переставало работать. Хотя сами правки были минимальными (в манифест добавить одну строчку, например), но сам факт неприятен.
Пишу под Android.
Плюсы: Большое сообщество. Дешёвая разработка. Хорошая документация. Опенсорсная платформа позволяет иной раз не искать документацию, а просто глянуть как оно там, внутри. Удобный фрейворк, до беспредела расширенный и переписанный умельцами вдоль и поперёк, под любые изощрённые нужды найдутся готовые модули. Больше клиентская база.
Минусы: Мощная и удобная, но глючная (да, до сих пор) IDE. Зоопарк устройств. Точнее так: все устройства до определённой степени арстракции идентичны, все отличия и углы удачно завёрнуты. Но модификация производителями прошивок порой привносит чудес. Проблема решается тестированием.
Платформы бешено соревнуются за рынок и потому во многом похожи. Но я категорически за Android!
Вопрос, что и на чем вы хотите писать.
Игрушки можно сразу писать на С++, используя кроссплатформенные библиотеки типа Cocos2d-x, и приспособление к устройствам будет минимальным. Но сколько вы потратите на написание самого приложения?
Программы, которые должны следовать HIG той и другой системы, будут как минимум различаться интерфейсом.
Ну, а если вы собираетесь под Андроид писать на Джаве, а под Яблоко - на Свифте, то у вас две программы на двух разных языках - то есть и работа двойная, как ни крути.
нет же, нет. имелось ввиду конкретную платформу и устройства на ней.
много ли трудностей сделать так, чтобы приложение android корректно работало на всех многочисленных устройствах android? и настолько это критично?
nicenice, вопрос некорректен. Что это за приложение? Какие функции, присутствующие в одних устройствах и отсутствующие в других, оно использует? Насколько интерфейс загроможден или, наоборот, гибок? Без такой детализации все вопросы и ответы - пальцем в небо.
На Андроид такой зоопарк устройств с разными характеристиками, разными размерами и разрешениями экранов, ОС может быть модифицирована производителем или пользователем.