2013-11-12 2 views
1

Согласно документации Android, каждый DVM имеет порт JDWP для подключения (это не совсем протокол JDWP, но реализующий большинство функций JDWP). Таким образом, вы можете подключиться к нему с помощью ADB.JDWP через ADB VS JDWP через DDMS

И согласно той же документации DDMS предоставляет один JDWP для каждого DVM и одного базового порта JDWP (8700).

Мой вопрос: Плюсы и минусы обоих вариантов.

Благодаря

ответ

7

Каждый отладочная VM на устройстве есть соединение с АБР. DDMS ведет переговоры с АБР о получении списка виртуальных машин, а затем использует ADB для общения с ними.

DDMS прослушивает отдельный TCP-порт для каждой виртуальной машины, поэтому вы можете «напрямую» подключиться к любой виртуальной машине на устройстве. Кроме того, в качестве удобства он прослушивает порт 8700 и направляет любое соединение там, в зависимости от того, какая из ВМ выбрана в настоящее время в пользовательском интерфейсе. Вы можете подключиться к этому порту с помощью «отладки удаленной виртуальной машины» с помощью Eclipse, IntelliJ, jdb, jswat, что угодно.

После подключения протокол JDWP определяет базовый формат пакета, используемый для связи (то есть, как кодируются типы и длина пакетов). DDMS расширяет JDWP, определяя новый формат пакета для своих целей. Сообщения DDMS и сообщения отладчика могут чередоваться.

Здесь действительно нет двух вариантов. Отладчик ведет переговоры с DDMS, DDMS ведет переговоры с АБР, а АБР ведет переговоры с VM. Отладчик и VM говорят JDWP, а DDMS немного расширяет его, чтобы он мог использовать один и тот же канал связи.

Оригинальный документ-документ DDMS можно найти в dalvik docs. Это немного датировано (и по какой-то причине отформатировано курсивом), но существенные детали не изменились.