Android

Groovy on Androidで簡単なアプリを作ってみる

More than 3 years have passed since last update.

Groovy 2.4でAndroidのサポートが始まったので、練習がてら卓球ハウスの在宅APIを閲覧できるアプリを作りました。

ソースコードはGitHubに公開しています。

https://github.com/hotchemi/tqkey-groovy


Groovyで書いてみてどうか


Jsonの扱いが楽

基本的にGroovyで書けるのは便利で、例えばAndroidでjsonをパースする時はJavaだとJsonObjectを使って手動パースしたり、あるいはGsonとかJacksonを使う事が多いと思いますが、GroovyはJsonの読み書きをネイティブサポートしているので、例えばこんな感じで柔軟に処理する事ができます。ただ、JsonSlurper#parseTextのreturnはObject型なのでIDEの恩恵が受けられなくなるのがちょっと不便でした。

package tqkey.android.events

import groovy.json.JsonSlurper
import tqkey.android.entity.User

class SuccessCallApiEvent {

List<User> users

SuccessCallApiEvent(String content) {
users = new ArrayList<User>()
new JsonSlurper().parseText(content).users.each {
users.add(new User(it))
}
}

}


Injection系のライブラリが使えない

ButterKnifeとかアノテーションプロセッサを利用できないのが結構不便です。只、JavaとGroovyを混在させる事ができるので必要に応じて使い分けるのが良いのかもしれません。試していませんが。

後、変数やメソッドのシグニチャで型宣言をしないと色々IDEの恩恵が受けられなかったり、publicを省略したりする(defaultでpublic)事もできるのですが、万が一拡張子を変更する時に修正する所が増えるので、そこら辺も考えて必要に応じてGroovyのシンタックスで書く、というスタイルが良いのではないかと思いました。


gradle-groovy-android-plugin

GroovyでAndroidを利用する為にはbuild.gradleにゴニョゴニョおまじないを書く必要がありますが、既にgradle-groovy-android-pluginという便利プラグインが公開されているので、こちらを利用するのがいいと思います。

build.gradleにこんな感じで追記します。oss.jfrog.orgにGroovy 2.4.0-SNAPSHOTがホストされているのでそっちを使うとローカルでビルドしなくて良くて便利です。

buildscript {

repositories {
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.11.+'
classpath 'me.champeau.gradle:gradle-groovy-android-plugin:0.1'
}
}

allprojects {
repositories {
mavenCentral()
maven {
url='https://oss.jfrog.org/oss-snapshot-local/'
}
}
}

apply plugin: 'groovy-android'

Android Studioを0.6.0にアップデートするとandroid plugin 0.11+が必須になってver:0.1が利用できなくなったのですが、先程対応済の0.0.2が公開されたようです。