2010-12-03 13 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

ここに似たような質問があります:問題への回答はまだありませんが、再投稿を保存するためにコメントとして残しておきます:[Androidエミュレータは時々インターネットに接続しません](http://stackoverflow.com/question/4336297 /アンドロイドエミュレータ - 時にはインターネットに接続しない/ 4336694#4336694) – Scoobler

+0

これまでと同じ動作を観察しました。 1つの提案:VDを起動するときは時間がかかるので、Androidがすべてのシステムサービスをロードするまで、アプリケーションを起動しないでください。私はこの単純なルールに従うので、それは私にとってしばしば起こるものではありません。 – 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); 
} 

資源の潜在的に無駄な、それは断続的な障害の電子メールの代替を打つ間。

関連する問題