有没有办法与Android库项目一起使用Java 8function?

我遵循Android Java 8function手册 。 它适用于Android应用程序项目。 但是,当我尝试使用它与Android库项目,我得到

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

部分解决scheme:我使用Gradle Retrolambda Plugin启用了lamdbaexpression式。

Solutions Collecting From Web of "有没有办法与Android库项目一起使用Java 8function?"

我有同样的问题,并尝试不同的方法。 它现在适用于我,而不使用retrolambda(在运行时产生一些奇怪的错误)。 杰克也不是因为你已经提到过的原因而活跃的。 在google.com上有一个有趣的错误信息关于这个话题: https : //code.google.com/p/android/issues/detail?id=211386

这里是我的build.gradle脚本,我使用错误post的解决方法来修复编译过程中的“MethodType not found”exception。

 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 } } 

这肯定是一个漫长的过程。 我尝试了所有可能的组合插件, 实验 gradle插件+ retrolambda + Jack等,但没有运气。 到现在。 从Android Studio 3.0 Preview 1或更高版本(以及Android Gradle插件3.0.0-alpha1或更高版本)中,不推荐使用Jack工具链,并将其replace为一些新的字节码转换 – 糖化 ,与标准的javac编译器结合使用。

有了这个设置,我个人(终于!!!)成功地在一个库项目中使用了Java 8的特性,例如lambdas。

这个网页有所有的技术信息以及迁移帮助等: https : //developer.android.com/studio/write/java8-support.html