android-studio - 如何在android module中使用Java 8的新特性,比如Lambda?
高洛峰
高洛峰 2017-04-18 09:14:46
0
1
746

一个很蛋疼的问题。
是这样的:
在项目中使用了Java8Jack编译器来使用一些Java 8的新特性,比如Lambda,用着的确很爽。
配置如下:
appbuild.gradle文件中加入如下配置:

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

相安无事了很久,直到今天,打算将项目中一些可以复用的代码整理成module,然后在app中引用。问题来了,首先是Jack是不能在modlueenable的。如果将下面代码写在modluebuild.gradle中:

    jackOptions {
        enabled true
    }

就会报如下错误:

Error:Library projects cannot enable Jack. Jack is enabled in default config.

所以删掉了这句话,然后留下这句话:

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

然后Android Studio就会提示我module中有些seOnClickListener之类的代码可以替换成Lambda,满心欢喜,以为搞定了。然而Make Project却出现如下错误:

Error:Execution failed for task ':customviews:compileReleaseJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

只要我把moduleLambda表达式改成普通写法,就不会报这个错。我也不知道哪里出问题了,悲催。

希望大神帮我解决下!

PS:不要说用第三方插件实现Lambda,感觉为了一个Lambda引一个库,得不偿失。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

Antworte allen(1)
迷茫

加上这句
gradle.projectsEvaluated {

tasks.withType(JavaCompile) {
    options.compilerArgs << "-Xbootclasspath/a:" + System.properties.get("java.home") + "/lib/rt.jar"
}

}

http://stackoverflow.com/ques...

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!