我跟踪了Android 8功能手册。它适用于Android应用程序项目。但是,当我尝试将它与Android库项目一起使用时,我会得到
Error:Library projects cannot enable Jack. Jack is enabled in default config.部分解决方案:i使用Gradle Retrolambda插件启用lamdba表达式。
发布于 2016-07-13 19:55:17
我也有同样的问题,也尝试过不同的方法。现在,它对我有效,而无需使用retrolambda (它在运行时产生了一些奇怪的错误)。此外,杰克是不活跃的原因,你已经说过了。google.com上有一篇关于这个主题的有趣的bug文章:https://code.google.com/p/android/issues/detail?id=211386
下面是我的build.gradle脚本,我在编译过程中使用了bug帖子中的解决方案来修复"MethodType not“异常。
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
}
}发布于 2017-09-02 23:03:38
这的确是一段漫长的旅程。我尝试了所有可能的组合的gradle插件,实验级插件+ retrolambda + Jack等,但没有运气。直到现在。从AndroidStudio3.0Preview 1或更高版本(以及相应的Android插件3.0.0-alpha1或更高版本),Jack工具链不再受欢迎,取而代之的是一些新的字节码转换-- sugaring,与标准的javac编译器一起使用。
有了这个设置,我个人(终于!!)在库项目中成功地使用了Java 8特性(如lambda)。
此页面包含所有技术信息以及迁移帮助等:https://developer.android.com/studio/write/java8-support.html
https://stackoverflow.com/questions/37975128
复制相似问题