【发布时间】:2015-06-04 19:29:51
【问题描述】:
正如我在this post 中看到的,Java 8 目前还没有得到Android 的官方支持。所以我很感兴趣是否可以使用Java 7 和Java 模块(作为依赖项)和Java 8 构建Android 模块。
例如,我正在尝试创建一个 Gradle 项目,该项目将包含一个 Android 模块和一个 Java 模块作为依赖项。
为两个模块设置了以下compileOptions,一切正常。
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
但如果我尝试将 compileOptions 的 Java 模块更改为
compileJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
我收到以下错误:
Error:Execution failed for task ':fc-android:preDexFreeDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_45\bin\java.exe'' finished with non-zero exit value 1
所以问题是,真的有可能让Android 模块用1.7 版本编译,而依赖Java 模块用1.8 编译吗?如果不是,那为什么呢?
更新:
Retrolamba for Gradle(@Saeed 提到)很好,但是它们只支持 lambda,因此无法访问 Stream API、DateTime API 和其他功能。想象一下,如果我们有使用Java 8(没有Android 代码)构建的*.jar 文件。我认为我们不能使用这种*.jar 文件作为Android 模块的依赖项,因为ART 或Dalvik 将不支持它的字节码,而Java 8 仅支持JVM。
【问题讨论】:
标签: java android gradle java-8 android-gradle-plugin