
这个问题已经在这里有了答案: > Kotlin Extension Functions suddenly require api level 24 2个
如何在编码时而不是在运行时使Kotlin给出API级错误.
应用程式Gradle档案:
minSdkVersion 19targetSdkVersion 26Kotlin代码:
//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版本检查所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)