
На сегодняшний день у 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. Но одно можно сказать точно: благодаря тому, что для программистов созданы такие хорошие условия для работы, разработка — это не только способ заработка, но и отличный способ провести время и получить удовольствие.






Извиняюсь за ОФФТОП.
Добрые люди, помогите пожалуйста. На iPad осталось 6.8 Гб свободной памяти. Я установил VLC плеер (скачан из App Store, пока он был там)и пытаюсь закинуть филмы размером в 6.1 Гб. Но iTunes выдает ошибку, что недостаточно памяти, и так кажды раз, даже тогда, когда закидываю 1 фильм.
В чем может быть дело? Того, кто мне поможет, награжу промо-кодом на игру Ready Action!
P.S. Надеюсь на благосклонность авторов, т.к. завтра уезжаю в дорогу… фильмы нужны.
@iSavelik, это вроде как для работы компа нужно ~300 мб свободново места. Т. е. система требует, инече бы тунец не видел этого места. Скорее всего таГ, но возможно ты супер хитрожопый мутант и сделал в системе что-то не так. Если не трогал – гони печеньку :)
@iSavelik, Хотя, пара гигов это уж слишком много.
@iSavelik, просто в айпеде должно быть свободно несколько мегабайт чтоб не лагал, и айпед сам не позваляет закачать файлы после того как вы все заполните. Удалите что нибудь и закачайте свои фильмы, и вообще зачем вам такие тяжелые фильмы, закачайте такие мегабайт по 600 которые для iPhone и номально будете смотреть. Сайт называется филмс-айфон.ру или ком эта два сайта очень много фильмов.
@iBeerman, На нем остается свободная память.
А фильмы весят как раз так, просто их много :-)
Не знаю что это было, но все удалось сделать. Целый день мучений… И вот все готово!
Все кто отозвался, напишите свой e-mail, вышлю вам печеньки в виде промо-кодов! :-)