Utiliser l’ADB de Windows depuis WSL2

Introduction

WSL2 (Windows Subsystem for Linux 2) est une excellente solution pour les développeurs souhaitant exécuter un environnement Linux sur Windows. Cependant, l’utilisation d’ADB (Android Debug Bridge) sous WSL2 peut être problématique, car l’instance de WSL2 ne peut pas directement accéder aux ports ouverts par ADB sur Windows.

Dans cet article, nous allons voir comment configurer WSL2 pour qu’il utilise l’ADB de Windows, permettant ainsi de déboguer et interagir avec des appareils Android connectés via USB.


1. Pré-requis

  • WSL2 installé : Si ce n’est pas encore fait, suivez la documentation officielle de Microsoft pour installer WSL2 : WSL Docs
  • ADB installé sur Windows : Vous pouvez télécharger les Android SDK Platform Tools depuis le site officiel : Android Developer Platform Tools

Vérifiez que adb.exe est accessible via la variable PATH de Windows.

  • USB Debugging activé sur votre appareil Android : Assurez-vous que le mode développeur et le débogage USB sont activés.

2. Configurer Windows pour exécuter ADB

  • Ouvrez un terminal cmd ou PowerShell et exécutez :
adb kill-server
adb -a -P 5037 nodaemon server start
  • Cela assure que le serveur ADB tourne sur toutes les interfaces réseau de Windows, y compris celle accessible depuis WSL2.
  • Vérifiez que votre appareil est détecté : adb devices Vous devriez voir une liste des appareils connectés.

3. Configurer WSL2 pour utiliser le serveur ADB de Windows

L’idée est de faire pointer WSL2 vers le serveur ADB de Windows en récupérant dynamiquement l’adresse IP de l’hôte Windows.

Détection automatique de l’IP de Windows

Dans WSL2, exécutez la commande suivante pour obtenir l’IP de Windows :

ip route | awk '/^default via / {print $3}'

Ajoutez maintenant ces lignes à votre ~/.bashrc ou ~/.zshrc pour que la connexion soit automatique à chaque démarrage :

# Détecter automatiquement l'adresse IP de l'hôte Windows
export WSL_HOST_IP=$(ip route | awk '/^default via / {print $3}')
export ADB_SERVER_SOCKET="tcp:$WSL_HOST_IP:5037"

Rechargez le fichier de configuration :

source ~/.bashrc  # ou source ~/.zshrc si vous utilisez zsh

4. Vérifier la connexion ADB depuis WSL2

Maintenant que tout est configuré, testons la connexion :

adb devices

Vous devriez voir la liste des appareils détectés, ce qui signifie que WSL2 communique correctement avec ADB sous Windows.


5. Dépannage

Si l’appareil ne s’affiche pas, essayez les solutions suivantes :

  • Vérifiez que le serveur ADB tourne bien sur Windows :
adb kill-server
adb -a -P 5037 nodaemon server start
  • Redémarrez ADB sur WSL2 :
adb kill-server
adb start-server
  • Assurez-vous que l’IP récupérée par WSL2 est correcte :
echo $WSL_HOST_IP
  • Testez ensuite la connexion directe :
nc -zv $WSL_HOST_IP 5037
  • Si la connexion échoue, vérifiez votre pare-feu Windows.

Conclusion

En suivant ces étapes, vous pouvez désormais utiliser ADB sous WSL2 tout en profitant des outils et scripts disponibles dans votre environnement Linux. Cette configuration est idéale pour les développeurs Android qui souhaitent travailler dans un environnement UNIX sans perdre l’accès aux outils Windows.

Avec cette approche, plus besoin d’installer ADB sous WSL2 ni de configurer des accès USB complexes. Vous avez maintenant un environnement de développement Android fluide et fonctionnel sous WSL2 ! 🚀