groovy-androidの最新状況

この記事は、モバイルDevOps Advent Calendar 2015 - Qiita の 15 日目の記事です。

書いてるうちに日がずれました。すみません><
昨日に引き続き試食しただけで終わってしまったorz



のプロジェクトを最新のandroid gradle pluginで動かすようにしてみました。

解説自体は

らへん辺り

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'
}