android - 具有 kotlin 库依赖性的 Flutter 应用程序中的 NoClassDefFoundError

标签 android kotlin flutter

在我的 flutter 应用程序中,我有一个 kotlin 库依赖项。在 android 文件夹的主要 Activity 中,我正在调用库的函数之一,其中有一个 lambda。

例如:a.b.c.Util.someFunction$1

我正在从 MainActivity 调用“someFunction”,但它崩溃了,因为它说它找不到“$1”类。我知道 kotlin 为每个 lambda 创建了一个类并将其命名为这样(带有 $ 符号)。

有趣的是,该应用程序在我的 android 7 设备上运行,但它在 android 4 和 5 设备上崩溃。

我最好的猜测是我正在为 kotlin 编译器使用版本 8 的源代码兼容性,它生成 java 8 兼容的字节码,因此较低的设备不支持它,但即使将它降级到版本 6 也没有解决问题

我已经为 build.gradle 添加了 multidex 支持并扩展了 FlutterApplication 并在我的 Application 类中调用了 Multidex.install(this) 并替换了 list 中的 Application 类

最佳答案

我找到了问题的根源。我在 kotlin 代码中使用了一些 jdk8 函数,但旧设备不支持它,因为它们是 jvm 6 或 7。

例如Collection.removeIf或Map.forEach函数在jdk8中定义

我设法通过将 intellij idea 的语言级别降低到 6 来查找和替换所有 jdk8 函数调用来解决这个问题。但它只会强制你只使用 6 以下的语言特性而不是函数。我想现在我必须找到heystack 中的所有 jdk8 函数!

关于android - 具有 kotlin 库依赖性的 Flutter 应用程序中的 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59542358/

相关文章:

java - 获取两个不同日期的日期范围

fragment 外的 Android 动画 View 被剪裁

java - Java 中的联合类型

android - 如何从 Flutter App 连接 Ms SQL?

json - 将 JSON 映射到类对象

dart - 有没有办法将高度设置为抽屉页眉?

android - 在本地 codenameone android build 中包含 cn1lib?

java - 如何在java/android中将JPG图像转换为字符串

spring-boot - 指定为非 null 的参数在 Kotlin 中为 null

unit-testing - 如何与源文件并排运行Kotlin测试文件?