LXF163:Средства разработки для Android
|
|
|
Программирование для мобильных устройств
Содержание |
Средства разработки для Android
Задумано – сделано: к радости Андрея Боровского, программировать наконец-то можно, «не отходя от кассы». В смысле, прямо на мобильнике.
Человек, который держит в руках мобильное устройство, может не только бродить по Интернету или расширять круг общения в социальной сети. Возможно, перед вами программист, который пишет приложение, способное перевернуть мир.
Если мы с вами одной крови, то вы, как и я, при прочих равных условиях предпочитаете такие устройства, которые можно программировать. Особенно приятно, когда программировать устройство можно прямо на нем самом.
Устройства Android с самого начала были более дружественны к разработчику, чем представители более ранних мобильных платформ. Почти на каждом устройстве есть отладочный порт (и соответствующий режим работы устройства), а Android SDK содержит отличный эмулятор устройств Android разных поколений. Однако с некоторых пор программирование для Android вышло на новый уровень. Сейчас уже всерьез говорят о том, что планшеты Android могут заменить ноутбуки. Стоит ли удивляться, что и такая сфера компьютерной деятельности, как разработка программ, нашла свое место на этих девайсах. Преимущества подобной разработки очевидны: после очередной сборки не нужно тратить время на перегонку программы с ПК на устройство. Само средство разработки становится таким же мобильным, как и девайс, на котором оно установлено. Тем, кто только учится писать программы для мобильных устройств, эти средства разработки тоже могут помочь, поскольку многие из них значительно сокращают временной интервал между правкой кода и созерцанием конечного результата на экране устройства.
Недостатки процесса написания программ на мобильных устройствах тоже очевидны. Программа – это текст, для написания которого нужна клавиатура (попробуйте надиктовать текст программы с помощью голосовых сервисов Google), причем, поскольку языки программирования широко используют символы, которые редко встречаются в текстах на естественных языках (#, &, и ^), желательно, чтобы клавиатура была полноценной компьютерной, а не урезанной SMS-ориентированной. Вторая проблема – это некоторые ограничения, присущие ОС мобильных устройств, затрудняющие такие процессы, как, например, отладка. Тем не менее, если вы выберете подходящие инструменты и разумно определите, для каких именно задач их использовать, возможность писать программы на мобильных устройствах может стать приятной и полезной.
Можно ли использовать мобильные средства разработки для создания серьезных проектов? Ответ на этот вопрос зависит от того, что следует считать серьезным проектом. Если под серьезностью проекта понимать его успешность, то стоит напомнить, что многие успешные проекты Android содержат не так уж много исходного кода, и, стало быть, просты в сборке и управлении.
Как вы уже поняли, мы рассмотрим программы для Android, который позволяют нам не только писать код на любимом смартфоне или планшете, но и превращать этот код в программные модули, готовые к выполнению. Такие программы широко используют преимущества мобильной разработки и смело пытаются преодолеть ее недостатки. Разумеется, даже при работе с небольшими проектами использование эмулятора устройства на ПК имеет свои преимущества. С помощью эмулятора мы сможем проверить работоспособность нашей программы на разных версиях платформы, тогда как при разработке и отладке программы на настоящем железе мы имеем только то, что имеем.
Android Java IDE (AIDE)=
Эта программа предназначена для создания полноценных приложений Android, соблюдающих все правила поведения приложения в системе; и что особенно ценно – Android Java IDE поможет вам не нарушать эти правила, даже если вы еще не очень твердо их усвоили. Но это не все. Уже довольно давно из мира пользовательских интерфейсов в мир средств разработки проникают идеи discoverability – самоочевидности правил взаимодействия с системой. Android Java IDE является прекрасным примером самоочевидности. Создав в программе заготовку проекта приложения Android, мы увидим полный каркас проекта, в котором легко разобраться, даже несмотря на то, что интерфейс планшетов и смартфонов не очень удобен для навигации по сложным структурам. Вообще, интерфейс Android Java IDE выполнен на твердую пятерку.
Программа достойна своего имени – она действительно представляет собой интегрированную среду разработки и охватывает почти все ее аспекты: управление файлами проекта, отладка и подготовка релиза (файла apk), интеграция с системами контроля версий (а также с DropBox), команды интеллектуальной навигации по проекту (например, поиск вхождений заданного имени). AIDE умеет открывать проекты, созданные в Eclipse, и поддерживает такие возможности, как инкрементная компиляция и управление режимами оптимизации кода. Богатые средства интроспекции языка Java и компилятор, способный работать с фрагментами кода на лету, позволили разработчикам реализовать все те функции, без которых не обходится ни одна современная интегрированная среда разработки, такие как автоматическое завершение кода и интерактивный режим выявления ошибок этапа компиляции непосредственно в процессе написания вашей программы. Во время работы с исходными текстами в AIDE проверяется не только корректность введенных идентификаторов и ключевых слов, но и синтаксис. Надо признать, что среди всех рассмотренных программ, AIDE – единственная, в которой эта интерактивная проверка приносит ощутимую пользу. Кроме того, Android Java IDE, даже в бесплатном варианте, обладает хорошим набором инструментов автоматического рефакторинга и быстрой навигации по исходным текстам.
В настройках программы Android Java IDE вы можете задать сочетания клавиш экранной клавиатуры для выполнения различных действий.
К недостаткам AIDE следует отнести отсутствие поддержки Android NDK. Нет, разумеется, вам никто не запрещает размещать скомпилированные библиотеки С/С++ в директории lib и взаимодействовать с ними с помощью JNI. Но компилировать библиотеки придется на большом компьютере, на котором установлен NDK. Еще один небольшой недостаток программы – кнопки Undo и Redo спрятаны слишком глубоко в недрах ее интерфейса. При вводе с экранной клавиатуры ошибки случаются гораздо чаще, чем при работе с клавиатурой обычной, и кнопку отката изменений хотелось бы всегда иметь под рукой. Разумеется, обеим командам назначены быстрые сочетания клавиш (стандартные для этих команд Ctrl + Z и Ctrl + Y), но при работе с экранной клавиатурой даже ввод этих сочетаний производится не так быстро, как хотелось бы. Лучше было бы разместить кнопки на панели быстрого доступа.
Как и многие другие приложения Android, программа существует в двух вариантах: базовом бесплатном и платном расширенном. Главным ограничением бесплатной версии по сравнению с платной является невозможность открыть проект, состоящий из более чем 25 файлов. Мне это ограничение представляется не очень существенным, поскольку работать с проектами такого размера на мобильном устройстве вряд ли имеет смысл. Другое ограничение – отсутствие в бесплатной версии функции записи в репозиторий Git (считывать данные можно), так что если вы хотите использовать бесплатную версию совместно, например, с Eclipse, придется положиться на DropBox.
Отличительная черта AIDE – необходимость «настоящей» установки вашей программы в системе даже на этапе отладки. С одной стороны – программа сразу начинает существовать «в реальном окружении», и это хорошо. С другой стороны, вам придется разрешить устройству Android устанавливать программы из неизвестных источников (что, впрочем, все равно придется сделать, если вы решили заняться программированием под Android всерьез).
Android Terminal IDE
Бесплатная среда разработки Android Terminal IDE уже мною упоминалась – правда, в ином контексте. Теперь пришла пора сказать о том, что Terminal IDE – это не только набор инструментов командной строки, которые не требуют прав суперпользователя, но и довольно мощная среда разработки. Саму программу можно загрузить через Google Play, но перед началом работы рекомендуется посетить сайт программы на хостинге Google Code http://code.google.com/p/terminal-ide/, скачать и внимательно прочесть документацию.
Главное отличие Terminal IDE от большинства мобильных средств разработки для Android заключается в том, что этот пакет программ ориентирован на работу с командной строкой и текстовыми интерфейсами. Для одних это может стать недостатком, для других – достоинством. Между прочим, установив Terminal IDE, вы сможете подключиться к своему устройству Android с любого компьютера с помощью SSH, и использовать для работы с консолью полноразмерные клавиатуру и экран (это особенно удобно, если ваше мобильное устройство – смартфон с экраном около 4 дюймов). Трудности ввода текста с экранной клавиатуры – одна из самых существенных сложностей при написании программ на устройствах Android. Разработчик Terminal IDE полностью осознал это и предоставил нам все мыслимые средства для упрощения ввода.
Другая характерная особенность Terminal IDE заключается в том, что для выполнения написанных вами программ не требуется никаких специальных прав (и не нужно выполнять процедуру установки, как в предыдущем случае). В Terminal IDE программы можно собирать привычным для «джавистов» способом: файл исходных текстов превращается в файл .class, который, в свою очередь, собирается в JAR. Следует только отметить, что если для сборки JAR применялась утилита dx, полученные файлы не будут совместимы со стандартными виртуальными машинами Java, поскольку целевой платформой является виртуальная машина Android.
Третья особенность – расширенная программная клавиатура, предназначенная для программистов и всех, кому приходится работать с инструментами командной строки. Об этой клавиатуре я сказал уже много хорошего, повторю только, что после установки Terminal IDE ее можно использовать не только в IDE, но и в любой другой программе Android. Среди консольных инструментов программы есть и Git.
Помимо программ Java, представленных в виде JAR-файлов, Terminal IDE позволяет собирать «настоящие» приложения Android. Среди демо-примеров, которые входят в поставку программы, есть пример и такого приложения. Как и рассмотренная выше, эта среда разработки обладает возможностью создавать как неподписанные, так и подписанные файлы apk. Лучше всего сказанное об этой программе резюмирует отзыв одного из пользователей, оставленный на сайте Play Market: «мощнейшая вещь».
CCTools IDE
Эта программа – творение отечественного разработчика – получила невысокую оценку от пользователей Play Market, но сказать о ней, тем не менее, стоит. В отличие от рассмотренных выше, для сборки программ CCTools IDE использует компилятор GCC, и с ее помощью можно собирать исполняемые файлы для микропроцессора (не только ARM, но также MIPS и x86!), а не для виртуальной машины Andoid. Соответственно, и языком разработки в этом случае будет не Java, а C/C++. Сборкой управляет «настоящая» утилита make. Идея собирать программы для ПК на устройстве Android выглядит забавно – мобильная платформа набрала силу и решила помериться мускулами с ПК. Если вы пишете консольную программу, результат ее выполнения можно посмотреть на встроенном терминале.
К недостаткам программы следует отнести отсутствие программистской клавиатуры (такой, как у Terminal IDE). Сама возможность иметь компилятор GCC на мобильном устройстве под управлением Android весьма привлекательна. Остается надеяться на то, что в последующих версиях CCTools IDE обзаведется собственной клавиатурой или другим средством ускорения ввода текстов программ.
SourceLair
Эта программа интересна прежде всего тем, что реализует сравнительно новую концепцию облачного сервиса. Вы пишете текст программы, отсылаете его на сервер, который пытается его собрать и запустить программу, а затем возвращает вам результат. Облачный сервер позволяет писать программы на языках, для которых отсутствуют мобильные компиляторы. Например, программа SourceLair предлагает доступ к компиляторам языков C, С++, Objective-C, Fortran и Pascal. Более того, у программы SourceLair есть сайт (sourcelair.com), на котором можно выполнять все те же операции с помощью браузера, ничего не устанавливая на свое устройство вообще. Файлы программ можно хранить локально и на сервере (для этого необходимо зарегистрироваться на сервере, за каковую процедуру на данный момент разработчики денег не берут).
Недостатки облачной сборки (речь сейчас идет о концепции в общем, но все это применимо и к конкретной программе) лежат на поверхности, как и ее достоинства. Облачные сервисы доступны только там и тогда, когда доступно само облако. Современные интегрированные среды разработки взаимодействуют с компилятором в интерактивном режиме даже на этапе ввода исходных текстов (об этапе отладки нечего и говорить). Это означает, что если у вас нет толстого канала для связи с облаком, все стандартные операции будут протекать мучительно долго.
Что касается программы SourceLair, то она попала в обзор только потому, что у нее есть клиентское приложение для Android. На данный момент это скорее демонстрация концепции и возможность «попробовать на зуб» незнакомый язык программирования. Для других целей программа вряд ли сгодится. Нельзя не отметить один досадный факт: версия клиента SourceLair Android, доступная для скачивания, изрядно устарела. Версия, рассчитанная на работу в браузере, содержит меньше ошибок и предлагает больше возможностей. Например, помимо перечисленных выше языков программирования браузерная версия предлагает нам Java, Python, Ruby, Lua, SQL, CSS и HTML. Кроме того, браузерный вариант поддерживает подсветку синтаксиса. Доступный в настоящий момент клиент Android не позволяет создавать файлы на сервере, но с его помощью можно загружать, редактировать и сохранять на сервере уже созданные (например, с помощью браузерного варианта программы) файлы. Сама технология запуска программ на сервере ограничивает возможности вывода программ строками текста. Насколько можно понять намерения разработчиков (изложенные в их блоге на том же сайте), у пользователя должна быть возможность загрузить результат сборки на свое устройство, причем, если пользователь работает на устройстве под управлением Android, результат сборки должен быть совместим с этой ОС.
DroidDevelop
Эта программа является надстройкой над другой программой – JavaIDEDroid, которая позволяет собирать программы для Android, но не очень удобна в использовании. DroidDevelop исправляет указанный недостаток JavaIDEDroid с помощью незатейливого, но достойного пользовательского интерфейса. Поскольку для своей работы программа требует JavaIDEDroid и диспетчер файлов OI FileManager, установка ее на устройство выглядит сложнее, чем, например, установка AIDE. Впрочем, программиста вряд ли можно испугать такими мелочами. В программе используется собственный редактор кода с нумерацией строк (что хорошо) и подсветкой синтаксиса, которая имеет тенденцию подчеркивать незнакомые ей имена и методы классов (что отвлекает). В новых версиях программа обзавелась модулем расширения, способным выполнять базовые операции рефакторинга.
С4Droid
Программа С4Droid, существующая в платной и базовой версиях, представляет собой компилятор C, объединенный с простым редактором кода. При работе с программой трудно отделаться от мысли, что ее назначение – демонстрация возможности создавать программы на C на устройстве Android (еще недавно такая возможность была очевидна не всем). Платная версия обладает несколько более широкой функциональностью, нежели базовая (например, подсветкой синтаксиса). В минимальной комплектации программа подходит разве что для изучения основ программирования на C, хотя устройства Android вряд ли вообще годятся для этой цели. С помощью модулей расширений программу можно научить создавать программы, связанные с библиотекой bionic (напомню, что bionic играет роль стандартной библиотеки C на платформе Android) и создавать исполняемые файлы Android, которые можно будет выполнять вне самой программы. Основная сложность в разработке программ C, предназначенных для выполнения на «железе», а не на виртуальной машине, заключается в необходимости связывать эти программы с динамическими библиотеками Android, но подключение библиотек (помимо bionic) в С4Droid не предусмотрено. Отследить вывод консольных программ можно на встроенном в C4Droid эмуляторе терминала. Программа также оснащена подсветкой синтаксиса, сомнительную полезность которой демонстрирует экранный снимок.
Заключение
Подводя итог, следует признать, что программирование для Android в среде Android вышло на серьезный уровень. Что касается эффективности и эргономики, то по этим показателям написание программ на мобильном устройстве мало чем отличается от любой другой деятельности, связанной с вводом текста. |