본문 바로가기

dev/android

Android Studio에서 Retrolamda 로 빌드하기

반응형

retrolambda는 이름에서 유추할 수 있듯이(?) JAVA8에 포함되어 있는 람다Lambda식을

JDK6, 7에서도 사용할 수 있도록 해주는 gradle plugin이다.


gradle도 maven repository를 통해서 의존성 관리를 해준다.

따라서 retrolambda를 사용하기 위해서는

해당 프로젝.. project나 module build.gradle 파일에서 jar 파일과 설정 몇 가지만 추가해주면 사용할 수 있다.


다만 android sdk가 JDK7까지만 지원하는 관계로

android studio 역시 JDK7에 해당되는 내용까지만 체크를 해준다.

요컨대 형식 오류때문에 빌드는 할 수 없는 상황이 생기기 때문에 몇 가지 내용만 추가해주면 된다.


https://github.com/orfjackal/retrolambda

retrolambda 공식 github 주소


https://github.com/evant/gradle-retrolambda

이건 android studio용 gradle 설정...


백문이 불여일견이라고... 삽질은 해보면 늘어나느가 보다 -_-;

gradle이 groovy로 되어 있다는데; 본격 언어를 빌드 하기 위해 언어를 사용하기



build.gradle 이 보인다...


build.gradle 파일을 수정하기 위해서는 Project 탭에서 상단 combo 박스에서 선택된 값을 기본 Android에서 Project로 바꿔서 접근하는게 편하다.


build.gradle 내용은 프로젝트에 따라 다르겠지만 기본값은 대동소이하다...


build.gradle 예제

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

    defaultConfig {
        applicationId "com.urcompany.project"
        minSdkVersion 19
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.2'
}

이 내용을 다음과 같이 바꿔주자.

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

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.urcompany.project
        minSdkVersion 15
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

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

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
}


buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.0.1'
    }
}


엄밀하게 이야기하면,

의존성 관리를 위해

apply plugin: 'me.tatarka.retrolambda'
buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.0.1'
    }
}
두 부분을 추가하고,
IDE에서 오류를 제거하기 위해서 
 compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

를 추가하면 된다.