Je me rends compte que cette question est vraiment ancienne, mais j'ai résolu le problème légèrement différemment, et il m'a fallu un certain temps pour trouver cette solution triviale.
J'utilise généralement un PC ou un ordinateur portable Windows7 (selon l'endroit où je travaille) comme frontal parce que j'aime l'interface graphique, mais je préfère faire tout mon éditer / compiler / déboguer sur un serveur Ubuntu sans tête à cause de tous les puissance de ligne de commande qu'il fournit. Mon objectif est de faire de chaque système Windows un client léger autant que possible sans services supplémentaires (tels que sshd) ou trous de pare-feu.
Voici donc le senario:
- System-A: système Windows7 avec émulateur Android en cours d'exécution
- System-B: serveur Ubuntu avec SDK installé
Le problème, comme décrit précédemment, est que l'émulateur sur System-A se lie à localhost, pas à l'interface Ethernet externe, donc adb sur System-B ne peut pas accéder à l'émulateur sur System-A. Tout ce que vous avez à faire est de configurer la redirection de port distant dans PuTTY pour votre connexion SSH à System-B. L'astuce consiste à cocher le bouton radio "Remote" lorsque vous créez les deux tunnels afin que la direction du tunnel soit inversée (tunnel du serveur auquel vous vous connectez au client à partir duquel vous vous connectez).
Enfin, connectez-vous avec adb à "localhost" sur System-B après avoir établi la connexion SSH:
System-B$ adb connect localhost
connected to localhost:5555
System-B$ adb devices
List of devices attached
localhost:5555 device
Maintenant, vous pouvez télécharger des images / déboguer comme d'habitude, et il est trivial de passer à un autre système Windows si vous voulez sortir votre ordinateur portable et prendre un café.
En outre, en tunnelant également le port 5037 de la même manière, vous pouvez réellement transférer votre connexion au serveur adb afin de pouvoir connecter un véritable appareil Android via USB sur System-A et y télécharger des images à partir de System-B. Pour que cela fonctionne, vous devez vous assurer que le serveur adb fonctionne sur System-A et non sur System-B avant de démarrer votre session SSH:
Tout d'abord, démarrez le serveur adb sur System-A (invite de commande)
C:\> adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
C:\> adb devices
List of devices attached
3435F6E6035B00EC device
Ensuite, tuez le serveur adb sur System-B
System-B$ adb kill-server
Enfin, redémarrez votre session ssh sur System-B et vérifiez
System-B$ adb devices
List of devices attached
3435F6E6035B00EC device