Android项目(gradle)有主应用程序模块: app- Android应用程序(应用插件: 'com.android.application') 和java模块: network- (应用插件: 'java')
Java模块network默认具有1.8的源代码兼容性,因为我真的想要它,因为它支持lambda表达式。
但是Android应用程序默认为1.7,我无法构建该应用程序。 当然,我在我的app - Android模块中使用了retrolambda,但由于以下原因,项目无法编译:
Error:com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version (0034.0000)
Error:Execution failed for task ':app:transformClassesWithDexForDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java'' finished with non-zero exit value 1
如果我创建我的Java模块,那么所有东西都能够很好地编译:
apply plugin: 'java'
sourceCompatibility = 1.7
targetCompatibility = 1.7
但在这种情况下,我无法使用lambda表达式,但我需要它。
我只能想到以下解决方案:
将network模块从java转为android模块,并使用retrolambda (但我将从此模块制作.jar而不是.aar,因此它必须是java)
不要在我的java模块(.jar在未来)中使用lambda表达式 (但由于rxJava中太多愚蠢的代码没有lambda,我想使用它)
对我而言最好的解决方案是在我的java模块中使用类似于retrolambda的东西。我尝试做了类似的事情,但是retroambda依赖项(apply plugin: 'me.tatarka.retrolambda')在编译过程中出现错误。 或者可能使用类似于retrolambda的东西的java 1.7。 但gradle文件没有
如何做到这一点?