Отладка USB Android в VirtualBox

Я пытаюсь получить mono для android (он же monodroid), работающий в виртуальной машине windows 7 на virtualbox, но у меня возникли проблемы с подключением adb к моему телефону. Когда я запускаю "adb devices", чтобы перечислить присутствующие устройства, это не проблема, но когда я пытаюсь запустить" adb install", logcat или нажать его зависает. В настоящее время в virtualbox есть ошибка, которая относится к этому, но я надеялся, что у кого-то более осведомленного, чем я, будет обход.

https://www.virtualbox.org/ticket/6620

грубого не этого было бы проблемой, если бы Xamarin выпустил порт linux своего продукта или если бы я познакомился с Java, но я полагаю, что это немного разные проблемы.

4 ответов


Брайан, один обходной путь, который вы могли бы рассмотреть, - это сделать ваш хост виртуальной машины хостом ADB. Затем вы можете просто подключить клиент виртуальной машины к нему через TCP / IP. Вот общая идея для этой установки:

  1. установите Android SDK на главной машине. Вам должен потребоваться только пакет platform-tools, который включает в себя adb.
  2. не позволяйте клиенту виртуальной машины взять на себя ответственность за устройство Android, поэтому отключите любые правила фильтрации USB VirtualBox, которые у вас есть, а также не помешало бы затем отсоединить и снова подключить устройство.
  3. из клиента виртуальной машины запустите adb kill-server. Сделайте это tskill adb для определенности. Если у вас есть запущенные экземпляры Eclipse, вы захотите сначала закрыть их, потому что он фактически запустит adb в фоновом режиме. Не пропустите этот шаг.
  4. от ведущего, выполнить adb devices. Если все пойдет хорошо (и это должно быть), вы увидите свое устройство в списке. Он должен выглядеть примерно так (Обратите внимание на номер порта и извините за калечение):

    * daemon not running. starting it now on port 5037 *
    * daemon started successfully *
    List of devices attached
    015d2994ed200409    device
    

на данный момент ваш хост должен иметь сервер ADB, работающий на порту 5037. Вы можете проверить это из клиента виртуальной машины, запустив telnet 10.0.2.2 5037, где 10.0.2.2 является IP-адресом По умолчанию для хостов VirtualBox и 5037 - порт ADB по умолчанию, указанный выше.

  1. теперь вы должны либо переслать порты с вашего хоста на ваш клиент виртуальной машины, либо иным образом подключить ADB непосредственно к IP-порту хоста. Если ты такой же, как я, ты ... найдите переменные ADBHOST и ANDROID_ADB_SERVER_PORT, которые плохо документированы и легко испортить. По этой причине, рассмотрим простой переадресации портов ssh (возможно, через Cygwin), например, от клиента VM:

    autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
    
  2. наконец, запустить adb devices от вашего клиента виртуальной машины. Если вы видите "демон не работает", это означает, что ваш порт fowarding испорчен. В противном случае вы должны увидеть свое устройство и иметь возможность в logcat весь день. Один примечательный момент заключается в том, что у вас не будет adb демон работает на вашем клиенте виртуальной машины, за исключением случаев, когда вы фактически используете мост отладки, конечно.

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


Не уверен, что изменилось в VirtualBox с момента публикации вопроса, но выбрав usb-устройство из меню VirtualBox устройства - > USB - > DeviceName плавно работал. Я работаю над VirtualBox 5.1.2 r108956.


У меня была та же проблема и это заставило меня искать около 2 часов.Я пробовал несколько подходов, включая все вышеперечисленные решения, но ни один из них не работал

моей ситуации

мой хост был archlinux, а гость-windows 8.1 я запускал flash builder в windows, но Отладка usb не работала, и мое подключенное устройство было nexus 5, поэтому я выполнил эти шаги

  1. включить USB-контроллер из меню virtualbox Машина-- > настройки-- > usb включить USB-контроллер и включить USB 2.0 (EHCI) контроллер затем добавить устройство (нажмите на кнопку + на правой стороне) затем запустите виртуальную машину
  2. теперь вы должны загрузить последние драйверы Google usb из здесь и извлечь его
  3. перейти к панели управления Диспетчер устройств щелкните правой кнопкой мыши на устройстве перейдите на вкладку драйвера и нажмите на драйвер обновления должно быть два варианта один поиск автоматически ... и еще один просмотр моего компьютера выберите второй и дайте извлеченный путь к файлу (проверьте включенную опцию вложенных папок) после этого ваше устройство должно быть распознано windows, и на вашем android-устройстве появится сообщение для разрешения доступа к вашему устройству

в моем случае я должен скопировать драйверы в flashbuilder Android drivers path тоже, но, возможно, для вашей ситуации это не обязательно


У меня была такая же проблема с VirtualBox 5.0.14 и решение Стивена Недзельский не работает для меня. Если кто-то все еще заинтересован, попробуйте это решение.

мое окружение:

  • хост-ОС: Mac OS 10.11
  • гостевая ОС в VirtualBox: Ubuntu 14.04
  • устройство: Galaxy S5 работает Cyanomodgen 12.1

запустите точку доступа wifi в хост-ОС и подключите там android-устройство или подключите оба в маршрутизаторе. В virtualbox установите сетевой режим для гостевой ОС на "мостовой адаптер", а затем выберите имя адаптера Wifi. Таким образом, хост-ОС и android-устройство находятся в одной сети.

затем в android-устройстве активируйте "режим разработчика" и включите "ADB по сети", предоставленный Cyanomodgen. (Для устройств с оригинальной версией android, google как использовать ADV по сети, если это возможно) В хост-ОС запустите "ADB kill-server" и убедитесь, что экземпляр ADB не запущен. Затем запустите команду " adb connect 192.168.2.12', ip устройства android.

Congrats:) теперь вы можете использовать ADB с android устройства, чтобы взять logcat или тянуть и толкать файлы.