Android Emulator偶尔无法启动网络

时间:2010-12-03 21:46:47

标签: android android-emulator adb gsm avd

每次打开模拟器时,它都会显示处于离线模式,屏幕顶部的“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

是否有人知道为什么注册不会从一次运行到另一次运行成功?

1 个答案:

答案 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);
}

虽然可能浪费资源,但它却可以替代间歇性故障电子邮件。