测试包可见性行为

如果您的应用依赖于与其他应用的交互来完成其用例,则测试 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