我正在将我的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不支持该问题。
我想这是一个很普遍的问题,但是我还没有找到解决方案。我该如何解决?
答案 0 :(得分:1)
问题与使用Kotlin 1.3.30有关(请参见This issue)。我已经通过使用Kotlin 1.3.21临时解决了该问题。在D8的未来版本中,Long和Char的静态方法也将被废止Issue here。它已经修复,但是要达到D8的稳定版本还需要一些时间。之后,这将不再是问题。
答案 1 :(得分:0)