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

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

  • Adb отклонил команду forward для устройства 172.18...... неизвестная хост-служба
  • отсутствует передний порт для 172.18.....
  • невозможно получить версию прокси-сервера сервера версии с устройства 172.18....

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

Ответ 1

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

Ответ 2

Для тех, кто работает с 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

Ответ 3

Проект Romain ViewServer (см. ответ №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 Hierarchy View и отладить мой макет.

Ответ 4

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

Ответ 5

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

Ответ 6

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

Обозначения:   Монитор = монитор устройств Android   Studio = Android Studio

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

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

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

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

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

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

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

В заключение: для установки приложения необходимо отключить "Instant Run" (см. инструкцию в верхней части отчета). Чтобы показать "Просмотр иерархии в мониторе", необходимо отключить "Включить интеграцию ADB" . Открытие монитора от Bash и от Studio работает. Отладка сборки и сборки сборки работают.