Почему для 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 был способен работать с пользовательскими сборками, любыми приложениями на вашем рабочем столе (или даже по телефону в некоторых случаях) потенциально могут получить доступ к конфиденциальную информацию (например, логины и пароли.)
Ответ 4
Я решаю вопрос в max os
это решение ANDROID_HVPROTO описано здесь:
http://developer.android.com/tools/performance/hierarchy-viewer/setup.html
затем попытайтесь закрыть Android Studio
запустить adb kill-server, adb start-server
и запустить монитор для меня!
ответ:
https://github.com/romainguy/ViewServer/issues/14#issuecomment-75354479
@ozodrukh ответ полезен.
Ответ 5
Почти нет телефонов общего производства, позволяющих HierarchyViewer получить к ним доступ. Обычно разработчики телефонов и эмуляторы являются единственными с этими функциями.
Ответ 6
Аналогичная проблема у меня была на Android 4.1 Android. Используйте ViewServer в вашем коде.
Перед проверкой в средстве просмотра иерархии просто запустите сервер adb один раз.
Ответ 7
официальная документация: Оптимизация вашего пользовательского интерфейса сказала так:
Чтобы сохранить безопасность, Hierarchy Viewer может подключаться только к устройствам, на которых установлена версия для Android-системы.