transformClassesWithRetrolambdaForDebug的解决方案

版权声明:转载请注明出处。 https://blog.csdn.net/u012552275/article/details/79469324

今日开发时候发现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 兼容性的问题
应该在build.gradle中加上
retrolambda {
jvmArgs '-noverify'
}

就可以了,测试通过,告示天下~同时感谢@boson__同学

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页