如何将在 WSL2 中运行的 Android Studio 与连接的设备或在主机上运行的 Android 模拟器连接起来

pap*_*adi 7 adb android-emulator android-studio windows-subsystem-for-linux wsl-2

我在 WSL 2 (Windows 10 2004) 的 Ubuntu 18.04 下运行 Android Studio(当前版本为 3.6.1),现在支持 GUI。由于 WSL2 内的虚拟化不起作用,我需要继续在主机上运行我的模拟器,当然,用于调试我的 android 应用程序的连接设备出现在主机上。

Android Studio 如何看到主机上出现的模拟器和设备?

Pat*_*nny 16

这是我根据这篇 Medium 帖子必须做的事情。

  1. 在Windows上安装Android Studio(获取SDK,也可以通过其他方式安装SDK)。
  2. 添加adb到 Windows 上的环境变量。在文件资源管理器中,右键单击This PC,然后选择Advanced system settings,然后在系统变量Environment Variables. 下查找,单击,然后选择。添加此路径:. 确保更改“我的用户名”。PathEditNewC:\Users\MYUSERNAME\AppData\Local\Android\Sdk\platform-tools
  3. 在 WSL2 中安装 Android SDK。在 Android Studio 的 SDK 管理器中,确保您安装了支持您手机的 SDK(我有一台旧手机,需要旧版 SDK)。
  4. 在 WSL2 中,添加adb到您的 PATH。 您需要确保adb在 Windows 和 Linux 上使用相同版本的 Android Studio,这就是我在两者上安装最新 Android Studio 的原因。 就我而言,我添加alias adb='/home/MYUSERNAME/Android/Sdk/platform-tools/adb'到了我的.bashrc.
  5. 确保您的手机已通过 USB 连接到 PC,然后您已设置 USB 调试。
  6. 在 Windows 上的 Powershell 中,运行adb devices. 确保该设备在那里。
  7. 在 Windows 上的 Powershell 中,运行adb tcpip 5555.
  8. 在 WSL2 终端中,运行adb devices. 您还不会看到任何设备,但这将会启动adb
  9. 获取您手机的 IP 地址。您可以从Settings-> About phone-> Status->执行此操作IP address。它可能会是这样的192.168.0.10n
  10. 在 WSL2 终端中,运行adb connect PHONE_ID:5555.
  11. 系统将提示您确认手机上的连接。去做。
  12. adb可能会因为连接确认而失败。adb kill-server在 WSL2 终端中运行,然后运行adb connect PHONE_ID:5555​​.
  13. 如果 Android Studio 在 WSL2 中打开,请将其关闭,然后再次打开。

最后您的设备可以调试了!


小智 7

连接的设备是有办法的,但是这个得一一做:

  1. 在 Windows 上:adb tcpip 5555
  2. 在 wsl2 上: adb connect [ip device]:5555

在 android studio 中你应该看到设备


Neb*_*l22 6

ADB over TCP 不适合我。在有效的WSL GitHub 问题中找到了此解决方法,在此处添加了一些额外详细信息的步骤:

(1) 在 WSL 中,添加以下内容~/.bashrc

export WSL_HOST_IP="$(tail -1 /etc/resolv.conf | cut -d' ' -f2)"
export ADB_SERVER_SOCKET=tcp:$WSL_HOST_IP:5037
Run Code Online (Sandbox Code Playgroud)

(2)添加Windows防火墙规则

  • 打开 Windows Defender 防火墙并转到高级设置。
  • 右键单击“入站规则”,然后单击“新建规则”
  • 选择“端口”,然后选择特定 TCP 端口“5037”,然后选择“允许连接”
  • 根据您的 Internet 连接需要检查“域”、“专用”和“公共”(我只添加了“域”和“专用”)
  • 为规则命名任何适合您的内容
  • 添加防火墙条目后,右键单击它并转到属性
  • 转到范围 -> 远程 IP 地址 -> 添加“172.16.0.0/12”(这是 WSL VM 子网)

(3) 启动ADB Server(使用特定参数使其监听所有地址)

  • 创建一个 VBS 脚本(例如"C:\Users\user\Documents\Development\wsl_adb_start.vbs")并将以下内容放入其中:
    CreateObject("WScript.Shell").Run "adb.exe kill-server", 0, True
    CreateObject("WScript.Shell").Run "adb.exe -a -P 5037 nodaemon server", 0, True
    
    Run Code Online (Sandbox Code Playgroud) 注意:这假设 adb 在您的路径上。如果没有,请添加完整路径(通常类似于%USERPROFILE%\AppData\Local\Android\Sdk\platform-tools\adb.exe
  • 通过打开 powershell 并执行: 来运行脚本WScript "C:\Users\shuba\Documents\Development\wsl_adb_start.vbs"
  • (重新)启动 WSL

VBS 脚本调用是每次启动时必须执行的唯一步骤:您的 WSL VM 将连接到主机 ADB 实例。之后,启动 WSL 并享受吧!