На сегодняшний день у iOS есть один достойный конкурент в области мобильных платформ — это платформа Android. Как для iOS, так и для Android есть свои наборы инструментов для разработки. В этой статье я не буду принижать или восхвалять ту или иную платформу, а продемонстрирую различные подходы к вопросам разработки и отладки приложений.
В отличие от iOS SDK, в Android SDK нет собственной среды разработки (IDE). Google рекомендует использовать свободную IDE Eclipse. На сайте Android Developers можно загрузить модуль ADT, предназначенный для Eclipse и интегрирующий в неё такие инструменты, как отладчик и визуальный редактор пользовательских интерфейсов. Помимо официального плагина для Eclipse, поддержка разработки под Android имеется в IDE IntelliJ IDEA.
При желании инструменты Android SDK можно использовать и без IDE, воспользовавшись любым эмулятором терминала (часто называемым консолью). Справедливости ради стоит отметить, что проекты Xcode также можно собирать из консоли, но на деле мало кто этим пользуется.
Главным отличием двух платформ является сильное дробление Android в плане конечных устройств. Поддержка множества разрешений, размеров экранов, наличие или отсутствие физической клавиатуры, большое количество версий платформы, до сих пор работающих на тысячах устройств — всё это превращается для разработчика в головную боль. Работа с iOS в этом плане несколько проще, но при переходе с версий 3.x на 4.x проблема в виде изменения API давала о себе знать.
SDK для iOS включает в себя симулятор устройства. Android SDK поставляется с утилитой, создающей экземпляры эмуляторов устройства.
Симулятор имитирует программную платформу, и приложения под iOS, скомпилированные для отладки на компьютере, собираются под архитектуру того процессора, который установлен в компьютере. Для установки на устройство проект собирается заново, с целевой архитектурой armv6 или armv7. Так как текущие версии iOS SDK работают только на процессорах Intel, архитектурой собираемого приложения будет i386. Скорость работы приложения на симуляторе определяется мощностью железа компьютера или ноутбука, поэтому она может не отражать реальной картины: на устройстве приложение, скорее всего, будет работать медленнее. Сообщения о недостаточном количестве памяти на симуляторе можно сымитировать только вручную (для этого есть специальный пункт меню).
Эмулятор Android воспроизводит аппаратные средства устройств, в нём выполняется настоящая, практически полноценная система. Приложения, собранные для эмулятора, можно без пересборки устанавливать на «живые» устройства. Эмулятор Android в большинстве случаев работает медленнее, чем настоящее устройство, и довольно часто можно приятно удивиться повышению скорости работы приложения после установки на устройство.
Создание пользовательского интерфейса для iOS и Android является дополнительным поводом для споров. Существуют сторонники как визуальных редакторов, так и программного способа.
В Interface Builder, входящем в состав iOS SDK, упор сделан на визуализацию всего. Например, назначение событий на различные действия делается с помощью перетаскивания на соответствующие объекты. Когда я в первый раз попробовал создать интерфейс с помощью этого «монстра», он оставил у меня крайне негативные впечатления. С тех пор я являюсь сторонником программного создания интерфейсов.
В ADT для Eclipse также имеется визуальный редактор интерфейсов. Он гораздо проще и менее функционален, чем Interface Builder. Но здесь в любой момент можно переключиться в текстовый режим (файлы пользовательских интерфейсов ― это простые XML-файлы) и отредактировать нужные параметры: например, задать методы, вызываемые на различные действия. Справедливости ради стоит отметить, что файлы XIB, редактируемые Interface Builder’ом, тоже являются файлами в формате XML, но редактировать их вручную не имеет смысла.
У редактора интерфейсов Android есть проблема с отображением созданного вида. Если в процессе обработки файла, определяющего расположение объектов на экране, возникла ошибка, то вместо редактируемого окна на экране отобразится сообщение об ошибке, и редактор не будет работать в визуальном режиме.
Отладку приложений в iOS SDK можно вести, используя окно отладчика GDB, или же воспользоваться одним из инструментов, предназначенных для более пристального слежения за поведением приложения. В процессе работы, помимо GDB, я пользуюсь в основном инструментами Allocations и Leaks. Первый позволяет отслеживать расход памяти на различные объекты, создаваемые в процессе работы приложения. Второй предназначен для поиска утечек памяти. Оба инструмента довольно удобны: можно посмотреть иерархию вызовов, которые привели к интересующим нас выделениям памяти или утечкам, узнать объёмы используемой памяти и сделать множество других полезных дел.
В ADT для Eclipse имеется инструмент для отладки, который называется DDMS. В отличие от iOS SDK, он не выделен в отдельные окна, а открывается в виде одной из перспектив в Eclipse. Перспектива в Eclipse — это набор окон, предназначенных для работы со своим видом задач: например, есть перспективы для разработки на Java, Python, веб-приложений и т.д. Набор инструментов схож с набором для iOS. Но есть и отличия. Например, можно одновременно запустить несколько приложений и переключать наблюдение на нужный процесс. Имеются инструменты для имитации входящего звонка, отправки SMS и отправки заданных координат для имитации функционала GPS. Если к компьютеру подключено устройство с Android на борту, и на нём включен режим разработки, то DDMS можно подключить к нему, просто выбрав его из списка доступных устройств.
Обе платформы предоставляют отличный набор инструментов на все случаи жизни, и умение работать с ними — дело привычки и опыта. Кому-то больше нравится программировать под iPhone, кому-то — под Android. Но одно можно сказать точно: благодаря тому, что для программистов созданы такие хорошие условия для работы, разработка — это не только способ заработка, но и отличный способ провести время и получить удовольствие.
47 комментариев
Форум →Извиняюсь за ОФФТОП.
Добрые люди, помогите пожалуйста. На iPad осталось 6.8 Гб свободной памяти. Я установил VLC плеер (скачан из App Store, пока он был там)и пытаюсь закинуть филмы размером в 6.1 Гб. Но iTunes выдает ошибку, что недостаточно памяти, и так кажды раз, даже тогда, когда закидываю 1 фильм.
В чем может быть дело? Того, кто мне поможет, награжу промо-кодом на игру Ready Action!
P.S. Надеюсь на благосклонность авторов, т.к. завтра уезжаю в дорогу… фильмы нужны.
@iSavelik, это вроде как для работы компа нужно ~300 мб свободново места. Т. е. система требует, инече бы тунец не видел этого места. Скорее всего таГ, но возможно ты супер хитрожопый мутант и сделал в системе что-то не так. Если не трогал – гони печеньку :)
@iSavelik, Хотя, пара гигов это уж слишком много.
@iSavelik, просто в айпеде должно быть свободно несколько мегабайт чтоб не лагал, и айпед сам не позваляет закачать файлы после того как вы все заполните. Удалите что нибудь и закачайте свои фильмы, и вообще зачем вам такие тяжелые фильмы, закачайте такие мегабайт по 600 которые для iPhone и номально будете смотреть. Сайт называется филмс-айфон.ру или ком эта два сайта очень много фильмов.
@iBeerman, На нем остается свободная память.
А фильмы весят как раз так, просто их много :-)
Не знаю что это было, но все удалось сделать. Целый день мучений… И вот все готово!
Все кто отозвался, напишите свой e-mail, вышлю вам печеньки в виде промо-кодов! :-)
А стоимость китов одинаковая?
@NightPeople, Android SDK доступна для свободной загрузки без регистрации и оплаты.
@NightPeople, Android SDK совершенно бесплатен как и сама ОС Андройд.
А iOS SDK $99/year ($99 в год надо заплатить).
@DomenER, плюс мак. Или уже хкод для винды появился?
Очень много умных слов
@DaZzBouRGh, Это же хорошо.
@Никита Дёнин, большое спс автору.хотелось бы побольше новостей типа этого.у меня такой вопрос.на какой платформе легче писать код,если человек не имеет опыта ни на одном из них,и еще один.что мне нужно для регистрации в iphone dev center и публикации прог(какой тип кредитки и имеет ли значение в какой стране я живу или че то еще),зараее очень признателен за ответы
@kiphon3, Вот тут, есть все: http://www.iphones.ru/forum/index.php?s=b1eaa070088a47e719f62e314026d3e2&showforum=59
@iSavelik, очень здОрово! ) только вот регистрация на форуме закрыта… А хотелось бы.
@iSavelik, оч спасибо
@kiphon3, Меня опередили :-)
@Никита Дёнин, можно с тобой связаться? Например, в ICQ или в Skype?
@iSavelik, Можно. Напиши в личку на форуме. Ник: Narmo.
Мораль басни такова… Я не понял нифига=)
@Wickedgnome, я тоже ничего не понял, но я молчу 8)
@mikla, рекомендую к прочтению http://neponyal.net/
Спасибо за статью! Было любопытно почитать и сделать соответствующие выводы!
@kerkomen, у айфона огромный плюс в плане программирования – мало девайсов и сходство разрешений (iphone’овское, ipad’овское и ретина) и железа
у андроида очень различается железо разных девайсов и разрешения экрана колеблются от очень маленьких до слишком больших…
насчёт айФона не знаю, а Eclipse кривоватый =)
@kerkomen, всегда можно использовать размеры в процентных соотношениях. Для мобилы и планшета. В чем проблема? Андроид работает под вм. Разработчику вообще наплевать на железо если он пишетхороший код.
Я долгое время програмировал по иОС, а когда пришлось сесть за Андроид я просто …. охренел, такого медленного емулятора и ИДЕ я еще нигде не встречал. Первый запуск емулятора занимает около 3 минут, да бог с ним, простой деплоймент апликухи на емулятор – 30-50 секунд, Еклипс тормозит безбожно. Вобщем впечатления после иОС да даже ВинМобайл (и таким грешил :) ) просто не передать словами.
А вообще, пока Гугл опирается на Ява – не быть Андрюшке конкурентом Яблочкам.
Кстати, для кодеров (if you dare) ха-ха: http://www.zdnet.com/blog/burnette/program-for-android-in-cc-with-the-native-development-kit-if-you-dare/1284
@Forsaken25, Согласен, тормоза при запуске очень печалят.
@Forsaken25, Тоже скачал, ужасно долго запускалось.
@Forsaken25, Вообще ничего удивительного, что первый запуск так много времени занимает. Всё, что работает через прослойку в виде Java-машины требует времени. Любое IDE на java запускается долго.
@i.band, Это да, но почему тогда симулятор блекберри работает – ну просто несравненно быстрее? Та же ява…
@Forsaken25, попрограммируйте для Windows Mobile…. iOS эмлятор – самый быстрый из всех известных платформ. Но сама IDE – самая убогая. Даже DeveloperX для программирования под тот же iOS ее перплевыввает. Хотя, стоит признать, что Form Builder все тот же.
@DemonSoftII, Что еще за DeveloperX?
@DemonSoftII, програмировал я под вин моб, там скорость работы была хотя бы приемлимой! А тут просто ужас какой то. Я не представляю как можно написать под ведроид что-то более менее серьезное. Попробую еще на коре и7 поганять, но боюсь результат будет неутешительный. Единственный совет который нашел в сети – использовать не симулятор а сразу устройство.
По поводу xcode – после визуал студии конечно не то :) но общий инструментарий там на уровне, тот же самый инструмент Leaks – сказка просто :)
Спасибо автору за статью) Сам сейчас “зарыт в этом сене” и соответственно читать тоже интересно. А интересно в квадрате потому, что “все познается в сравнении” =)
Только один нюанс, если бы не картинка никогда не понял, что такое A-sdk. Думаю правильно было бы написать все таки Android-SDK
Ставлю 5+ за сравнение IDE! Так держать! :)
Теперь пожалуйста статью с более углубленным сравнением Objective-C с Java и фреймворков из обоих SDK! ;)
@artbasil, Только я сравнивал не IDE, а SDK :-)
Сравнивать фреймворки и библиотеки не имеет смысла. Во-первых, разные языки программирования, во-вторых, для Java написано несравненно больше сторонних библиотек.
@Никита Дёнин, Прочитав статью складывается общее впечатление именно об IDE и симуляторах. А вот фреймворки тоже было бы интересно сравнить. Например как строится интерфейс в андроид по сравнению с айфон? Что в андроиде есть на подобие UIKit и в чем отличия? Ну и языки тоже подравнивать.. Можно в отдельных статьях все.. Будет очень интересно!
Кто бы рассказал про альтернативные SDK для iPhone. Monotouch, firedragon, есть еще какието. И главное некоторые позволяют разрабатывать под Win.
@Entze, Монотач платный, стоит как Юнити почти. Но толковый. То что надо для дотнетчиков. Есть еще AirPlay — кроссплатформный SDK на C++, почти все платформы кроме Blackberry. Подходит для игр или прог с кастомным интерфейсом. Вывод на экран через OpenGL, никакого UIKit, если нужен UI, все делается ручками.
приятно видеть на iphones.ru очень хорошее начинание, статьи по разработке, так держать. Подфорум для разработчиков уже лучший в рунете.
но, от субъективных оценок можно было воздержаться
> Когда я в первый раз попробовал создать интерфейс с помощью этого «монстра», он оставил у меня крайне негативные впечатления. С тех пор я являюсь сторонником программного создания интерфейсов.
ничего сложного там нет, тем более много туториалов имеется
@progn, Я не говорил, что он сложный, я сказал, что он неприятный в использовании.
А не покажете ли, Никита, пару проектов, в которых участвовали? Ну, если есть готовые игры или приложения.
@beavis, Когда-то давно участвовал в создании Айчиталки для iPhone.
извините пожалуйста за нубство,но языки програмирования какие?
PS
спасибо заранее
@pin505, В смысле?Они все разные, я, например, в работе использую HTML/CSS/PHP/JS.Если вы про программирования под iOS, то вроде питон и еще несколько.
@pin505, Под iOS ― Objective-C / C / C++. Под Android ― Java / C / C++.
Нашли орфографическую ошибку в новости?
Выделите ее мышью и нажмите Ctrl+Enter.Как объединить несколько мессенджеров в одном приложении
Что делать, если на iPhone не приходят СМС сообщения с Android-смартфонов
Как отобразить на экране iPhone регион звонящего?
Безопасно ли устанавливать приложения на iPhone через Safari
Как на iPhone открывать окно ввода пароля вместо авторизации Face ID без ожидания
Куда делась Загруженная музыка в Apple Watch на прошивке watchOS 3.0?
Как включить Apple TV при помощи любой фразы Siri
Как понять, какой Apple Pencil выбрать для iPad