每次打开模拟器时,它都会显示处于离线模式,屏幕顶部的“X”代替3g符号,没有明显的网络连接。
我发现的日志中唯一明显的区别是:
Network works:
12-03 11:24:48.732 D/qemud ( 37): client_fd_receive: attempting registration for service 'gsm'
12-03 11:24:48.732 D/qemud ( 37): client_fd_receive: -> received channel id 2
12-03 11:24:48.742 D/qemud ( 37): client_registration: registration succeeded for client 2
Network fails:
12-03 03:02:11.688 D/qemud ( 37): client_fd_receive: attempting registration for service 'gsm'
12-03 03:02:11.688 D/qemud ( 37): client_fd_receive: -> received channel id 2
是否有人知道为什么注册不会从一次运行到另一次运行成功?
答案 0 :(得分:1)
由于这是针对CI的,因此需要临时解决方法。我们的构建首先运行门控测试,以检查网络是否出现问题。每次我们的测试启动时,都会创建仿真器并测试网络连接。只有在网络启动时才运行测试,否则重新安排几分钟后(使用新的模拟器实例)。虽然这不能解决问题,但它确实阻止了我们的持续集成系统产生错误的故障。
我测试网络是否正常的方式是使用一个小的groovy脚本作为一个单独的工作运行:
String status=
['sh', '-c', 'adb shell dumpstate | grep -m1 \"Mobile data state: \"'].execute().text.trim();
if (status=="Mobile data state: CONNECTED") {
System.exit(0);
} else {
System.exit(1);
}
虽然可能浪费资源,但它却可以替代间歇性故障电子邮件。