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