J'essaie de faire fonctionner mono pour Android (alias monodroid) au sein d'une machine virtuelle Windows 7 sur virtualbox, mais j'ai des problèmes avec la connexion adb à mon téléphone. Lorsque je lance "adb devices" pour répertorier les périphériques présents, aucun problème ne se présente, mais lorsque j'essaie d'exécuter "adb install", logcat ou Push it se bloque. Actuellement, il y a un bogue dans virtualbox qui s'applique à cela, mais j'espérais qu'une personne plus informée que moi aurait une solution de contournement.
https://www.virtualbox.org/ticket/6620
Bien sûr, cela poserait un problème si Xamarin publiait un port Linux de son produit ou si je connaissais Java, mais je suppose que ce sont des problèmes légèrement différents.
Brian, une solution de contournement que vous pourriez envisager consiste à faire de votre VM hôte également un hôte ADB. Ensuite, vous pouvez simplement connecter votre client VM à ce dernier via TCP/IP. Voici l’idée générale pour cette configuration:
adb
.adb kill-server
. Faites-en un tskill adb
pour plus de certitude. Si vous avez des instances en cours d'exécution d'Eclipse, vous devrez les fermer d'abord car cela lancera adb
en arrière-plan. Ne sautez pas cette étape.Depuis l'hôte, exécutez adb devices
. Si tout se passe bien (et il le devrait), votre appareil sera répertorié. Cela devrait ressembler à quelque chose comme ça (notez le numéro de port et désolé pour le brassage):
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
015d2994ed200409 device
À ce stade, votre hôte doit disposer d'un serveur ADB fonctionnant sur le port 5037. Vous pouvez le vérifier à partir du client VM en exécutant telnet 10.0.2.2 5037
, où 10.0.2.2
est l'adresse IP par défaut des hôtes VirtualBox et 5037
est le port ADB par défaut. Noté ci-dessus.
Maintenant, vous devez soit transférer les ports de votre hôte vers votre client VM, soit connecter ADB directement à votre hôte IP: port. Si vous êtes comme moi, vous constaterez que les variables ADBHOST et Android_ADB_SERVER_PORT sont mal documentées et faciles à gâcher. Pour cette raison, envisagez le transfert de port simple au-dessus de ssh
(peut-être via Cygwin) de la même manière à partir du client VM:
autossh -nNL5037:localhost:5037 -oExitOnForwardFailure=yes 10.0.2.2
Enfin, exécutez adb devices
à partir de votre client VM. Si vous voyez "le démon ne fonctionne pas", cela signifie que votre fowarding de port est foutu. Sinon, vous devriez voir votre appareil et pouvoir vous connecter toute la journée. Il convient de noter qu’un démon adb
ne sera pas exécuté sur votre client VM, sauf lorsque vous utilisez réellement le pont de débogage.
J'ai utilisé un mécanisme similaire pour le débogage de périphériques connectés au réseau sur des ordinateurs distants et cela a bien fonctionné.
Vous ne savez pas ce qui a changé dans VirtualBox depuis que la question a été posée, mais la sélection du périphérique USB dans le menu Périphériques de VirtualBox/- Périphériques -> USB -> Nom du périphérique s'est déroulée de manière transparente. Je travaille sur VirtualBox 5.1.2 r108956.
J'ai eu le même problème et cela m'a fait chercher pendant environ 2 heures. J'ai essayé plusieurs approches incluant toutes les solutions ci-dessus mais aucune d'entre elles n'a fonctionné.
Ma situation
Mon hôte était archlinux et l'invité était Windows 8.1. J'exécutais Flash Builder dans Windows, mais le débogage USB ne fonctionnait pas et mon appareil connecté était Nexus 5. J'ai donc suivi ces étapes.
Dans mon cas, je devrais copier les pilotes sur le chemin des pilotes Android de flashbuilder mais peut-être que dans votre cas, cela n'est pas nécessaire.
J'ai eu le même problème avec VirtualBox 5.0.14 et la solution fournie par Stephen Niedzielski ne fonctionnait pas pour moi. Si quelqu'un est toujours intéressé, vous pouvez essayer cette solution.
Mon environnement est:
Démarrez un point d'accès wifi dans l'hôte OS et connectez-y le périphérique Android, ou connectez les deux à l'aide d'un routeur. Dans virtualbox, définissez le mode réseau pour le système d'exploitation invité sur «Adaptateur ponté», puis sélectionnez le nom de l'adaptateur Wifi. De cette manière, l'OS hôte et le périphérique Android sont sur le même réseau.
Ensuite, dans l'appareil Android, activez le "Mode développeur" et activez "ADB sur le réseau", fourni par Cyanomodgen. (Pour les appareils dotés de la version d'origine d'Android, utilisez Google si possible sur ADV via le réseau.) Dans l'hôte OS, exécutez 'adb kill-server' et assurez-vous qu'aucune instance d'ADB n'est en cours d'exécution. Ensuite, exécutez la commande 'adb connect 192.168.2.12', ip du périphérique Android.
Félicitations :) Maintenant, vous êtes en mesure d'utiliser ADB avec un appareil Android pour prendre des fichiers logcat ou pull et push.
J'avais aussi des problèmes avec ADB sur VM. J'avais un hôte Windows 10 et un client Ubuntu 14.04. La méthode autossh
n'a pas fonctionné pour moi. J'ai trouvé une solution plus facile à partir d'une autre question StackOverflow . Cela nécessite que votre PC et votre appareil soient sur le même réseau WiFi.
Sur votre VM client, exécutez la commande suivante: adb tcpip 5555
Le périphérique se déconnectera de la VM car ADB est maintenant en mode TCP Au lieu du mode USB.
Pour la partie suivante, vous avez besoin de l'adresse IP de Votre appareil. Pour le trouver, lancez simplement adb Shell ip -f inet addr show wlan0
Vous pouvez maintenant vous connecter à votre appareil. Sur votre client VM, exécutez:
adb connect <Device IP>:5555
À partir de là, toutes mes sessions adb Shell, logcat et singe se sont déroulées sans interruption!