我正在将我的Android项目迁移到AndroidX库中。蝶形刀10.x已经改进了对它的支持,所以我认为使用它是很好的。我的项目是用Kotlin (1.3.30)制作的。
大于8的Butterknife版本要求您使用Java 8,如下所示:
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
这对minsdk >=24非常有效。对于一个好的部分,它也可以与较低的版本一起工作。但是,当Kotlin编译到Java8时,一些特性在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()是Java8中的一个新接口,但在较老的安卓版本中不受支持。This question通过告诉编译器使用Java6解决了同样的问题,但我的AndroidX所需的Butternache10.x不支持这一点。
我想这是一个很常见的问题,但我还没有找到解决方案。我该如何解决这个问题呢?
发布于 2019-04-17 03:46:04
这个问题与使用Kotlin 1.3.30 (参见This issue)有关。我已经使用Kotlin 1.3.21暂时修复了这个问题。在未来的D8版本中,Long和Char的静态方法也将被去掉Issue here的代码。它已经修复了,但在它达到D8的稳定版本之前,还需要一些时间。在那之后,这将不再是一个问题。
发布于 2019-04-15 20:34:29
https://stackoverflow.com/questions/55689197
复制相似问题