android-studio - 如何在android module中使用Java 8的新特性,比如Lambda?
問題描述
一個很蛋疼的問題。是這樣的:在項目中使用了Java8和Jack編譯器來使用一些Java 8的新特性,比如Lambda,用著的確很爽。配置如下:在app的build.gradle文件中加入如下配置:
jackOptions {enabled true }
compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8 }
相安無事了很久,直到今天,打算將項目中一些可以復用的代碼整理成module,然后在app中引用。問題來了,首先是Jack是不能在modlue中enable的。如果將下面代碼寫在modlue的build.gradle中:
jackOptions {enabled true }
就會報如下錯誤:
Error:Library projects cannot enable Jack. Jack is enabled in default config.
所以刪掉了這句話,然后留下這句話:
compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility 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.
只要我把module中Lambda表達式改成普通寫法,就不會報這個錯。我也不知道哪里出問題了,悲催。
希望大神幫我解決下!
PS:不要說用第三方插件實現Lambda,感覺為了一個Lambda引一個庫,得不償失。
問題解答
回答1:加上這句gradle.projectsEvaluated {
tasks.withType(JavaCompile) { options.compilerArgs << '-Xbootclasspath/a:' + System.properties.get('java.home') + '/lib/rt.jar'}
}
http://stackoverflow.com/ques...
