Иерархия для моего устройства не работает

Когда я запускаю иерархию в терминале. Он может показать интерфейс, но не может подключиться к моему устройству. И он может подключиться к виртуальному эмулятору. Это напоминает мне в терминале,

  1. Adb отклонил команду forward для устройства 172.18 …… неизвестная хост-служба
  2. Отсутствует передний порт для 172.18 …..
  3. Не удалось получить версию protocal версии от устройства 172.18 ….

Как он может показать мою структуру представления моего устройства в средстве просмотра иерархии. Может ли кто-нибудь помочь мне или любому, кто знает, где найти знания об иерархии. заранее спасибо.

Solutions Collecting From Web of "Иерархия для моего устройства не работает"

По соображениям безопасности HierarchyViewer не работает с производственными сборками. Я написал API, который позволяет использовать HierarchyViewer на любом устройстве с вашим приложением: https://github.com/romainguy/ViewServer

Для тех, кто работает с Android 4.1 или новее: вы можете заставить Hierarchy Viewer работать, установив переменную окружения ANDROID_HVPROTO в ddm .

Пользователи Mac OSX / Android Studio не забудьте запустить средство просмотра иерархии из командной строки, чтобы он мог выбрать переменную окружения. Если вы установили его в Android Studio, вы можете найти его в /Users/<user>/Library/Android/sdk/tools

https://developer.android.com/tools/performance/hierarchy-viewer/setup.html

Проект ViewServer от Romain (см. Ответ №1) отлично подходит для этого. Я загрузил код, превратил проект в проект библиотеки, добавил зависимость в своем приложении к новому проекту библиотеки и изменил базовый класс активности моего приложения на подкласс из этого простого класса:

 public class SimpleViewServerActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ViewServer.get(this).addWindow(this); } @Override protected void onDestroy() { super.onDestroy(); ViewServer.get(this).removeWindow(this); } @Override protected void onResume() { super.onResume(); ViewServer.get(this).setFocusedWindow(this); } } 

Теперь я могу подключиться к представлению иерархии Android Debug Monitor и отладить мой макет.

Средство просмотра иерархии работало для меня, как только я выбрал Инструменты -> Android -> Включить интеграцию ADB в Android Studio.

У меня была та же проблема и, наконец, нашла ответ на http://developer.android.com/tools/performance/hierarchy-viewer/setup.html . Существует переменная окружения, которая должна быть установлена ​​в вашей среде разработки до подключения ViewServer.

Я использую Android Studio 2.3.3. Вывод в конце этого поста.

Обозначения: Monitor = Android Device Monitor Studio = Android Studio

В настройках Android Studio -> (сборка, выполнение, развертывание) -> Instant Run -> снимите флажок Instant Run. В противном случае он выдает сообщение об ошибке «Ошибка установки приложения», и я пробовал несколько способов, не снимая моментальный запуск, но ни один из них не работает. Поэтому просто снимите флажок «Мгновенный запуск».

(I) Если это производственная сборка (Run 'app'):

(1) Если я поставлю галочку в опции «Включить интеграцию ADB» в раскрывающемся меню «Инструменты»:

(А) Открытие монитора непосредственно из Studio будет работать, и иерархия представлений будет отображаться в мониторе, но она предложит сообщение «Отключить интеграцию ADB. После завершения сеансов отладки: приложение» (он говорит «сеанс отладки», хотя я Используя производство). Уведомление. После закрытия монитора параметр «Включить интеграцию с ADB» будет автоматически проверяться Studio.

(B) Открытие монитора из Bash вызовет сообщение об ошибке «ddms, не сможет открыть выбранный порт отладки VM (870)», но просто ручное снятие флажка «Включить интеграцию с ADB» устранит проблему, и отобразит View Hierarchy.

(2) Если я не установил галочку в опции «Включить интеграцию с АБР»: открытие монитора непосредственно из Studio и из Bash работает, никаких дополнительных операций не требуется.

(Ii) Если это отладочная сборка: я должен включить интеграцию ADB для запуска отладки, поэтому будет включена опция «Включить интеграцию ADB». После того, как Studio установила приложение в моем телефоне: тогда поведение точно так же в разделе (i) – (1). Другими словами, для задачи «Просмотр иерархии» запуск сборки отладки совпадает с запуском сборки сборки с опцией «Включить интеграцию ADB».

В заключение: для установки приложения необходимо отключить «Мгновенный запуск» (см. Инструкцию в верхней части отчета). Чтобы показать «Просмотр иерархии в мониторе», необходимо отключить «Включить интеграцию ADB». Открытие монитора из bash и из Studio работает. Отладка Build and production build обе работают.