2012-11-09 9 views
6

W moim kodzie popełniłem błąd polegający na tym, że moja aplikacja na Androidzie się zawiesza, gdy wyłączam sieć w emulatorze, gdy aplikacja HTTPClient żąda czegoś.Odłącz sieć w emulatorze Androida, utrzymując przy życiu ADB.

Ale nie mogę tego usunąć, ponieważ po wyłączeniu sieci również utraciłem połączenie ADB. Tak więc nie widzę, jaki wyjątek powoduje awarię.

Próbowałem wyłączenie sieci przez:

  • F8
  • Set 'danych' do 'niezarejestrowana' lub 'Odmowa' w DDMS Emulator Kontroli

mogę umieścić mój Mac offline i ADB pozostanie, ale niestety nie mogę odtworzyć awarii w ten sposób.

Czy istnieje sposób na wyłączenie sieci w emulatorze przy jednoczesnym utrzymaniu aktywności ADB? Po prostu potrzebuję dostępu do wpisów LogCat.

Dzięki!

+0

Rozwiązałem problem z awarią globalnego try-catch i drukowania logów do widoku. Ale nie mogę tego dalej robić - i byłbym wdzięczny, gdyby ktoś miał rozwiązanie tego pytania :) – edwinbs

Odpowiedz

2

Można uruchomić program logcat z urządzenia zamiast z ADB i przekierować go do pliku do czytania w trybie offline.

adb shell logcat [-v threadtime] > /sdcard/mylogs/logcat.log 

Zamiast

adb logcat [-v threadtime] 

Następnie można pobrać plik przy ponownym połączeniu się z urządzeniem.

+0

Dobry pomysł, dzięki. Zdecydowanie lepiej niż zrzucanie dzienników do widoku. – edwinbs

0

Zawsze można przełączyć urządzenie w tryb samolotowy, co pozwoli ci połączyć się przez adb, ale nie da emulatorowi połączenia z Internetem. Możesz także wyłączyć dane poprzez zaćmienie za pośrednictwem sekcji kontroli emulatora w ddms, umieszczając niezarejestrowane/zabronione w rozwijanym menu danych.

+1

Tryb samolotowy też nie działa, emulator straci połączenie ADB, przynajmniej na Macu. – edwinbs

1

Na Linuxie jest to całkiem proste dzięki firewallowi iptables. Przypuszczam, że stara się debugować wywołań API, więc po prostu zablokować hosta API:

iptables -I OUTPUT -d api.example.com -j DROP 

Oczywiście można zrobić to samo z Mac lub zaporę systemu Windows.

0

Wiem, że to stare pytanie, ale ktoś może użyć tego do znalezienia.

Moja konfiguracja

Eclipse Kepler z emulowane Android 4.4

Jeśli chcesz, aby utrzymać przy życiu i adb sieć wyłączony, można spróbować.

  1. start emulowane urządzenie/tryb samolot
  2. Aktywuj lot
  3. restart Eclipse
  4. To powinno działać!Sprawdź perspektywę DDMS dla podłączonych urządzeń lub użyj komendy