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

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

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

handler.post(() ->
                {...}

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值