将 targetSDK 设置为 API 30 后,我的 Android 应用无法正常工作;我如何找出原因?

My Android app is not working properly once I set targetSDK as API 30; how do I figure out the reason(s)?

根据 Google,自 2021 年 8 月起所有新的 Google Play 应用都需要以 API 30 为目标,除了作为 Android 应用程序包派生。此外,从 2021 年 11 月开始,即使是应用程序更新也需要符合要求。

所以我正在将我的应用程序从目标 API 29 更新到 API 30,并且一些功能坏了。我如何找出原因?从 Google 给出的 list of changes 来看,这并不明显,因为这不仅仅是检查是否使用了某些已弃用的 API 的问题。

理想情况下,如果 Android Studio 可以提供一种方法来查看 API 30 中的功能如何影响我的应用程序行为,那就太好了。

我在 Android 开发人员选项中发现了一个很棒的功能,称为应用程序兼容性更改。 Google 是这样描述这些 Compatibility Framework Tools 的:

Android 11 introduced new developer tools for testing and debugging your app against the behavior changes in newer versions of the Android platform. These tools are part of a compatibility framework that lets app developers turn breaking changes on and off individually using developer options or ADB. Use this flexibility as you prepare to target the latest stable API version and as you test your app with the preview release of the next Android version.

哇,看看 phone 上的效果,您似乎真的可以单独打开或关闭每个新的 feature/change?

好吧,让我们看看;首先,它为我们提供了设备上所有可调试应用程序的列表,如果我们 select 其中一个,比如说,目标 API 29,那么我们实际上可以切换 on/off 每个 API 30个特征,如下例所示,CALLBACK_ON_CLEAR_CHANGE.

酷!只需注意两点:这仅适用于可调试的应用程序;如果您想要启用 API 30 的 on/off 功能,请针对其下方的 API 级别构建您的可调试应用程序,即在本例中为 API 29,并且然后打开 on/off 功能并进行测试!如果您不知道是哪个功能导致了问题,您可以通过 selecting 来加快搜索速度,比如说,30 个左右的更改中的一半,看看问题是否存在或不,依此类推,以放大到右侧切换。