Почему для Samsung Galaxy TAB 7.0 не работает иерархический просмотрщик?

Я использовал hierarachyviewer раньше, но на эмуляторе Android. Он отлично работает, когда я использую его на эмуляторе. Однако он не работает с Samsung Galaxy TAB 7.0, с Android 2.3.4.

Это журнал, который я получаю

11:04:22 E/hierarchyviewer: Unable to get view server version from device 303599
64881B00EC
11:04:22 E/hierarchyviewer: Unable to get view server protocol version from devi
ce 30359964881B00EC
11:04:24 E/hierarchyviewer: Unable to debug device 30359964881B00EC
11:05:05 E/hierarchyviewer: Unable to get view server version from device 303599
64881B00EC
11:05:05 E/hierarchyviewer: Unable to get view server protocol version from devi
ce 30359964881B00EC
11:05:07 E/hierarchyviewer: Unable to debug device 30359964881B00EC
11:09:38 E/hierarchyviewer: Unable to get view server version from device 303599
64881B00EC
11:09:38 E/hierarchyviewer: Unable to get view server protocol version from devi
ce 30359964881B00EC
11:09:40 E/hierarchyviewer: Unable to debug device 30359964881B00EC

Я также не использую иерархический просмотрщик в режиме отладки, просто запустив приложение. Спасибо.

Ответ 1

Я нашел обходное решение: https://github.com/romainguy/ViewServer

ViewServer - это простой класс, который вы можете использовать в своем приложении для Android, чтобы использовать инструмент проверки HierarchyViewer...

Если вам нужна эта библиотека, следуйте следующим указаниям:

  • Включите библиотеку ViewServer (здесь легко найти )
  • Ваше приложение должно требовать разрешения INTERNET
  • Рекомендуемый способ использования этого API - зарегистрировать действия при их создании и отменить регистрацию при их уничтожении:

    public class MyActivity extends Activity {
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            // Set content view, etc.
            ViewServer.get(this).addWindow(this);
        }
    
        public void onDestroy() {
            super.onDestroy();
            ViewServer.get(this).removeWindow(this);
        }
    
        public void onResume() {
            super.onResume();
            ViewServer.get(this).setFocusedWindow(this);
        }
    }
    

Для получения дополнительной информации обратитесь к документации в ViewServer.java...

Ответ 2

Вместо этого используйте монитор (android-sdk/tools/monitor).

Подключитесь к своему устройству. Сначала закройте Eclipse, если вы не можете подключиться.

Нажмите кнопку "Дайм-просмотр иерархии для автомата пользователя" на вкладке "устройства". Его рядом с кнопкой захвата экрана.

Работает с API уровня 16 (Android 4.1).

Ответ 3

Вы можете использовать только HierarachyViewer на эмуляторе и специальные телефоны разработчиков, купленные у Google.

http://groups.google.com/group/android-developers/browse_thread/thread/b0b0af7a316ca768

Цитата из этой ссылки

HierarchyViewer не работает с пользовательскими сборками (т.е. с устройствами доступный в магазинах.) Это из соображений безопасности. Если HiearchyViewer был способен работать с пользовательскими сборками, любыми приложениями на вашем рабочем столе (или даже по телефону в некоторых случаях) потенциально могут получить доступ к конфиденциальную информацию (например, логины и пароли.)

Ответ 5

Почти нет телефонов общего производства, позволяющих HierarchyViewer получить к ним доступ. Обычно разработчики телефонов и эмуляторы являются единственными с этими функциями.

Ответ 6

Аналогичная проблема у меня была на Android 4.1 Android. Используйте ViewServer в вашем коде.

Перед проверкой в ​​средстве просмотра иерархии просто запустите сервер adb один раз.