2010-12-03 8 views
3

몇 시간마다 에뮬레이터를 열 때마다 3g 기호 대신 화면 상단에 'X'가 표시되고 명백한 네트워크 연결이없는 오프라인 모드로 표시됩니다. 내가 찾은 로그에Android 에뮬레이터가 때때로 네트워크를 시작하지 못합니다.

유일한 명백한 차이는 : 등록이 또 다른 하나 개의 실행에서 성공하지 왜

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

비슷한 질문보기 : 아직 문제에 대한 답변이 없지만 재 게시를 asnwer로 저장하려면 댓글로 남겨 두겠습니다. [Android 에뮬레이터가 때때로 인터넷에 연결되지 않습니다.] (http://stackoverflow.com/questions/4336297/android-emulator-sometimes-does-not-connect-to-the-internet/4336694 # 4336694) – Scoobler

+0

과거와 똑같은 행동을 관찰했습니다. 한 가지 제안 : VD를 시작할 때 시간을 주어야하기 때문에 안드로이드가 모든 시스템 서비스를로드 할 때까지는 어떤 응용 프로그램도 시작하지 마십시오. 이 간단한 규칙을 따르기 때문에 자주 그런 일이 발생하지 않습니다. – Zelimir

답변

1

이것은 CI 용이므로 임시 해결 방법이 필요합니다. 우리의 빌드는 먼저 네트워크가 문제없이 나왔는지 확인하기 위해 게이팅 테스트를 실행합니다. 테스트가 시작될 때마다 에뮬레이터가 만들어지고 네트워크 연결을 테스트합니다. 네트워크가 작동중인 경우에만 테스트가 실행됩니다. 그렇지 않으면 몇 분 후 (새로운 에뮬레이터 인스턴스를 사용하여) 일정이 다시 조정됩니다. 이것이 문제를 예방하는 것은 아니지만, 우리의 지속적인 통합 시스템이 잘못된 오류를 일으키는 것을 방지합니다.

내가 네트워크가있는 경우에 대한 테스트입니다 방법은 별도의 작업으로 실행되는 작은 그루비 스크립트입니다 :

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

자원의 잠재적 낭비 있지만, 그것은 일시적인 오류 이메일의 대안을 친다.

관련 문제