As I've seen in this post, Java 8 is not officially supported by Android right now. So I'm interested if it is possible to build Android module with Java 7 and Java module (as a dependency) with Java 8.
As an example, I'm trying to create a Gradle project that will contain one Android module and one Java module as a dependency. With the following compileOptions set for both modules, everything works fine.
compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } But if I try to change compileOptions for my Java module to
compileJava { sourceCompatibility = 1.8 targetCompatibility = 1.8 } I get the following error:
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 So the question, is that actually possible to have Android module compiled with 1.7 version and dependent Java module compiled with 1.8? And if not, so why?
UPDATE:
Retrolamba for Gradle (mentioned by @Saeed) is good, however they have only support of lambdas, so not access to Stream API, DateTime API and other features. Imagine if we have *.jar file built with Java 8 (no Android code). I think that we can't use such *.jar file as a dependency for Android module, because it's bytecode will not be supported by ART or Dalvik, but only by JVM for Java 8.