Android开发wsl直接使用adb方法

前言

因为之前一直使用Mac和Ubuntu系统作为开发环境,对grep,zsh和vim依赖比较重,但是公司要求只能用Windows操作系统,所以使用了WSL2。

当然使用Git for windows也可以解决此问题,不过git for windows的界面就不太舒服了,而且Git for Windows运行比较慢。

在wsl中使用vim和grep都没什么问题,但是有时候需要adb调试的时候想用grep(Android studio中也提供了过滤功能,我个人对grep比较依赖了),所以就找了一下wsl直接使用adb的方式

前提

Windows上adb配置

如果Windows上安装了adb工具,而不是使用的Android sdk自带的,且二者版本不同,那么很可能导致Android studio经常强势以自身为主(Android sdk的版本)启动adb服务,这样会是wsl连接adb出问题。 建议系统不要单独安装adb工具,而是通过配置环境变量的方式引用Android sdk的adb,Android sdk的查找方式Settings -> Languages & Frameworks -> Android SDK,可以看到Android SDK Location,比如C:\Users\test\AppData\Local\Android\Sdk,配置到系统环境变量Path中C:\Users\test\AppData\Local\Android\Sdk\platform-tools\,这样就可以保证和Android studio的adb保持一致

wsl系统安装adb
sql 复制代码
sudo apt update
sudo apt install adb -y

桥接adb

主要有两种方式

  • 使用 USBIPD-WIN 进行 USB 透传
  • ADB 网络桥接

第一种方案会独占控制权,Windows上不可再控制adb,比较适用于刷机和深度驱动开发场景,我只是简单使用Android开发中的基础命令,所以这里只描述第二种方式。

Windows端启动远程监听 -- PowerShell配置(wsl安装依赖)

在PowerShell配置文件中,设置启动命令,打开配置文件输入下面的代码

ps1 复制代码
# 启动adb远程监听
# 用法: 直接在终端输入 adbon 即可
function adbon {
    adb kill-server
    Start-Process "adb" -ArgumentList "-a nodaemon server start" -WindowStyle Hidden
}

之后在Power shell中执行一下命令,是上述代码生效

bash 复制代码
. $PROFILE

这样以后可以开机后在Powershell中通过adbon命令在Windows端启动,这个PowerShell窗口最好不要关闭

WSL端指定server地址

在 WSL 的 ~/.zshrc 或 ~/.bashrc 中(根据wsl使用的是bash - 默认还是zsh)添加以下函数:

bash 复制代码
function winadb() {
    local HOST_IP=$(ip route show | grep default | awk '{print $3}')
    local ADB_PORT=5037

    echo "🔄 正在尝试连接 Windows ADB ($HOST_IP:$ADB_PORT)..."

    # 2. 检查网络连通性 (需要安装 netcat: sudo apt install netcat)
    if nc -z -w 2 "$HOST_IP" "$ADB_PORT"; then
        # 3. 设置环境变量,接管 ADB 指令
        export ADB_SERVER_SOCKET=tcp:$HOST_IP:$ADB_PORT
        echo "✅ 连接成功!"
        echo "📱 设备列表:"
        adb devices
    else
        echo "❌ 连接失败。"
        echo "👉 请在 Windows PowerShell 运行 'adbon' 启动服务。"
        echo "👉 检查 Windows 防火墙是否允许 adb.exe 通行。"
        unset ADB_SERVER_SOCKET
    fi
}

记得执行以下命令

bash 复制代码
source ~/.zshrc
# 或者
source ~/.bashrc

如果Windows上已经通过adbon命令启动了,这里就可以通过winadb启动监听,之后就可以在wsl中正常使用adb功能了

常见问题

  1. 第一次在Windows上执行adbon命令时,可能会因为已经有进程启动了adb,但是没有释放导致启动失败,可以先关闭可能占用adb的应用(比如Android Studio),然后用下面命令终止所有adb进程

    r 复制代码
    taskkill /F /IM adb.exe

    然后用下面命令查看,是否还有端口占用

    yaml 复制代码
    netstat -ano | findstr 5037

    如果没有内容输出或者输出内容最后一列没有为0的就表示可以使用adbon启动Windows端的服务了

相关推荐
PMAOS2 小时前
4G 功能机操作系统选型指南:KaiOS、Mocor、MAUI、PMAOS 的能力边界与验证方法
嵌入式硬件·ai·操作系统
罗四强3 小时前
第10篇:打包上架:签名、打包 HAP、发布到华为应用市场
分布式·操作系统·harmonyos·arkts·鸿蒙系统
Liaiyang662 天前
空圈容错视角-HarmonyOS 7 架构体检:从被动容错到主动免疫的真伪验证与生态反推
操作系统·harmonyos·架构设计·ai-agent·端云协同·鸿蒙7·空圈容错
OpenAnolis小助手2 天前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
阿里云基础软件2 天前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
OpenAnolis小助手3 天前
多租户公有云共享 CXL 内存池场景下的内存卸载研究
人工智能·操作系统·龙蜥社区·risc-v·agentic os
OpenAnolis小助手6 天前
PHP 两个严重漏洞曝光,龙蜥社区 24 小时完成 3 版本修复
开发语言·操作系统·php·龙蜥社区
硅基手札6 天前
操作系统设计思想系列 13 · NuttX 深度 — POSIX 飞控底座 + RTOS 群像
架构·操作系统·嵌入式开发·ecos·sel4·nuttx
2CM_Embed7 天前
μC/OS-II 任务管理详解(三):任务创建、任务栈、删除、优先级修改与挂起恢复
操作系统
硅基手札7 天前
操作系统设计思想系列 11 · ThreadX 深度 — 预抢占阈值·认证型设计
操作系统·开源项目·嵌入式开发·嵌入式操作系统·设计思想·threadx