Настройка среды разработки на Scala (и Java) под Android

20 апреля 2015

Мне давно было интересно попробовать пописать под Android. Достоверно известно, что Scala без труда справляется с этой задачей, но вот что именно как настраивать было не очень понятно. А тут недавно добрыми людьми был опубликован шаблон готового Android-приложения на Scala. Все сделано за нас, остается только разобраться с настройкой среды разработки, и можно писать для мобилок! Вот о том, как эту среду разработки настроить, я и поведаю далее.

Все написанное ниже я делал под Ubuntu Linux 14.04 LTS, но, вероятно, будет также во многом справедливо и для других систем. Кроме того, насколько я понимаю, если вы пишите на Java, настройка будет выглядеть практически точно так же, за тем исключением, что вместо SBT вы будете использовать Gradle.

В первую очередь нам понадобится IntelliJ IDEA с установленным плагином для Scala. Это совершенно тривиальный шаг, поэтому не буду останавливаться на нем подробно. Ровно как и на установке самого компилятора Scala, SBT, всяких там Git и других утилит, наличие которых я считаю само собой разумеющимся. При написании этой заметки я использовал IntelliJ IDEA 14.1.1 Community Edition. Если у вас другая версия, то интерфейс (имена пунктов меню, и прочее) может немного отличаться.

Далее идем по ссылке и скачиваем Android SDK. IDE у нас уже есть, поэтому выбираем версию без Android Studio. Последний, на само деле, представляет собой ту же IntelliJ IDEA, заточенную исключительно для разработки под Android.

Распаковываем архив, в ~/.bashrc прописываем что-то вроде:

export ANDROID_HOME=/home/eax/android_sdk/

Таким образом переменную окружения подхватит SBT, но не IntelliJ IDEA. Разбираться было лень, поэтому я просто прописал ту же переменную в файле ~/intellij-idea14/bin/idea.sh.

Согласно инструкции, которая отображается в браузере после начала загрузки Android SDK, в 64-х битной Убунте требуется дополнительно руками установить пару пакетов. Придется повиноваться:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libncurses5:i386 libstdc++6:i386 zlib1g:i386

После установки Android SDK на самом деле у вас еще не установлен Android SDK :) Говорим:

~/android_sdk/tools/android

Теперь самое сложное — нужно правильно поставить галочки:

Установка Android SDK под Ubuntu

Ставьте галочки прямо как на картинке! Иначе потом в неожиданных местах будут возникать очень странные ошибки, и придется долго выяснять, что на самом деле вы выбрали немного не ту версию Android API, ставить правильную, потом выяснить, что IDEA как-то криво импортирует SDK при использовании нескольких API, чистить проект, сносить лишний API, ужас в общем.

Если теперь склонировать репозиторий с шаблоном проекта:

git clone https://github.com/emstlk/android-scala-example

… перейти в него и сказать:

./sbt android:packageDebug
# (еще есть android:packageRelease)

… то, при условии, что все было сделано правильно, мы получим собранный apk. Теперь вопрос, а где его запускать-то?

Никаких проблем, идем по еще одной ссылке и качаем эмулятор Genymotion. Терпеливо проходим регистрацию и прочие издевательства. Это правда очень крутой эмулятор Android-устройств! Устанавливаем:

chmod u+x ./genymotion-2.4.0_x64.bin
./genymotion-2.4.0_x64.bin

Насколько я понимаю, ему для работы нужен Virtual Box. Лично у меня он уже был установлен. Запускаем:

./genymotion/genymotion

Логинимся (хэх…), скачиваем-устанавливаем образ устройства. Я лично выбрал Nexus 7. Драг-н-дропаем файл ./target/android-bin/com-myapp-debug.apk из каталога с проектом в эмулятор и видим запущенный «Hello World».

Теперь импортируем проект в IDEA. При импорте меняем Java SDK, вместо него создаем Android SDK и используем его. Важно! После импорта проекта в дереве файлов помечаем каталог ./src/main, как обычный, а ./src/main/scala — как каталог с исходниками. То есть, из этих двух каталогов синеньким должен быть только последний. У меня после импорта синенькими были оба, что приводило к странной ошибке «MainActivity is already defined as class MainActivity» при компиляции.

Если сейчас попытаться собрать проект в IDEA, ничего не получится. В дереве с файлами жмем ПКМ по MainActivity, в меню выбираем «Create ‘MainActivity’…» с зеленой иконкой Android’а рядом. В появившимся окне в секции Target Device меняем галочку на Show chooser dialog. В секции Before launch удаляем шаг Make и добавляем новый с типом Run External Tool. Создаем новый тул, в Program пишем «./sbt», в Parameters — «android:packageDebug». При сборке проекта должен появляться диалог, который предлагает запустить приложение в Genymotion (виртуалка c Android-устройством уже должна быть запущена). Для удобства можно поставить галочку Use same device for future launches, тогда приложение будет стартовать сразу в эмуляторе.

Поздравляю, теперь у вас есть среда разработки под Android!

Метки: , , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.