【问题标题】:NoClassDefFoundError in Flutter app which has kotlin library dependency具有 kotlin 库依赖的 Flutter 应用程序中的 NoClassDefFoundError
【发布时间】:2020-04-19 21:07:14
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: android kotlin flutter


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-04-29
      • 2013-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      相关资源
      最近更新 更多