Android 项目(gradle)有主要的应用程序模块: app - android 应用程序(应用插件:'com.android.application')和 java-module: 网络-(应用插件:'java')
java 模块网络默认具有源代码兼容性 1.8,我真的很想拥有它,因为 lambda 表达式。
但 Android 应用程序默认为 1.7,我无法构建该应用程序。当然,我在我的应用程序中使用了 retrolambda - android 模块,但项目无法编译,因为:
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 表达式,但我需要它。
我只看到下一个解决方案:
制作网络模块不是java,而是android-module并使用retrolambda(但我要从这个模块制作.jar而不是.aar,所以它必须是java)
不要在我的 java 模块中使用 lambda 表达式(将来是 .jar)(但我想使用它,因为在没有 lambda 的 rxJava 中太匹配愚蠢的代码)
对我来说最好的解决方案是我的 java 模块中的 retrolambda。我尝试做类似的事情,但是在编译过程中,retroambda 依赖项(应用插件:'me.tatarka.retrolambda')没有受到影响。或者也许使用带有retrolambda之类的java 1.7。但是 gradle 文件没有部分android {...}来设置 compileOptions。
这该怎么做?