Универсальная платформа с открытым кодом Android привлекает множество разработчиков со всего мира. За огромным количеством возможностей с Андроид стоит легкость распространения, в том числе через площадку для распространения приложений. Не удивительно, что такая популярность способствовала появлению множество инструментов для Android-разработчиков. С их помощью легко начать работу, отказавшись от классических устаревших способов разработки.
Сейчас, как никогда ранее, легко окунуться в атмосферу Android-программирования, используя удобную среду разработки. Универсальность платформ позволит учавствовать в процессе независимо от локации и имеющегося под рукой устройства – кодить можно не только дома, а и в пути или загородом. Не только на компьютере, а и смартфоне или планшете.
В данной статье речь пойдет о:
Требования
Топовые устройства под управлением Android ныне сравнялись по мощностям с ноутбуками пяти-семилетней давности, а они вполне подходили для написания кода. Однако из-за некоторых особенностей современных гаджетов это сакральное действо на них достаточно сложно производить. Но сложно не всегда значит невозможно.
Среды разработки для Android существуют — и не одна.
Вопрос только в том, насколько они соответствуют гордому именованию IDE. Что необходимо для удобства кодирования, помимо компилятора и текстового редактора?
- Минимальная поддержка подсветки синтаксиса.
- Автодополнение. Тут есть три варианта. Первый вариант — сниппеты. Это сокращения, которые при нажатии определенной клавиши (или их комбинации) разворачиваются в строчку кода. Второй вариант — автодополнение на основе кеша, когда при наборе слова высвечиваются все варианты, которые имеются в кеше. Ну и наконец, третий — контекстное автодополнение, когда предлагают те варианты, которые тебе подходят.
- Множество маленьких, но полезных особенностей, к которым мы привыкли при написании кода на обычном компьютере, — таких, например, как интеграция с системой контроля версий, отображение отладочных сообщений, выбор световой темы и стиля написания кода.
Мы выбрали несколько IDE, в той или иной мере отвечающих перечисленным требованиям.
AIDE, ИЛИ ANDROID SDK В АНДРОИДЕ
Пожалуй, это наиболее известная IDE под Android. Существует как платная, так и бесплатная версия. По заявлениям разработчиков, в IDE имеются следующие особенности:
- подсветка синтаксиса и автодополнение;
- возможность создания и компиляции стандартных Android приложений
- проекты сохраняются в формате Eclipse, что дает возможность открывать их на компьютере. Верно и обратное-можно открывать эклипсовские проекты в AIDE;
- дизайнер UI с поддержкой drag and drop (с использованием платного Арр UI Designer);
- поддержка NDK под ARM;
- интеграция с Git.
Но это все, скажем так, программные заявления. Попробуем по возможности разобраться, насколько они соответствуют действительности. Установим AIDE из Play маркета. При первом запуске нас спросят, что мы хотим сделать — изучить Java, исследовать разработку приложений/игр на Android или сразу приступать к кодингу? Для простоты предположим, что мы хотим сделать последнее.
На следующем шаге у нас будет окно «Create new project…». Да-да, практически то самое, что можно видеть и на «настольных» IDE. Предлагаемые варианты:
- Android арр — разработка с использованием Android SDK;
- Mobile Game — разработка игр с использованием libGDX;
- Java Application — консольное Java-приложение;
- Native Android Арр — использование NDK;
- PhoneGap Арр — использование НТМL_5-фреймворка PhoneGap (для него требуется установить еще одну IDE, что мы делать не будем; статья не про HTML5);
- Hybrid Арр — смесь PhoneGap с Java-кодом.
Выберем первый вариант. При создании нового проекта автоматически генерируется исходник «Hello world!». Оно, быть может, и полезно для новичка, но для того, кому не нужно начинать с азов, подобная забота выглядит раздражающей. Отмечу, впрочем, что этим страдают и некоторые настольные IDE.
Взглянем на интерфейс, выглядящий (при всей наполненности IDE функциям) довольно аскетично. После создания нового проекта открываются два файла — main.xml, который содержит layout и фактически является описанием графического интерфейса, и MainActivity.java, содержащий логику Activity. Файлы открываются во вкладках.
Первая вкладка, которую мы видим после создания проекта, — main.xml, который вроде сам по себе и прост, но редактировать его вручную — занятие нудное. Но если раскошелиться на Арр UI Designer, который стоит около ста рублей, в правом верхнем углу появится специальная кнопка для его запуска и создавать GUI станет гораздо проще. Опишу его возможности. Если кратко, они почти не уступают десктопным GUI-дизайнерам — та же самая возможность разметки макетов, все стандартные виджеты, редактор свойств… Есть, разумеется, и капелька дегтя — к ней я бы отнес невозможность удобно ссылаться на строки из strings.xml и отсутствие автогенерации заглушек функций по событию onClick, — но в целом сей инструмент действительно способен серьезно облегчить жизнь разработчику.
Перейдем к редактору кода. Подсветка синтаксиса субъективно скуднее, чем в десктопных средах разработки, но на деле вполне достаточная, чтобы с удобством редактировать исходные коды. Что до автодополнения, то работает оно достаточно странно: например, в XML-файлах она подставляет имена Android-классов, притом в те места, где их по определению почти не бывает, — в значения XML-свойств.
То же касается и редактора Java. В проектах Android имена импортируемых пакетов зачастую начинаются с android. Уж казалось бы, в этой ситуации автодополнение должно себя вести корректно — но нет, AIDE подходящих совпадений не находит. А вот если ты набрал android и поставил точку — тебе тут же предложат множество вариантов, как это и полагается всякой порядочной системе автодополнения.
Аналогичным образом дела обстоят и с перегружаемыми методами суперклассов — стоит только набрать public void onC, и тебе сразу предложат подходящий выбор. И все бы ничего, но после создания заглушки вновь появится public void — в то время, как тебе нужно эту заглушку наполнять кодом.
Панель файлов вызывается по тапу на неприметном значке в правом верхнем углу; располагается она с левой стороны вертикально, но повторный тап по нему перемещает ее в горизонтальное положение снизу. Несмотря на название, это не только и не столько панель файлов; здесь же расположена панель ошибок, панель результатов поиска и панель logcat.
В настройках (вызываются тапом по «Меню -> More -> Settings») у нас находятся следующие возможности конфигурации:
- смена темы («светлая» — «темная»);
- редактор кода (шрифт, автосохранение, параметры табуляции…); стиль написания кода (размер табуляции, выравнивание параметров, новые строки…);
- сборка и запуск — тут, в частности, можно установить NDK и включить параллельную сборку (последнее кушает много памяти);
- конфигурация Dropbox, а именно автосинхронизация;
- Git (email и имя пользователя, папка к каталогу с SSH-ключами…). Тут находится один параметр, который я бы крайне рекомендовал изменить, — поставить галочку на Create Repo. Эта опция заставляет AIDE принудительно создавать репозитории для новых проектов. Особо отмечу, что для уже существующих проектов создать репозиторий невозможно;
- клавиатурные комбинации.
Раз уж мы упомянули Git, стоит рассказать о нем подробнее. Работать с ним в AIDE — одно удовольствие. Среда разработки поддерживает стандартные для Git операции — clone, commit, pull, push, checkout, однако большая часть из них доступна только в платной Premium-версии IDE. Управление репозиторием происходит из панели файлов. Если проект не открыт, можно клонировать готовый, например с GitHub’a. Но стоит помнить, что в качестве URI лучше использовать git://, — клонирование по https:// работает криво. Поле Directory name придется заполнять вручную; IDE некорректно реагирует на двойной слеш и вместо имени клонируемого репозитория ставит в данном поле «-2».
Открытие проектов Eclipse происходит безупречно. AIDE, не поперхнувшись, скушала не только простое приложение, написанное мной, но и серьезный проект, найденный на GitHub’e. Сборка простых приложений длится совсем недолго — 13-16 секунд для PureJava-проэктов, написанных без использования NDK.
В целом AIDE производит очень и очень неплохое впечатление. Конечно же, это не настольная среда разработки, но ее вполне можно использовать для кодинга сложных приложений. Да, есть некоторые недостатки, но они не настолько серьезны, чтобы мешать разработке. AIDE определенно стоит своих денег, если ты занимаешься разработкой в дороге.
TERMINAL IDE, ИЛИ МИНИ-LINUX В КАРМАНЕ
Несмотря на название, Terminal IDE сложно назвать средой разработки. Скорее, это швейцарский армейский нож, содержащий множество инструментов — от GCC и Маке до Vim и эмулятора терминала. Это своего рода минималистичная Linux-среда, которая работает на любом Android-девайсе, даже если в последнем нет прав root.
Приложение представляет собой графическую обертку для Linux-среды, которая работает в песочнице. Поэтому после первого запуска Terminal IDE необходимо нажать кнопку Install System, чтобы развернуть среду в отдельный каталог. Далее ты получишь доступ к набору Linux-приложений, среди которых есть следующие: BusyBox — полный комплект стандартных Linux-команд;
- Vim — всем известный редактор с набором плагинов: NERDtree, snipMate, javacomplete и так далее;
- javac — компилятор Java;
- aapt — генератор пакетов АРК из JAR-файлов;
- GCC/Make — компилятор языка си и система сборки больших проектов;
- dropbear — SSH-сервер и клиент;
- Git — уже упоминавшаяся система управления версиями;
- mc — тот самый клон Norton Commander.
Не будем вдаваться в подробности использования команд (здесь все как в Linux), а сосредоточимся на возможностях здешнего Vim. Для его запуска рекомендуется применять команду terminalide. Она стартует Vim со всеми необходимыми плагинами.
Рассмотрим плагин NERDtree, это своего рода панель файлов, аналогичная подобным в десктопных IDE. Перечислю список основных используемых клавиш и команд для данного плагина:
- ma имя — создание файла или каталога;
- o или Enter — открытие файла/каталога;
- i — отображение скрытых (dot) файлов;
- :NERDTreeToggle — включает или выключает эту панель. Для пущего удобства рекомендую привязать эту команду, например, к \\ путем добавления строчки вида тар \\ :NERDTreeToggle<Return> в файл -/.vimrc.
- te — разворачивается в public class FileName extends TestCase;
- t — в заголовок функции, которая может выбросить исключение;
- fore — в явовский foreach;
- if — понятно во что разворачивается.
После создания/открытия файла можно писать код — переведи Vim в insert-режим нажатием i и набивай текст. Опишу некоторые особенности Vim и плагинов с точки зрения IDE. Подсветка синтаксиса здесь примерно аналогична подобной в AIDE. А вот автодополнение работает по принципу кеша: чем больше ты напишешь, тем больше вариантов будет доступно в дальнейшем. В составе данной сборки Vim есть плагин javacomplete, но работает он ненадежно — в моем случае он не всегда реагировал на клавиатурные комбинации (<Ctrl + x>, <Ctrl + o> для дополнения ключевых слов, <Ctrl + х>, <Ctrl + u> для функций в insert-режиме). Плагин snipMate работает на ура, стоит набрать, например, fi в Java-коде и нажать клавишу табуляции, как он автоматом развернет сочетание в «final». Рассмотрю парочку сокращений для Java-файлов: main — разворачивается в стандартную точку входа настольных Java-приложе-ний;
Компилировать в Terminal IDE тоже можно (для этого есть клавиша F7), но понадобится make-файл. Перед компиляцией необходимо распаковать тулчейн (находится в system/android-gcc-4.4.0.tar.gz) в домашний каталог вручную либо с помощью команды install_gcc и использовать С-компилятор не напрямую, а через скрипт terminal-gcc, который устанавливает нужные переменные и запускает его с нужными аргументами.
Набор инструментов в составе Terminal IDE очень и очень широк (при некотором терпении можно попытаться собрать даже ядро), но это «среда» для тех, кто знает, что такое UNIX, и привык к Vim и терминалу. Если же ты ничего, кроме Eclipse и подобных ему сред «все в одном», не пробовал, Terminal IDE не для тебя.
QPYTHON
Для Android есть и своя версия Python, да еще и с возможностью создания графических приложений. Называется это чудо QPython и имеет в Play маркете аж три реинкарнации: QPython 3 (бета-версия), QPython и QPython Player, заточенный под выполнение скриптов.
Нам нужен просто QPython; он позволяет как писать, так и запускать скрипты, но в отличие от третьей версии более стабилен (версия Python — 2.7.2). После установки и запуска появится окно с единственной круглой кнопкой, при нажатии на которую выскочит меню с тремя пунктами (кнопка эта, на мой взгляд, совершенно излишня). Перечислю их:
- Get script from QRCode — получает скрипт по ссылке, закодированной в QR-коде;
- Run local script… — позволяет выбрать и запустить скрипт;
- Run local project… — аналог предыдущего пункта с той разницей, что в качестве корневого каталога в окне выбора файла будет открыт Projects, а не Scripts.
При листании, однако, появляется еще один экран — тот самый, который, по идее, и стоило бы размещать первым:
- Console — питоновская консоль;
- Editor — редактор кода;
- My QPython — обзор скриптов и проектов;
- System — возможность устанавливать дополнительные библиотеки и компоненты, такие, например, как Docutils; Package Index — для QPython существует репозиторий QPyPi, для обзора которого и предназначен этот значок.
- QPython поддерживает следующие возможности: работу с изображениями (PIL);
- доступ к Java-классам (Pyjnius);
- разработку графических приложений с помощью Kivy; разработку простых игр (библиотека pygame).
Перейдем к редактору кода. И вот тут, к сожалению, QPython с его QEdit не на уровне — он может похвастаться разве что подсветкой кода, которая к тому же включается только после сохранения файла. Автодополнения и в помине нет — даже на основе кеша. Пожалуй, единственное удобство — поддержка трех шаблонов (Web App, GUI App и Console App), которые по неизвестной причине разработчики прозвали сниппетами. Их можно добавлять в каталог snippets. Поддерживается несколько тем: классическая, темная и «Матрица» — зеленый текст на черном фоне. Подсветка кода выглядит с последней темой гораздо удобнее. Для отступов есть две кнопки в левом нижнем углу. Отладка только по классической для Android-приложений схеме — запись в лог или (для консольных приложений) вывод на экран.
Как фреймворк QPython выше всяких похвал — он поддерживает почти все возможности «обычного» питона. Но вот как IDE… его функциональности, конечно, хватает, чтобы писать маленькие скрипты, однако для чего-то более крупного он не годится.
RUBOTO
Помимо Python, для Android есть и интерпретатор Ruby, именуемый Ruboto. Для создания приложений на нем лучше, конечно, использовать десктоп, но, если есть желание попробовать это на самом устройстве, можно установить среду разработки Ruboto IRB, предварительно поставив фреймворк Ruboto Core.
Де-факто данный фреймворк представляет собой JRuby 1.7.12с библиотекой stdlib, поэтому с его помощью можно писать и запускать те же самые приложения, что и с помощью обычного JRuby (правда, с поправкой на внутренние особенности Android, такие как различная внутренняя структура файлов классов).
Возможности фреймворка как своего рода бэкенда достаточно широки — здесь и вибрация, и камера, и даже OpenGL. Однако в смысле графического интерфейса приложения, написанные с использованием Ruboto, весьма скудны и примитивны, поэтому он годится лишь для написания скриптов-однодневок под собственные нужды.
Если же говорить о возможностях редактора кода, то он примитивен до невозможности — здесь нет не то что автодополнения, но даже подсветки синтаксиса. Пожалуй, единственной его особенностью можно назвать возможность переключения в полноэкранный режим без вкладок — для этого нужно выбрать пункт меню Toggle usable screen.
В целом Ruboto производит странное впечатление и как фреймворк, и как среда разработки. В первом случае возникает недоумение — фактически все, что можно написать под ОС от Google с его использованием, можно написать и без него, причем зачастую с меньшими затратами. К тому же не стоит забывать, что это не ЛТ-компилятор, вследствие чего серьезные проекты (если, конечно, кому-то придет в голову их запускать) будут тормозить. Да, демка OpenGL работает без тормозов, но у меня есть некие сомнения, что ее можно считать серьезным проектом.
Средой разработки Ruboto язык не поворачивается назвать — в редакторе кода отсутствует даже возможность поиска по тексту! Пожалуй, Ruboto стоит использовать лишь в том случае, если под рукой нет ни компьютера, ни ноутбука, a Ruby позарез необходим, например для запуска кода нерадивой студентки.
ЗАКЛЮЧЕНИЕ
Хост-таргет разработка под Android возможна — причем зачастую с достаточно приемлемым уровнем комфорта. В статье были рассмотрены несколько средств, которые можно считать IDE (правда, некоторые подпадают под это понятие с очень большой натяжкой). Пожалуй, самой мощной IDE для разработки на Android можно назвать связку Арр Ul Designer + AIDE. За нее придется выложить около 500 рублей, однако если ты серьезно занимаешься (или планируешь заняться) разработкой, оно того стоит. Здесь есть все — и автодополнение, и удобный дизайн UI, и возможность разработки NDK-приложений.
Terminal IDE, несмотря на плагин JavaComplete и средства создания АРК-пакетов, заточен под консольные приложения — и в этой области ему нет равных. QPython будет интересен питонистам. Как IDE он уступает двум вышеупомянутым приложениям, но, если привыкнуть, можно использовать и его редактор. Ruboto же можно назвать Proof of Concept — и этим все будет сказано. Едва ли имеет смысл использовать его без крайней нужды. Многообразие IDE, как можно видеть, достаточно большое, так что выбор за тобой.