Несколько дней назад был выпущен Groovy 2.4 . Одна из главных новостей заключается в том, что Groovy официально поддерживает разработку приложений для Android. Чтобы увидеть, как это работает, я использовал Groovy для создания небольшого примера приложения для Android. В этой статье я покажу, какие шаги необходимы для создания приложения Android с помощью Groovy, и как Groovy может упростить разработку приложений для Android.
На следующем экране показан пример приложения, написанного на Groovy. Вы можете найти полный исходный код на GitHub .
Запуск Groovy на Android
Для начала нам понадобится Android Studio, которая уже содержит последнюю версию Android SDK. За последний год стандартная среда Android изменилась с Eclipse и Ant на Android Studio (построена на IntelliJ) и Gradle.
Для запуска Groovy на Android нам понадобится плагин Gradle, поэтому убедитесь, что вы не используете старые инструменты разработки на основе Eclipse / Ant.
Мы создаем новый проект Android в Android Studio и добавляем следующие строки в наши файлы сборки:
Файл сборки верхнего уровня ( <project> /build.gradle ):
1
2
3
4
5
6
7
|
buildscript { .. dependencies { .. classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:0.3.5' } } |
Файл сборки приложения ( <project> /app/build.gradle ):
1
2
3
4
5
6
7
8
9
|
apply plugin: 'com.android.application' // apply Groovy Android plugin after the standard Android plugin apply plugin: 'groovyx.grooid.groovy-android' dependencies { .. compile 'org.codehaus.groovy:groovy:2.4.0:grooid' } |
Исходный код и документацию к плагину Groovy для Android Gradle можно найти на GitHub .
Это все, что нам нужно, теперь мы можем перейти прямо к Groovy-коду.
Обратите внимание, что файлы кода Groovy должны быть помещены в src / main / groovy вместо src / main / java. Добавление файлов Groovy в src / main / java не будет работать!
Разработка приложений для Android в Groovy работает точно так же, как и в Java. Благодаря функциональной совместимости Groovy с Java вы можете использовать и расширять классы Android, как в Java.
Улучшение Groovy в Android Studio
Android Studio уже содержит плагин Groovy. Таким образом, вы получаете поддержку синтаксиса Groovy из коробки.
Однако вы можете пропустить опцию создания новых классов Groovy из контекстного меню. К счастью, это можно легко настроить в Android Studio. Вам просто нужно создать новый шаблон файла ( Настройки> Шаблоны файлов и кода ) и добавить следующий код шаблона:
1
2
3
|
# if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "" ) package ${PACKAGE_NAME};#end class ${NAME} { } |
Теперь вы можете быстро создавать новые классы Groovy с помощью контекстного меню:
Вы также можете заглянуть в этот плагин, который устраняет проблему, при которой вы не получаете автоматического завершения при переопределении методов суперкласса в Groovy. Спасибо @ arasthel92, который рассказал мне об этом плагине.
Запуск Groovy приложений
Запуск приложений Groovy идентичен запуску приложений Java. Мы можем просто нажать кнопку запуска (или отладки ) в Android Studio и развернуть приложение на подключенном (или эмулируемом) устройстве.
Круто то, что Groovy отладчик работает из коробки. Мы можем отлаживать запущенные приложения Groovy из Android Studio.
Великие части
Крутая вещь в Groovy — это то, что он сокращает количество строк кода, которые вам нужно много писать. Его динамическая природа также позволяет избавиться от всех приведений типов, которые обычно требуются при работе с Android.
Один из примеров этого можно найти в ToDoListActivity.onResume () . В этом методе данные Android ListAdapter модифицируются. С Java это будет выглядеть так:
1
2
3
4
5
|
ArrayAdapter<ToDo> adapter = (ArrayAdapter<ToDo>) getListAdapter(); ToDoApplication application = (ToDoApplication) getApplication() adapter.clear() adapter.addAll(application.getToDos()); adapter.notifyDataSetChanged() |
С Groovy мы можем просто переписать это так:
1
2
3
|
listAdapter.clear() listAdapter.addAll(application.toDos) listAdapter.notifyDataSetChanged() |
Закрытия Groovy — еще одна особенность, которая очень удобна при работе с Android.
Чтобы добавить слушателя щелчка к кнопке, вы пишете что-то вроде этого на Java
1
2
3
4
5
6
7
|
Button button = (Button) findViewById(R.id.newTodoButton); button.setOnClickListener( new View.OnClickListener() { @Override void onClick(View v) { ... } }); |
С Groovy это просто
1
2
3
4
|
def button = findViewById(R.id.newTodoButton) button.onClickListener = { ... } |
Посмотрите CreateNewTodoActivity для полного примера.
Знать об ошибках во время выполнения
Динамические языки обычно имеют тенденцию увеличивать количество ошибок, которые вы обнаружите во время выполнения. В зависимости от приложения, которое вы создаете, это может быть серьезной проблемой. Более крупные приложения могут иметь значительное время развертывания (приложение должно быть упаковано, скопировано через USB на устройство, установлено и запущено на устройстве).
Для решения этой проблемы можно использовать аннотацию Groovy @CompileStatic. Он может быть использован для статической компиляции частей кода Groovy для уменьшения ошибок времени выполнения:
1
2
3
4
|
@CompileStatic class ToDoListActivity extends ListActivity { .. } |
Недостатком @CompileStatic является то, что вы (очевидно) больше не можете использовать динамические функции Groovy.
Краткое резюме
Запустить Groovy на Android очень легко. Благодаря совместимости Groovy с Java также очень легко смешивать Groovy и Java в одном приложении. Интеграция Groovy в Android Studio на самом деле лучше, чем я ожидал (однако некоторые ручные настройки все еще необходимы).
Ссылка: | Создание Android-приложений с помощью Groovy 2.4 от нашего партнера по JCG Майкла Шаргага в блоге mscharhag, Programming and Stuff . |