切换到Kotlin 1.3.30只能在Android API 21上打破hashCode

时间:2019-04-16 13:00:09

标签: kotlin kotlin-android-extensions

我将Android项目从1.3.20切换到1.3.30,当它们调用hashCode()方法时,突然从某些类中获取异常。请注意,我仅在Android平台API 21和22上才获得此异常,而在Android API 24之外,一切正常。

  

由于:java.lang.NoSuchMethodError:没有静态方法hashCode(J)I   在Ljava / lang / Long类中;或其超类(声明为   “ java.lang.Long”出现在/system/framework/core-libart.jar)

有一个thread提到了类似的症状,但那是针对Kotlin 1.2的,我想知道是否有人遇到类似的情况,是否有解决方法?

2 个答案:

答案 0 :(得分:3)

作为替代方案,您可以将Kotlin编译的JVM目标设置为"1.6",因为Kotlin 1.3.30已开始从android.compileOptions中的Java版本推断出JVM目标并选择{{1 }},如果"1.8"sourceCompatibility都设置为该值或更高。

在模块的targetCompatibility中,添加:

build.gradle

the issue in D8 desugaring固定后就不需要这样做。

此问题在Kotlin问题跟踪器中被跟踪为KT-31027

答案 1 :(得分:1)

这与此问题有关-https://issuetracker.google.com/issues/129730297,因此解决方案似乎是升级到最新的AGP!