我正在使用 Espresso 进行仪器测试并在 Android Preview P Emulator 上运行它们。我的测试类中有 5 个测试用例,其中一个测试在运行测试套件时失败并出现以下错误。
检测到 API 兼容性问题
而失败的测试用例在单独运行而不是在套件中运行时通过。
由于对话框显示在视图上,上面写着Detected problems with API compatibility
,我没有在层次结构异常中找到匹配的视图以及上述错误。
我正在使用 Espresso 进行仪器测试并在 Android Preview P Emulator 上运行它们。我的测试类中有 5 个测试用例,其中一个测试在运行测试套件时失败并出现以下错误。
检测到 API 兼容性问题
而失败的测试用例在单独运行而不是在套件中运行时通过。
由于对话框显示在视图上,上面写着Detected problems with API compatibility
,我没有在层次结构异常中找到匹配的视图以及上述错误。
参考文档:在 Android P 中,此对话框显示
检测到 API 兼容性问题
为什么显示此对话框?
原因:您的代码命中
暗灰名单
什么是深灰名单 API?其他应用程序不允许调用的此类 api,在我的情况下,我使用的是深灰色列出的 startSoftAp 方法。删除该调用消失了对话框。
你会怎么找到?
在你的 logcat -> verbose -> Search("Accessing hidden")
LOGCAT 结果
访问隐藏方法:Landroid/net/wifi/WifiManager:startSoftAp(Landroid/net/wifi/WifiConfiguration;)Z(暗灰名单,反射)
将 targetSdkVersion 更改为 28(以前是 27)使问题消失。我认为在大多数情况下,这不是一个有效的解决方案,但就我而言,它允许我的项目继续进行。