Android API 30构建错误,但未在API 29中发生

问题描述

将项目Kotlin Android targetSdkVersion从29更新为30时,以下代码行出现错误

webview.loadUrl(null) // error here: Null can not be a value of a non-null type String

我检查了函数声明,它没有从API 29更改为30。

public void loadUrl(String url) {
}

API 30错误的原因是什么?以及为什么它没有在API 29中发生?

我正在使用Android Studio 4.0.1

任何帮助将不胜感激。

解决方法

如果您使用 Kotlin 编写,从 Android 10 升级到 Android 11 SDK 时,您可能会注意到有一些新的编译器警告,并且之前的警告可能已升级为错误。这是 Kotlin 编译器的意图和功能——这些警告告诉您,您可能正在编写在运行时使应用程序崩溃的代码(如果您不使用 Kotlin 编写,您将完全错过这种风险)。当您遇到这些警告和错误时,您可以通过在代码中添加 null checks 来处理它们。

https://android-developers.googleblog.com/2020/03/handling-nullability-in-android-11-and.html