今天在寫代碼運行編譯時, 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表達式有關(guān)系.
經(jīng)過排查后, 發(fā)現(xiàn)是新寫的代碼之中, 一句對Runnable函數(shù)的lambda縮寫引起的:
listenableFuture.addDoneListener(() -> {
...
});
嘗試將me.tatarka:gradle-retrolambda:3.2.0, 升級至3.7.0, 仍然報錯.
于是暫時去掉lambda表達式, 將Runnable函數(shù)直接new出來以通過編譯.
PS:花點時間探究了下原因, 發(fā)現(xiàn)在繼承于DefaultMapViewOnTouchListener的類中,在任何地方(成員,構(gòu)造函數(shù),方法)出現(xiàn)lambda表達式皆會引起報錯. 而,即使在繼承DefaultMapViewOnTouchListener的父類中寫lambda亦不會報錯. 掃了幾眼DefaultMapViewOnTouchListener類,除了部分代碼有混淆外沒有什么特別的,因此具體原因我就不繼續(xù)深究了