1

刚开始在一个新项目中使用 lambda,当应用程序崩溃并出现以下堆栈跟踪时,该问题一直存在:

I/art: Rejecting re-init on previously-failed class java.lang.Class<com.test.-$Lambda$3>
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.test, PID: 18852
    java.lang.NoClassDefFoundError: com.test.-$Lambda$3
    ... method which calls lambda ...

有趣的是它有时会起作用,但我仍然不知道是什么让它起作用,什么东西坏了。

jackOptions并且1.8 compatibility都在 build.gradle 中启用。compileSdkVersion是 25。设备运行的是 Android 5.0。生成的 apk 已com.test.-$Lambda$3定义此类。

除了完全启用 lambda 之外,还有什么需要做的吗?如何调试此问题以找出真正的根本原因?

更新 1:

这听起来很奇怪,但看起来编译器与 lambda 调用混淆了。假设生成的 APK 已经定义$Lambda$1:Runnable并且$Lambda$2:Consumer我看到了特定的方法调用$Lambda$1,而它必须是$Lambda$2.

4

0 回答 0