当前位置:   article > 正文

transformClassesWithRetrolambdaForDebug的解决方案_:app:transformclasseswithretrolambdafordebug

:app:transformclasseswithretrolambdafordebug

今日开发时候发现gradle编译不通过,报错如下:

Error:Execution failed for task ':app:transformClassesWithRetrolambdaForDebug'.
> Process 'command 'C:\Program Files\Android\Android Studio\jre\bin\java.exe'' finished with non-zero exit value 1
  • 1
  • 2

看报错内容,是lambda表达式出了问题,但是lambda一直在引用也没出错,为什么偏偏今天出了错。
查找了好多资料都没找到答案,大多博客告诉我,clean一下就ok了,但是,能clean一下就可以解决的问题还需要贴出来写博客吗?

于是我将最近修改过的类里的代码一段一段注释掉发现,出错的地方根本不在Activity里。因为最近加入了umeng推送的SDK,修改过Application,而报错的内容又跟lambda相关,在Application里先找到了一个lambda表达式,将此行注释掉,直接可以编译通过。
在我的代码里,是用lambda简写了一个Handle

handler.post(() ->
                {...}
  • 1
  • 2

难道在Application里,不支持使用lambda表达式?又或许,Application里不可以用lambda表达式简写线程?
抱着这样的疑问,我又在Application里分别加入了两段代码:

new Button(this).setOnClickListener(v -> Toast.makeText(App.this, "aaa", Toast.LENGTH_SHORT).show());
  • 1
      Handler mHandler = new Handler();
        // 调用Handler.post(Runnable r)方法
        mHandler.post(() -> Toast.makeText(App.this, "2222", Toast.LENGTH_SHORT).show());
  • 1
  • 2
  • 3

但是项目居然是可以跑起来的!
----------------------------------2018年4月16日更新-------------------------------------------
根据@boson__ 的说法:
是retrolambda 兼容性的问题
应该在app下build.gradle中加上
retrolambda { jvmArgs '-noverify' }
就可以了,测试通过,告示天下~同时感谢@boson__同学

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/306618
推荐阅读
相关标签
  

闽ICP备14008679号