酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

AndroidアプリをJava 8に対応した

あとで書き足すかもしれない。メモ代わり。

projectの方のbuild.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
        classpath 'me.tatarka:gradle-retrolambda:2.5.0'
    }
}

appの方のbuild.gradle

apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda'

android {
    compileSdkVersion 24
    buildToolsVersion "24"

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    ...
}

ダメだった履歴

見なくて良いトライ&エラーの順番

build.gradleにJavaVersion.VERSION_1_8を使うよと指定してみた。

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

エラーが出る。

Error:A problem occurred configuring project ':app'. > Jack is required to support java 8 language features. Either enable Jack or remove sourceCompatibility JavaVersion.VERSION_1_8.

jackが必要。

developer.android.com

build.gradle の設定に追加

android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

めっちゃエラーでた。

Error:A problem occurred configuring project ':app'.
> Could not get unknown property 'classpath' for task ':app:transformJackWithJackForMYAPPLICATIONDebug' of type com.android.build.gradle.internal.pipeline.TransformTask.

jackOptionsはなかったことにして、retrolambdaを導入した。