如何在Minsdk <24上将Kotlin与Butterknife 10.1.0一起使用?

时间:2019-04-15 12:27:16

标签: android kotlin java-8 butterknife

我正在将我的Android项目迁移到AndroidX库。 Butterknife 10.x改进了对此的支持,因此我认为使用它是很好的。我的项目是在Kotlin(1.3.30)中完成的。

黄油刀版本> 8要求您使用Java 8,如下所示:

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}

这对于minsdk> = 24非常有用。在很大程度上,它也适用于较低版本。但是随着Kotlin编译为Java 8,某些功能在minsdk <24上不起作用。例如我正在获得以下例外的那个。

java.lang.NoSuchMethodError: No static method hashCode(J)I in class Ljava/lang/Long; or its super classes (declaration of 'java.lang.Long' appears in /system/framework/core-libart.jar)

Long.hashCode()是Java 8中的新api,但在较早的android版本中不受支持。 This这个问题通过告诉编译器使用Java 6解决了相同的问题,但是我需要AndroidX才能使用的Butterknife 10.x不支持该问题。

我想这是一个很普遍的问题,但是我还没有找到解决方案。我该如何解决?

2 个答案:

答案 0 :(得分:1)

问题与使用Kotlin 1.3.30有关(请参见This issue)。我已经通过使用Kotlin 1.3.21临时解决了该问题。在D8的未来版本中,Long和Char的静态方法也将被废止Issue here。它已经修复,但是要达到D8的稳定版本还需要一些时间。之后,这将不再是问题。

答案 1 :(得分:0)

当您拥有Kotlin android extensions时,您实际上并不需要黄油刀。 使用它要简单得多。

赞:

myTextView.text = "Hello World!"