2010-12-03 7 views
3

Chaque fois que j'ouvre l'émulateur, il apparaît en mode hors ligne, avec le «X» en haut de l'écran au lieu du symbole 3g et aucune connectivité réseau apparente.L'émulateur Android ne parvient pas parfois à démarrer le réseau

La seule différence apparente dans les journaux que j'ai trouvé est:

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 

Est-ce que quelqu'un a une idée pourquoi l'enregistrement ne réussirait pas d'une course à l'autre?

+0

Voir la même question ici: toujours pas de réponses au problème, mais pour sauver la republication comme un asnwer je vais le laisser comme un commentaire: [Android émulateur parfois ne se connecte pas à internet] (http://stackoverflow.com/questions/4336297/Android-émulateur-parfois-ne-pas-se connecter-à-l'Internet/4336694 # 4336694) – Scoobler

+0

observé le même comportement dans le passé. Une suggestion: lorsque vous démarrez VD, donnez-lui le temps, donc ne lancez aucune application avant qu'Android ne charge tous les services système. Depuis que je suis cette règle simple, cela ne m'arrive pas souvent. – Zelimir

Répondre

1

Puisqu'il s'agit de CI, une solution de contournement temporaire était nécessaire. Notre build exécute d'abord un test de validation pour vérifier que le réseau est sorti sans problème. Chaque fois que nos tests démarrent, l'émulateur est créé et testé pour la connectivité réseau. Ce n'est que si le réseau est actif que les tests sont exécutés, autrement, ils sont replanifiés quelques minutes plus tard (avec une nouvelle instance d'émulateur). Bien que cela n'empêche pas le problème, cela empêche notre système d'intégration continue de produire de fausses défaillances.

La façon dont je teste pour si le réseau est est un petit script groovy qui fonctionne comme une tâche séparée:

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

Bien que potentiellement le gaspillage des ressources, il bat l'alternative des e-mails de défaillance intermittents.

Questions connexes