Статьи

Создание приложений для Android с помощью Groovy 2.4

Несколько дней назад был выпущен Groovy 2.4 . Одна из главных новостей заключается в том, что Groovy официально поддерживает разработку приложений для Android. Чтобы увидеть, как это работает, я использовал Groovy для создания небольшого примера приложения для Android. В этой статье я покажу, какие шаги необходимы для создания приложения Android с помощью Groovy, и как Groovy может упростить разработку приложений для Android.

На следующем экране показан пример приложения, написанного на Groovy. Вы можете найти полный исходный код на GitHub .

заводной-андроид-app_s

Запуск 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 на самом деле лучше, чем я ожидал (однако некоторые ручные настройки все еще необходимы).