关于WSL中adb不能正常使用的问题

关于WSL中adb不能正常使用的问题

问题描述

最近遇到一个很抓狂的事情,我在Windows中和WSL中都安装了Android-platform-tools(其中也就包含了adb),但是Windows种的adb能用,而wsl中的adb检测不到机器。

Windows中是通过下载最新的tools到某个文件夹,再指定环境变量的方式来配置的。

在配置Windows这边的tools之前,wsl中的是可以正常使用的,即使我安装了Android Studio。但是配置Windows的之后,就遇到这种问题了。Windows这边能正常检测机器,但是wsl这边不能检测到。

倒也不是说Windows的不能用,只是Windows的shell着实差点意思,比如输入adb之后,再tab补齐啥的。

关于网上的说法

问题所在其实网上很多已经说了,就是因为两边的adb版本不一致导致的。但是他给出的解决方案是用apt更新tools。

其实根本没有用,因为apt里面的tools更新得不如谷歌官网快(现在apt还留在1.0.3x的版本吧,连无线调试都不支持)。而且版本要求非常严格,如下:
关于WSL中adb不能正常使用的问题
关于WSL中adb不能正常使用的问题
像这样,都是1.0.41,但是下面得version不一致,都是不行的。

另外一种直接在wsl中调用exe的方法太麻烦了。

解决办法

所以只能同时更新两边的platform-tools来解决这个问题(linux不能用apt)。注意必须一起更新,隔几天版本的小编号可能就变了。

Windows下的更新

我各人比较推荐的办法就是我上面说的那种,放到一个目录下,然后指定环境变量,这样可以直接在终端调用,不用每次进到文件夹。
下载地址:platform-tools-latest-windows.zip
解压到某个目录,然后把目录地址保存到环境变量中。(简单一下环境变量配置方法,也不啰嗦了)
关于WSL中adb不能正常使用的问题

WSL下的更新

  • 安装这一部分参考了知乎叶铁柱师傅的方法:Linux系统的adb版本升级
  • 先要移除apt安装过的platform-tools,直到你输入adb他告诉你没有这个命令才进行下一步安装。
    移除命令的话就是apt remove xxx,我记得我移除了三个,android-sdk-platform-toolsandroid-sdk-platform-tools-commonandroid-libadb
  • 依次执行以下命令:
# 创建并进入Android文件夹,这里的创建路径可以按照你自己的想法来
mkdir ~/Android && cd ~/Android
# 获取最新的tools的zip包,放到当前目录
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip 
# WSL默认没安装unzip,解压缩之前自己apt安装一下
sudo apt install unzip # 本来就安装了的话则跳过
# 解压缩
unzip platform-tools-latest-linux.zip
# 写入命令别名,并更新命令
# 如果用的zsh终端就把.bash_aliases改成.zsh_aliases
echo "alias adb='~/Android/platform-tools/adb'" >> ~/.bash_aliases && source ~/.bash_aliases
echo "alias fastboot='~/Android/platform-tools/fastboot'" >> ~/.bash_aliases && source ~/.bash_aliases

结果

WSL中
关于WSL中adb不能正常使用的问题
Windows中
关于WSL中adb不能正常使用的问题
至此,两边版本号完全相同,且都能识别到Android机器。

上一篇:Ubuntu安装VMware tools后不起作用


下一篇:EF Core 迁移过程遇到EF Core tools version版本不相符的解决方案