测试软件包可见性行为

如果您的应用依赖于与其他应用的交互来完成其用例,那么测试 Android 11(API 级别 30)及更高版本中软件包可见性的变化如何影响您的应用会很有用。

本指南还提供了一些关于如何测试行为更改的建议,并帮助您配置日志消息,以便更细致地确定您的应用可能受到的影响。

测试行为更改

要测试此行为更改是否会影响您的应用,请完成以下步骤:

  1. 安装 Android Studio 3.6.1 或更高版本。
  2. 安装 Android Studio 支持的最新版 Gradle。
  3. 将您的应用的 targetSdkVersion 设置为 30 或更高版本。
  4. 不要在您的应用的清单文件中包含 <queries> 元素。
  5. 调用 getInstalledApplications()getInstalledPackages()。这两个方法在成功时都会返回一个过滤后的列表。
  6. 查看您的应用中哪些功能无法正常工作。
  7. 引入适当的 <queries> 条目来修复这些功能。

配置软件包过滤的日志消息

要了解有关应用的默认可见性如何影响您的应用的更多详细信息,您可以启用软件包过滤的日志消息。如果您在 Android Studio 中开发测试应用或可调试应用,系统日志会为您提供此功能。否则,您可以在终端窗口中运行以下命令手动启用它:

adb shell pm log-visibility --enable PACKAGE_NAME

然后,每当软件包从 PackageManager 对象的返回值中被过滤掉时,您都会在 Logcat 中看到类似以下内容的日志消息:

I/AppsFilter: interaction: PackageSetting{7654321 \
  com.example.myapp/12345} -> PackageSetting{...} BLOCKED