Android x86 на VirtualBox: Android подключен, но не в сети

Я пытаюсь настроить машину под управлением Android x86 с помощью Oracle VirtualBox, чтобы она работала с Eclipse. У меня возникли проблемы с подключением моей виртуальной машины к сети. Я подключил телефон к adb, набрав в эмуляторе терминала Android следующее:

ifconfig eth0 192.168.40.1 netmask 255.255.255.0
route add default gw 192.168.40.1 dev eth0

После этого я переключился на cmd и набрал adb connect localhost.

Но когда я пытаюсь запустить свой тестовый код с помощью Eclipse на виртуальном Android, он не появляется в меню выбора устройств Android. Кроме того, когда я набрал adb devices в cmd, это был ответ:

List of devices attached
localhost:5555   offline

Еще меня беспокоит то, что каждый раз после выключения виртуальной машины мне приходится снова вводить команды ifconfig и route add в терминале при перезапуске, чтобы подключиться к устройству.

Что я могу сделать, чтобы сделать устройство онлайн?

EDIT: Если это имеет значение, виртуальная машина настроена для связи через сеть NAT. Вот как выглядят мои правила переадресации портов: Протокол: TCP

IP хоста: *

Хост-порт: 5555

Гостевой IP: *

Гостевой порт: 5555

EDIT2 Связанный вопрос: Ошибка: устройство отключено

EDIT3: Возможное решение: Выбор устройства Android — Мое устройство кажется офлайн


person stephen    schedule 25.05.2012    source источник
comment
Мне помог этот ответ: stackoverflow.com/a/18904761/436938   -  person Sergey Glotov    schedule 14.08.2014
comment
к сожалению, я потерял контекст по этому поводу, поэтому я не могу проверить, какие ответы будут лучшими.   -  person stephen    schedule 30.08.2020


Ответы (4)


Это намного проще, чем все это, чтобы включить adb через tcpip в эмуляторе терминала виртуальной машины Android:

adb tcpip 5555

Затем для подключения через adb из командной строки на вашем компьютере с Eclipse:

adb connect 192.168.40.1:5555

Теперь виртуальная машина должна быть доступна через устройства adb, а также через представление устройств в Eclipse.

person Justin Buser    schedule 01.09.2012

Когда я начал разрабатывать какое-то приложение для Android, мне пришлось столкнуться с той же проблемой, поэтому, ища что-то, на VirtualBox guide я читал, что NAT не требует никакой настройки в хост-сети и в гостевой системе и для этого причина, это сетевой режим по умолчанию в VirtualBox. Виртуальная машина с включенным NAT действует так же, как реальный компьютер, который подключается к Интернету через маршрутизатор. «Маршрутизатор» в данном случае — это сетевой движок VirtualBox, который прозрачно отображает трафик от виртуальной машины и к ней. В VirtualBox этот маршрутизатор размещается между каждой виртуальной машиной и хостом. Такое разделение повышает безопасность, поскольку по умолчанию виртуальные машины не могут взаимодействовать друг с другом. Недостатком режима NAT является то, что, подобно частной сети за маршрутизатором, виртуальная машина невидима и недоступна из внешнего Интернета. Сетевые кадры, отправляемые гостевой операционной системой, принимаются механизмом NAT VirtualBox, который извлекает данные TCP/IP и повторно отправляет их с помощью операционной системы хоста. Приложению на хосте или другому компьютеру в той же сети, что и хост, похоже, что данные были отправлены приложением VirtualBox на хосте с использованием IP-адреса, принадлежащего хосту. VirtualBox прослушивает ответы на отправленные пакеты, повторно упаковывает и отправляет их на гостевую машину в своей частной сети.
Виртуальная машина получает свой сетевой адрес и конфигурацию в частной сети от DHCP-сервера, встроенного в VirtualBox. IP-адрес, назначенный таким образом виртуальной машине, обычно находится в совершенно другой сети, чем хост. Поскольку виртуальная машина подключена к частной сети, внутренней для Virtual-Box и невидимой для хоста, сетевые службы в гостевой системе недоступны для хост-машины или других компьютеров в той же сети. Однако, как и физический маршрутизатор, VirtualBox может сделать выбранные службы доступными для всего мира за пределами гостя посредством переадресации портов. Это означает, что VirtualBox прослушивает определенные порты на хосте и повторно отправляет все пакеты, которые приходят туда, гостю на тот же или другой порт. Итак, выполнив cmd, перейдите в папку, где установлен VirtualBox и где находится VBManage.exe, и введите это, чтобы применить переадресацию портов TPC:

VBoxManage modifyvm "NameOfYourAndroidVM" --natpf1 adb,tcp,*,5555,*,5555

Теперь вы можете подключиться к своей виртуальной машине через adb с помощью:

adb connect localhost
person Ant4res    schedule 26.05.2012
comment
Кажется нужно убрать пробелы в этой части, иначе VBoxManage выдает ошибку: adb, tcp, *, 5555, *, 5555 - person Josh1billion; 11.07.2012
comment
@Josh1billion Спасибо! Я не заметил, что я неправильно написал пробелы! Я немедленно редактирую свой ответ! - person Ant4res; 15.07.2012
comment
На самом деле пробелы были написаны правильно, их просто не должно было быть :) - person Justin Buser; 01.09.2012

Просто настройте виртуальную машину для использования сетевого режима pridge и включите сервер DHCP в сети.

person Alexandros Mouzakidis    schedule 02.08.2014

Я думаю, что большинство людей уже пробовали это, но в моем случае проблема была решена простым подключением к встроенной точке доступа Wi-Fi VirtualBox под названием «VirtWifi» (которая дает виртуальной машине доступ в Интернет). Все изменения сети моей виртуальной машины по умолчанию, кроме правила переадресации портов 5555. Я виртуализирую Android v9.0 (Pie).

person Pokylate95    schedule 13.04.2020