Как запустить Android-приложение из виртуальной машины

Для начала, при подключении кабеля телефона к ПК нужно выбирать Режим USB-подключения типа Медиаустройство (MTP). Далее нужно зайти в настройки телефона по адресу Settings > About Phone и семь раз нажать на Build Number. Это откроет Настройки разработчика в которых нужно включить Отладку по USB.

Обязательно для прочтения:
https://developer.android.com/studio/command-line/adb.html

Способ 1. Через USB и VritualBox

Для начала нужно добавить своего пользователя в группу vboxusers:
$ sudo usermod -a -G vboxusers <username>
В противном случае VirtualBox не будет видеть подключенных Android-устройств.


Способ 2. Через беспроводную сеть

When connected via USB: adb tcpip 5555. Disconnect USB, view phone IP from Settings > About Phone > Status. Now adb connect 192.168.x.x and that's it. No tools, no software. Just Works.

Чтобы отключить надо дать команду:
$ adb usb
Тогда возвращаемся снова в режим USB.

Справка по командам:

adb tcpip port
На сайте:
Restart the adb server listening on TCP at the specified port.
A server, which manages communication between the client and the daemon.
The server runs as a background process on your development machine.

В страницах man:
Restarts the adbd daemon listening on TCP on the specified port.
A daemon (adbd), which runs commands on a device.
The daemon runs as a background process on each device.

По-моему тут есть ошибка в документации. Скорее всего речь идет об adbd работающем на Android-устройстве, а не о adb-сервере работающем на машине разработчика. Или может быть речь идет о том чтобы запустить adb-сервер на устройстве? Неразбериха какая-то. 


adb tcpip 5555
Set the target device to listen for a TCP/IP connection on port 5555.


adb usb
На сайте:
Restart the adb server listening on USB.

В страницах man:
Restarts the adbd daemon listening on USB.


adb connect host[:port]
Connect to the device by its IP address.
adb connect подключается к устройству по TCP/IP. По умолчанию используется порт 5555.


Способ 3. Через SSH

Host

На хосте нужно вызвать демона adb:
$ adb devices
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

или второй вариант:
$ sudo adb start-server

Guest

Далее проверяем подключение к демону на хосте:
$ telnet 10.0.2.2 5037

На гостевой машине нужно напротив убить демона adb:
~/Android/Sdk/platform-tools/adb kill-server
$ killall adb

Посмотрим адрес хоста:
$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG        0 0          0 enp0s3
10.0.2.0        0.0.0.0         255.255.255.0   U         0 0          0 enp0s3
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 enp0s3

Делаем проброс порта (для этого на хосте должен быть установлен SSH-демон):
$ autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2


--
Смотрите также: