ubuntu 多个ADB冲突问题

问题现象

安装应用失败,卡界面 Performing Streamed Install

image-20240926103812279

起因

Ubuntu系统重装后,通过命令安装一个adb版本

sudo apt update
sudo apt upgrade
步骤2.在Ubuntu 20.04上安装ADB和Fastboot。
运行以下命令以在Ubuntu系统上安装ADB Fastboot二进制文件:
sudo apt install android-tools-adb
sudo apt install android-tools-fastboot
您可以使用以下命令检查ADB版本:
$ adb version
Android Debug Bridge version 1.0.46
Revision 1:7.0.0+r35-2

安装Android studio会默认下载SDK,默认自带ADB,目录为 /home/zbc/Android/Sdk/platform-tools/adb

Android studio运行后,会默认拉起SDK目录下的adb

但是控制台上的adb是系统adb,位于

执行前

执行后

当前界面

系统卡在 Performing Streamed Install

主要的问题点是,系统原有adb已经占用了adb默认端口,后启动的adb无法通过这个端口进行通讯。导致通讯失败。

解决方案

cd /usr/bin  
 
sudo rm adb
 
 
//建立软连接到SDK adb
sudo ln -s SDK/{adb} adb

参考:

软连接:类似快捷方式。注意必须写绝对路径,否则cp后会出错。可以跨文件系统、能连接到目录
硬连接:指向相同的inode。不可以跨文件系统、不能连接到目录
 
创建软连接:ln -s(必须) 源文件绝对路径 连接文件名
 
创建硬连接:ln 文件路径 连接文件名
 
查看inode信息:ll -i 文件名
 

ADB 调试

https://blog.csdn.net/weixin_38140931/article/details/104027961

问题现象 ADB 报错端口被占用

adb devices
// 报错如下,ADB 被占用
adb: failed to check server version: protocol fault (couldn't read status): Connection reset by peer

主要问题是设备电脑ADB 端口5037被占用导致的,需要杀死占用端口的进程即可

检查并结束占用 5037 端口的进程

  • 打开命令提示符或终端,运行以下命令以查找占用 5037 端口的进程:CSDN Blog+1CSDN Blog+1

    • Windows:

      nginx
       
      netstat -aon | findstr "5037"
    • macOS/Linux:

      css
       
       
      lsof -i :5037

  • 找到占用该端口的进程后,记下其 PID(进程 ID)。

  • 结束该进程:CSDN Blog

    • Windows:

      php-template
      
      
      taskkill /PID <PID> /F
      
    • macOS/Linux:

      kill -9 <PID>
      
    • 重新执行adb命令可以解决问题

如果有需要可以

更改 ADB 端口号

  • 如果无法结束占用端口的进程,您可以尝试将 ADB 的端口号更改为其他未被占用的端口,例如 5556:

    yaml
    
    
    复制编辑
    adb tcpip 5556
    
  • 然后,使用以下命令连接设备:

    arduino
    
    
    复制编辑
    adb connect <设备 IP 地址>:5556