当前位置: 首页 > 知识库问答 >
问题:

切换到Kotlin 1.3.30仅在Android API 21上中断哈希代码

窦国源
2023-03-14

我将我的Android项目从1.3.20切换到1.3.30,当一些类调用hashCode()方法时,我突然发现了一些异常。注意,我只在Android平台API21和22上得到这个异常,除了Android API24,一切都正常工作。

导致的原因:java.lang.NoSuchMethoderRror:类LJava/Lang/Long中没有静态方法hashCode(J)I;或其超类(“java.lang.long”的声明出现在/system/framework/core-libart.jar中)

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

共有1个答案

戚云
2023-03-14

作为另一种选择,您可以将Kotlin编译的JVM目标设置为“1.6”,因为Kotlin 1.3.30已经开始从Android.CompileOptions中的Java版本推断JVM目标,并且如果SourceCompatibilityTargetCompatibility都设置为“1.8”或更高,则选择“1.8”

在模块的build.gradle中,添加:

tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kotlinOptions {
        jvmTarget = '1.6'
    }
}

一旦D8解化的问题被修复,就没有必要再这样做了。

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

 类似资料:
  • Hashmaps通常使用桶的内部数组(表)来实现。在通过键访问hashmap时,我们使用键类型特定(逻辑类型特定)的hash函数获得键的hashcode。然后我们需要将hashcode映射到实际的内部桶表索引。 有时,内部表可能会收缩和扩展,这取决于hashmap填充率。那么可能是散列码- 例如,我们的哈希函数返回32位无符号整数值 时刻A:内表容量为10000 时刻B:内工作台容量为100000

  • 我做了一个标题,当有人在桌面上访问网站时,他会看到一个导航菜单。当同一个人在他的手机上访问网站时,他首先会看到一份汉堡菜单。当他点击汉堡包菜单时,有一个动画和一个下拉菜单。 我能够修复这个代码,但当我访问我的pc上的网站,我点击附近我的头,这个移动的dropdrown菜单将出现... 场地; https://www.spiralex.nl/ 我的汉堡包和下拉代码; null null

  • 我希望能够在 PhpStorm 中快速切换到代码编辑器窗口。我发现了“跳转到源代码”热键,但它的工作方式是这样的:如果我在目录树中选择了一些文件夹(“项目”,在左侧),并且我使用热键(默认为),我不会被切换。此外,如果在目录树中选择了其他文件,我将切换到所选文件的代码。但是,我只想使用鼠标单击编辑器字段。只需切换即可。

  • 我有一些jQuery,可以将定义列表转换为可扩展/可折叠的常见问题列表。 我在整个网站上有几个常见问题的链接,点击它们会将您发送到常见问题页面并展开相关问题,问题是一些常见问题的答案有指向其他问题的链接,而散列链接会跳到相关问题,但不会展开答案。 这是因为jQuery位于$(文档)中。就绪(function(),因此代码仅在页面重新加载后激活?是否需要触发重新加载? CHeers 有关完整代码,请

  • 所以,我有一个带有数组的哈希,就像这样: 我想将它们合并到一个哈希数组中,组合相应的元素。 结果应该是这样的: 知道如何有效地做到这一点吗? 请注意,真实世界的使用场景可能包含数量可变的散列键。

  • 寻找将此C#代码转换为Java的帮助 我有字节数组,但需要帮助编码到BigInteger的转换。希望为Hadoop创建一个UDF; ////////////////////////////// 我的最后一段代码与SQL Server中的哈希字节匹配: