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

Android API 30生成错误,但在API 29中未发生,android,android-studio,kotlin,android-11,Android,Android Studio,Kotlin,Android 11,将project 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中 我正在使用

将project 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编写,您可能会完全忽略这一风险)。当您遇到这些警告和错误时,您可以通过添加到代码中来处理它们


请参阅此方法的Javadocs,其中说明传递的
url
决不能为null,因此无论如何都不应该传递null。他们可能在API 29和30之间添加了一个可空性注释。您发布的代码来自WebView的MockView版本。我不知道为什么当你在Android Studio中查看源代码时会得到这样的结果。你可以在这里看到
@NonNull
注释:@Tenfour04谢谢你的评论。使用AndroidStudio下载SDK时,我看不到任何非空声明。是的,Android11中的nullability注释有一个变化:通常Lint会告诉您这些情况下的问题是什么。您可能无法在Android Studio中看到任何非null,因为它打开的是SDK 29文件,而不是30个文件。如果您从29升级到30后没有在本地下载30或没有清除缓存,则会发生这种情况。