groovy-androidの最新状況
この記事は、モバイルDevOps Advent Calendar 2015 - Qiita の 15 日目の記事です。
- 昨日は ainame - Qiita さんの スマホアプリの開発速度を加速する?ビルド・開発を高速化するために検討したい基本事項 - Qiita のお話です
- 明日は mironal - Qiitaさんの 弊社のアプリ開発で使っているツール群を一挙公開 - Qiita のお話です
書いてるうちに日がずれました。すみません><
昨日に引き続き試食しただけで終わってしまったorz
のプロジェクトを最新のandroid gradle pluginで動かすようにしてみました。
解説自体は
- Cédric Champeau's blog: Groovy on Android, technical details
- GitHub - groovy/groovy-android-gradle-plugin: A Gradle plugin to support the Groovy language for building Android apps
らへん辺り
gr8confagendaのソースは
- 拡張子がgroovy
- とりあえず @CompileStatic をつけてコンパイル通してみたよ
ちょっとgroovyらしさがなくて残念。
- ソース構成は典型的なフォルダ形式
gr8confagenda/ src/ main/ groovy res Androidmanifest.xml
と配置はできているから
javaフォルダとまぜこぜがコンパイルが出来るか
後で調べてみたい感じ。
sourceSet構成がいじれるのかな−
で、このプロジェクトを最新の
> android-gradle-plugin:2.0.X
でとりあえずビルドできるかまで確認してみた
> gradlew assemble
gr8confagendaの修正したbuild.gradleは下記なイメージ
( Plugin not working against android plugin 1.4.x-beta · Issue #61 · groovy/groovy-android-gradle-plugin · GitHub でjitpack.io にパッチ版を出してくれている方のバージョンを利用
- gradle/wrapper/gradle-wrapper.properties
#Sun Jun 08 10:48:23 CEST 2014 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists #distributionUrl=http\://services.gradle.org/distributions/gradle-2.3-all.zip distributionUrl=http\://services.gradle.org/distributions/gradle-2.9-all.zip
- gr8confagenda/build.gradle
buildscript { repositories { maven { url "https://jitpack.io" } jcenter() } dependencies { classpath 'com.android.tools.build:gradle:+' //classpath 'org.codehaus.groovy:gradle-groovy-android-plugin:+' classpath 'com.github.groovy:groovy-android-gradle-plugin:1b77dd6763' } } apply plugin: 'com.android.application' apply plugin: 'groovyx.grooid.groovy-android' android { compileSdkVersion 22 buildToolsVersion "23.0.2" defaultConfig { minSdkVersion 4 targetSdkVersion 22 versionCode 5 versionName "1.3.1" } signingConfigs { release { storeFile file(System.getenv("KEYSTORE")?:debug.storeFile) storePassword System.getenv("KEYSTORE_PASSWORD")?:'foo' keyAlias System.getenv("KEY_ALIAS")?:'foo' keyPassword System.getenv("KEY_PASSWORD")?:'foo' } } buildTypes { debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' signingConfig signingConfigs.release } } packagingOptions { // workaround for http://stackoverflow.com/questions/20673625/android-gradle-plugin-0-7-0-duplicate-files-during-packaging-of-apk exclude 'META-INF/LICENSE.txt' exclude 'META-INF/groovy-release-info.properties' } } dependencies { compile 'com.android.support:support-v4:22.0.0' compile 'org.codehaus.groovy:groovy:2.4.3:grooid' compile ('org.codehaus.groovy:groovy-json:2.4.3') { transitive = false } compile 'com.koushikdutta.urlimageviewhelper:urlimageviewhelper:1.0.4' }