如果您的应用依赖于与其他应用的交互来完成其用例,则测试 Android 11(API 级别 30)及更高版本中包可见性的变化如何影响您的应用非常有用。
本指南还提供了一些关于如何测试行为变化的建议,并帮助您配置日志消息以更细粒度地确定您的应用可能受到的影响。
测试行为变化
要测试此行为变化是否会影响您的应用,请完成以下步骤
- 安装 Android Studio 3.6.1 或更高版本。
- 安装 Android Studio 支持的最新版本的 Gradle。
- 将应用的
targetSdkVersion
设置为30
或更高版本。 - 不要在应用的清单文件中包含
<queries>
元素。 - 调用
getInstalledApplications()
或getInstalledPackages()
。这两种方法在成功时都会返回一个过滤后的列表。 - 查看应用的哪些功能无法正常工作。
- 引入适当的
<queries>
条目以修复这些功能。
配置包过滤的日志消息
要详细了解应用的默认可见性如何影响您的应用,您可以启用包过滤的日志消息。如果您正在 Android Studio 中开发测试应用或可调试应用,则系统日志为您提供了此功能。否则,您可以在终端窗口中运行以下命令以手动启用它
adb shell pm log-visibility --enable PACKAGE_NAME
然后,每当从 PackageManager
对象的返回值中过滤掉包时,您都会在 Logcat 中看到类似于以下内容的消息
I/AppsFilter: interaction: PackageSetting{7654321 \ com.example.myapp/12345} -> PackageSetting{...} BLOCKED