今天在写代码运行编译时, android studio突然报了以下错误, clean project, clean 后Referesh all Gradle projects,皆无效
Error:Execution failed for task ':app:compileRetrolambdaDebug'.
> Process 'command 'D:\Program Files\Android\Android Studio\jre\bin\java.exe'' finished with non-zero exit value 1
既然是'compileRetrolambdaDebug' 说明该错误或许和新增lambda表达式有关系.
经过排查后, 发现是新写的代码之中, 一句对Runnable函数的lambda缩写引起的:
listenableFuture.addDoneListener(() -> {
...
});
尝试将me.tatarka:gradle-retrolambda:3.2.0, 升级至3.7.0, 仍然报错.
于是暂时去掉lambda表达式, 将Runnable函数直接new出来以通过编译.
PS:花点时间探究了下原因, 发现在继承于DefaultMapViewOnTouchListener的类中,在任何地方(成员,构造函数,方法)出现lambda表达式皆会引起报错. 而,即使在继承DefaultMapViewOnTouchListener的父类中写lambda亦不会报错. 扫了几眼DefaultMapViewOnTouchListener类,除了部分代码有混淆外没有什么特别的,因此具体原因我就不继续深究了