Is there way to use Java 8 features with Android library project?

后端 未结 2 360
野性不改
野性不改 2021-02-04 12:16

I followed the Android Java 8 Features manual. It works well for Android application project. But when I try to use it with Android library project I get

Error:L         


        
2条回答
  •  日久生厌
    2021-02-04 12:43

    I had the same issue and tried different approaches. It now works for me without using retrolambda (which produced some weird error during runtime). Also Jack is not active for the same reason you already mentioned. There is an interesting bug post at google.com about this topic: https://code.google.com/p/android/issues/detail?id=211386

    Here is my build.gradle script, I used the workaround from the bug post to fix the "MethodType not found" exception during compilation.

    buildscript {
        repositories {
            mavenCentral()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.1.2'
        }
    }
    apply plugin: 'com.android.library'
    
    repositories {
        mavenCentral()
    }
    
    // Java8 not fully supported in library projects yet, https://code.google.com/p/android/issues/detail?id=211386
    // this is a temporary workaround to get at least lambdas compiling
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xbootclasspath/a:" + System.properties.get("java.home") + "/lib/rt.jar"
        }
    }
    
    android {
        compileSdkVersion 24
        buildToolsVersion "24"
    
        defaultConfig {
            minSdkVersion 10
            targetSdkVersion 24
        }
    
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    

提交回复
热议问题