Kotlin构建时未进行Android API版本检查

Kotlin构建时未进行Android API版本检查,第1张

概述这个问题已经在这里有了答案:            >            KotlinExtensionFunctionssuddenlyrequireapilevel24                                    2个如何在编码时而不是在运行时使Kotlin给出API级错误.应用

这个问题已经在这里有了答案:            >            Kotlin Extension Functions suddenly require api level 24                                    2个
如何在编码时而不是在运行时使Kotlin给出API级错误.

应用程式Gradle档案:

minSdkVersion 19targetSdkVersion 26

Kotlin代码:

//initialisationvar data = getSomedata() //the returned type is Map<String, String>data.getorDefault("SomeKey","DefaultValue")

问题:

代码可以正常编译,还可以创建签名的APK.但是,如果在具有API 22(AndroID 5)的设备上执行APK,则会引发以下错误.

Fatal Exception: java.lang.NoSuchMethodError

预期的行为:

如果我在java文件中调用该函数,则即使在编译之前,lint检查也会给出以下错误.

Call requires API level 24 (current min is 19): java.util.Map#getorDefault

选中的重复项

已经检查了this question.它为我已经得出的行为提供了原因.我需要解决方法或解决方法.到目前为止,我不确定所有方法在运行时均无法正常运行,并且用户将报告IDE或编译器应报告的那些错误.

解决方法:

这很有可能必须由AndroID Studio / Kotlin团队完成.

理论上讲,方法kotlin.Map.getorDefault()在任何AndroID API上均有效,但是其内部实现(委托对java.util.HashMap.getorDefault()的调用)仅在JDK 1.8上有效.

此外,其文档中的方法kotlin.Map.getorDefault()被标记为@since JDK 1.8.我想我们需要等待一段时间,IDE团队才能对文档中标记为@since XXX的方法实施警告

您还可以在Kotlin的YouTrack上投票或评论问题

https://youtrack.jetbrains.com/issue/KT-20358

https://youtrack.jetbrains.com/issue/KT-21503

总结

以上是内存溢出为你收集整理的Kotlin构建时未进行Android API版本检查全部内容,希望文章能够帮你解决Kotlin构建时未进行Android API版本检查所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1081011.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-27
下一篇2022-05-27

发表评论

登录后才能评论

评论列表(0条)

    保存