正如我在
this post中看到的那样,Java 8现在还没有得到Android的正式支持.所以我很感兴趣是否可以使用Java 8构建带有Java 7和Java模块(作为依赖项)的Android模块.
作为一个例子,我正在尝试创建一个Gradle项目,该项目将包含一个Android模块和一个Java模块作为依赖项.
通过为两个模块设置以下compileOptions,一切正常.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
但是,如果我尝试将我的Java模块的compileOptions更改为
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
那么问题是,实际上可能有用1.7版本编译的Android模块和用1.8编译的依赖Java模块吗?如果没有,为什么呢?
更新:
Retrolamba for Gradle(由@SAEed提到)很好,但是他们只支持lambda,所以不能访问Stream API,DateTime API和其他功能.想象一下,如果我们有使用Java 8构建的* .jar文件(没有Android代码).我认为我们不能使用这样的* .jar文件作为Android模块的依赖项,因为它的字节码不会被ART或Dalvik支持,而只能由JVM for Java 8支持.