TIL

Today I Learned

View the Project on GitHub ragubyun/TIL

안드로이드에서 자바8 기능 사용하기 위한 세팅(람다)

apply plugin: 'me.tatarka.retrolambda' // Retrolambda 플러그인 사용

buildscript {
    dependencies {
        ...
        classpath 'me.tatarka:gradle-retrolambda:3.6.0'
    }
}
android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

참고 안드로이드에서 자바8 기능을 사용하려면 Jack이라는 컴파일러가 필요하다.

추가1 retrolambda를 사용하면 jack 툴체인을 쓰지 않고 컴파일이 가능하기 때문에 jackOptions을 활성화 시키지 않아도 된다.

추가2 retrolambda를 사용하지않고 jack 툴체인을 써서 Java8의 람다식을 사용할 수도 있으나, 테스트 코드를 짜는데 문제가 있어서 아직까지는 retrolambda를 써야 할 듯. (robolectric에서 오류 뱉음)

java, jack 툴체인 비교