Android Pie SDK与Kotlin更合拍

Android Pie SDK与Kotlin更合拍

在使用 Java 编程语言时,最常见的痛处之一是在存取空引用 (null reference) 成员时,系统会报出 NullPointerException。Kotlin 可有效地避免这问题的发生,它通过将可空类型 (nullable type) 与非空类型 (non-nullable type) 汇入类型系统,帮助您消除代码中的 NullPointerException 错误,从而提升 app 的整体质量。Kotlin 代码调用写入 Java 语言中的 API 时,会依靠上述 API 中的可空性注解来决定每个参数的可空性,以及返回值类型。未注解的参数和返回值类型将被视为平台类型,从而弱化 Kotlin 的空值安全保证。

最新的 Android 9 包含了 Android SDK 的更新,为一系列最常用的 API 加上了可空性注解。您的 Kotlin 代码在调用 SDK 中任一已注解的 API 时,可完好保留空值安全保证。即使在使用 Java 编程语言时,您依旧可以通过使用 Android Studio 检测可空性协议违规,并从这些注解中获益。

新的 Android SDK 作为 Android 9 连带发布的一部分,包含了一些常用 API 的可空性注解,当 Kotlin 调用了 SDK 中任何带有注解的 API 时,它能预留出空安全性 (null-safety) 保障。而使用 Java 的开发者也可以利用 Android Studio 捕捉可空合约违规行为,从而有效利用这些可空性注解。

小变化 大改善

通常情况下,Kotlin 中违反可空性协议时会导致编译错误。为保证已包含注解的 API 可与您的现有代码兼容,我们采用了一个由 Kotlin 编译器团队提供的内部机制来对最新注释的 API 进行注解。新注释的 API 仅触发警告,而不会导致 Kotlin 编译器报错。这必使用 Kotlin 插件 1.2.60 或更新版本。

近期加入的可空性注解只会产生警告而非错误,但在下一年度的 Android SDK 中 ,我们将提高错误严重等级。此举的目的是为了给开发者预留出足够时间调整代码。

如何使用更与 Kotlin 更合拍的 SDK

首先,在 Android Studio 内选择 Tools > SDK Manager。选择左栏中的 “Android SDK”,确保 “SDK Platforms” 的标签已打开。

Android Pie SDK与Kotlin更合拍
△ 使用 Android Studio中的 SDK Manager来为 API 28 级第 6 版安装 SDK

检查 Android 8.+ (P) 并点击 OK。通过该步骤,可实现 Android SDK 平台 28 级第 6 版的安装 (若之前尚未安装)。此后,将项目的编译 SDK 版本设置为 API 28 级,来激活新款 Android Pie SDK 的可空性注释。

Android Pie SDK与Kotlin更合拍
△ 使用项目结构对话,将项目的编译 SDK 版本变更为 API 28

如果您当前的 Kotlin 插件尚未更新到最新版本,您需要通过 Android Studio 对其进行更新。请选择 “Tools Kotlin > Configure Kotlin Plugin Updates” 检查并确保 Kotlin 插件版本是 1.2.60 或更新版本。

配置设置完成后,如果您的代码违反 Android SDK 中的可空性协议,您的项目将显示警告。

此外,如果您调用的 Android API 不符合可空性要求,Android Studio 的代码编辑器上同样会显示相关警告。具体示例如下:

Android Pie SDK与Kotlin更合拍
△ 在 android.graphics.Path API 中,将空值参考作为非空类型传递给已注释的参数时的 Android Studio 警告

利用 Java 编程语言中的可空性注解

即使您的代码采用的是 Java 编程语言,您依旧可以从新的可空性注解中获益。在默认状态下,Android Studio 会显示违反可空性协议的警告,具体示例如下:

Android Pie SDK与Kotlin更合拍
△ 编程语言为 Java 时,出现违反可空性协议的情况时 Android Studio 显示的警告示例

为保证您已激活该检查功能,您可访问 IDE 的设置页面并搜索 “Constant conditions& exceptions” 检查,并确保相关项已经过检查。

Android Pie SDK与Kotlin更合拍
△ 使用设置下方的检查页面,以确保 Constant conditions& exceptions 编码的检查功能已激活。

如果您使用的是 Java 编程语言,违反可空性协议的将不会产生任何编译器警告或报错。仅 IDE 的代码检查功能可检示这些问题。

此外,您可在整个项目中检查代码,并审阅总体结果。点击 “Analyze>Inspect Code...” 来开始该过程。

下一步

相关推荐