J'essaie d'utiliser adb sur 'wifi' pour mon appareil émulé. Je suis en train d'émuler un appareil sur mon ordinateur et je voulais utiliser Android Studio pour lui envoyer un APK, mais via les prises réseau, et non via l'USB émulé. Je sais qu'avec Android Studio, tout fonctionne, mais j'ai besoin de le faire de cette manière.
Je suis ce tutoriel : https://developer.Android.com/studio/command-line/adb.html#wireless
Je commence par
~/Android/Sdk/emulator$ ./emulator -avd Pixel_XL_API_27
Ensuite, je vois que le débogage USB est activé. Je fais alors
./adb tcpip 5555
restarting in TCP mode port: 5555
Notez que . /adb tcpip 5555
est arbitraire. Je n'ai même pas spécifié quel appareil devait redémarrer et se connecter à 5555. Et si j'avais 2 émulateurs en marche ?
Je devrais débrancher maintenant pour un périphérique USB normal, mais je vais dans les options du développeur dans mon téléphone émulé et je désactive le débogage USB.
Je vois également que l'adresse IP dans les paramètres du système téléphonique émulé est 192.168.232.2
alors je me retrouve avec :
./adb connect 192.168.232.2
unable to connect to 192.168.232.2:5555: Connection timed out
J'ai aussi fait ça :
./adb devices
List of devices attached
emulator-5554 device
./adb connect 192.168.232.2:5554
unable to connect to 192.168.232.2:5554: Connection timed out
UPDATE :
Selon Tutoriel Android sur ADB Sur mon ordinateur, un serveur fonctionne sur le port 5037. L'appareil Android (mon émulateur dans ce cas) exécute un démon et mon script adb dans Sdk/platform-tools est un client. Si je veux exécuter un client dans ma machine virtuelle, je dois avoir un serveur qui tourne dessus. Mais à la place, je peux simplement transférer le port TCP 5037 de la VM vers le port TCP 5037 de la machine hôte. Je l'ai fait avec tcptunnel en procédant comme suit :
./tcptunnel --local-port=5037 --remote-host=192.168.122.1 --remote-port=5037 --stay-alive
alors si je lance adb sur ma VM, il va se connecter au démon adb sur ma machine hôte qui va parler avec le serveur adb de mon émulateur. Quand je lance adb devices
dans la VM sans le forward tcp, il essaie de démarrer un nouveau serveur. Si je tue ce serveur et ouvre le tcpforwarded et recommence, il n'essaie pas de créer un nouveau serveur. C'est un bon signal. Cependant, tcptunnel me donne ceci :
build_tunnel: connect(): Connection refused
Quelque chose bloque la connexion
UPDATE 2 :
Il s'avère que tcptunnel n'est pas nécessaire, parce que adb
a le H
qui me permet de spécifier l'IP où le serveur fonctionne. Cependant, je ne sais pas s'il est possible de la spécifier dans Android Studio. Quoi qu'il en soit :
./adb -H 192.168.122.1 devices
List of devices attached
* cannot start server on remote host
error: cannot connect to daemon at tcp:192.168.122.1:5037: Connection refused