小工具知识网

当前位置: 首页 > 行业知识 > 【一文秒懂】Linux ADB调试环境搭建指南

行业知识

【一文秒懂】Linux ADB调试环境搭建指南

2026-11-05 07:53:43 来源:互联网转载
我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和系统开发,曾就职于世界500强公司! 创作理念:专注分享高质量嵌入式文章,让大家读有所得!

文章目录

  • 【一文秒懂】Linux ADB调试环境搭建指南
    • 1、ADB介绍
    • 2、ADB架构及组成
    • 3、环境搭建
      • 3.1 主机端安装
      • 3.2 客户端安装
      • 3.3 内核支持
      • 4、如何使用
        • 4.1 USB连接
        • 4.2 无线连接
        • 5、常用命令
        • 6、总结

          【一文秒懂】Linux ADB调试环境搭建指南

          1、ADB介绍

          ADB:Android Debug Bridge,安卓调试桥,是用的最多的一种命令行工具,它能够在电脑端和安卓支持的设备端进行通信,其通信方式有两种:USB或者TCP/IP。

          它能够支持多种设备端的操作,包括:网络,脚本,安装和调试应用,文件传输等,同时也支持访问unix shell。

          adb命令行工具,随着安卓SDK平台工具一起发布,是安卓SDK的一个组件。

           

          2、ADB架构及组成

          它是一个C/S(client-server)架构的应用程序,由三部分组成:

          • adb client:运行在PC上,你能够运行adb命令来执行它。
          • adb daemon:守护进程,运行在设备端的后台
          • adb server:服务进程,运行在PC,管理adb client和adb daemon之间的通信

             

            server与client通信的端口是5037,adb server与emulator交互时使用的端口有两个:

            • 5554:专门用于与Emulator实例的连接
            • 5555:专门用于与daemon连接

               

              3、环境搭建

              3.1 主机端安装

              • 如果你的主机端是linux,则
                sudo apt install adb
                • 如果你的主机端为windows,则需要下载安装包:【adb】,安装完后,可以在当前路径下运行,也可以加入环境变量中,【安装文档】

                   

                  下文以linux系统为例,安装完毕后,可以查看版本信息:

                  [donge@ubuntu ~/]$ adb versionAndroid Debug Bridge version 1.0.39Version 1:8.1.0+r23-5~18.04Installed as /usr/lib/android-sdk/platform-tools/adb

                   

                  3.2 客户端安装

                  如上图所示,需要在客户端安装adbd的守护进程,来与PC端的adb server通信。

                  adbd的软件包获取:

                  • buildroot构建工具:通过选择android tools->adbd来直接编译得到
                    BR2_PACKAGE_ANDROID_TOOLS_ADBD=y
                    • 还有一种方式:精简版adbd软件包(放到软件仓库了)

                      编译完成之后,直接将该工具放到系统开发板上,保持后台运行即可。

                       

                      3.3 内核支持

                      adbd支持两种通信方式,一种是USB,一种是TCP,所以我们内核必须支持所需的通信协议。

                      不同的开发板,厂商驱动代码不同,配置多多少少也会有差异,以下仅作参考:

                      USB配置如下:

                      # 必选CONFIG_USB_GADGET=y# 作为USB从机,也就是设备端CONFIG_USB_XXX_UDC=y# USB控制器驱动,根据厂商选择CONFIG_USB_CONFIGFS=y# USB配置文件系统,通过文件来配置功能CONFIG_USB_CONFIGFS_F_FS=y# USB功能文件系统,启用USB 功能文件系统支持# 可选的一些功能CONFIG_USB_CONFIGFS_ACM=y# 一种USB设备模式,用于模拟串口设备的通信。CONFIG_USB_CONFIGFS_MASS_STORAGE=y# USB大容量存储功能

                      内核配置打开后,一定不要忘了在dts设备树中打开USB配置。

                       

                      4、如何使用

                      我们想要使用adb,首先需要在开发板上启动adbd后台进程,adbd与主机端的adb通信是通过USB或者Tcp/Ip的,所以就需要提前配置。

                      4.1 USB连接

                      USB通常是通过configfs来配置USB各种功能的,以下为一个示例:

                      #!/bin/shcase "" in  start)    test -d /sys/kernel/config || mkdir /sys/kernel/config    mount -t configfs none /sys/kernel/config    mkdir /sys/kernel/config/usb_gadget/g1    cd /sys/kernel/config/usb_gadget/g1    echo 0x2207 > idVendor    echo 0x0006 > idProduct    mkdir strings/0x409    echo 0123456789ABCDEF > strings/0x409/serialnumber    echo "rockchip" > strings/0x409/manufacturer    echo "rk30xx" > strings/0x409/product    mkdir configs/b.1    mkdir configs/b.1/strings/0x409    echo "adb" > configs/b.1/strings/0x409/configuration    #echo "Conf 1" > configs/b.1/strings/0x409/configuration    #echo 120 > configs/b.1/MaxPower    cur_path=`pwd`    mkdir -p $cur_path'/functions/ffs.adb'    ln -s /sys/kernel/config/usb_gadget/g1/functions/ffs.adb /sys/kernel/config/usb_gadget/g1/configs/b.1/ffs.adb    mkdir -p /dev/usb-ffs/adb    mount -o uid=2000,gid=2000 -t functionfs adb /dev/usb-ffs/adb    cd /    adbd &    UDC=`ls /sys/class/udc/| awk '{print }'`    sleep 1 && echo $UDC > /sys/kernel/config/usb_gadget/g1/UDC &    ;;  stop)    echo none > /sys/kernel/config/usb_gadget/g1/UDC    ;;  restart|reload|force-reload)    echo "Error: argument '' not supported" >&2    exit 3    ;;  *)    echo "Usage: adbd start|stop" >&2    exit 3    ;;esac

                      上面是一个示例,如果调起来比较困难,也可以在资料库中直接获取最简单的adb配置。

                       

                      更多干货可见:高级工程师聚集地,助力大家更上一层楼!

                       

                      后台USB配置成功后,可以直接启动adbd服务。

                      # adbd &# 下面是打印信息install_listener('tcp:5037','*smartsocket*')[  215.019821] read descriptorscannot bind 'tcp:5037'warnning! use usb only[  215.026174] read stringsadbd may crashUsing USB

                      表示不能够绑定到tcp,指定用usb

                       

                      4.2 无线连接

                      这种方式,需要你的设备端连接到网络,通常使用WiFi来连接,连接成功后查看服务器和设备端的IP地址,如下:

                      • 设备端:
                        # ifconfigwlan0     Link encap:Ethernet  HWaddr 9C:84:B6:62:9F:54            inet addr:192.168.50.136  Bcast:192.168.50.255  Mask:255.255.255.0          inet6 addr: fe80::9e84:b6ff:fe62:9f54/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:3247 errors:0 dropped:286 overruns:0 frame:0          TX packets:320 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000           RX bytes:409353 (399.7 KiB)  TX bytes:31375 (30.6 KiB)
                        • 主机端尝试ping设备端的IP地址,ping通即可保证链路正常。
                          dong@ubuntu:~$ ping 192.168.50.136PING 192.168.50.136 (192.168.50.136) 56(84) bytes of data.64 bytes from 192.168.50.136: icmp_seq=1 ttl=128 time=18.5 ms64 bytes from 192.168.50.136: icmp_seq=2 ttl=128 time=8.04 ms
                          • 查看设备端监听的端口
                            # netstat -anActive Internet connections (servers and established)Proto Recv-Q Send-Q Local Address           Foreign Address         State       tcp        0      0 0.0.0.0:5555            0.0.0.0:*               LISTEN      Active UNIX domain sockets (servers and established)Proto RefCnt Flags       Type       State         I-Node Pathunix  3      [ ]         DGRAM                        50 /dev/logunix  2      [ ]         DGRAM                     17723 /var/run/wpa_supplicant/wlan0unix  2      [ ACC ]     SEQPACKET  LISTENING      11722 /run/udev/controlunix  2      [ ACC ]     STREAM     LISTENING      11023 @jdwp-controlunix  3      [ ]         STREAM     CONNECTED      11020 unix  3      [ ]         DGRAM                     10422 unix  3      [ ]         DGRAM                     10421 unix  3      [ ]         STREAM     CONNECTED      11024 unix  3      [ ]         STREAM     CONNECTED      11025 unix  3      [ ]         STREAM     CONNECTED      11021 unix  3      [ ]         STREAM     CONNECTED        838 unix  2      [ ]         DGRAM                        53 unix  3      [ ]         STREAM     CONNECTED        837 
                            • 主机端连接
                              dong@ubuntu:~$ adb connect 192.168.50.136:5555connected to 192.168.50.136:5555
                              • 查看adb设备
                                dong@ubuntu:~$ adb devicesList of devices attached192.168.50.136:5555     device

                                到此即为连接成功。

                                 

                                5、常用命令

                                命令说明
                                adb device查看连接设备
                                adb push [local] [remote]向设备端中推送文件
                                adb pull [remote] [local]从设备端拉取文件
                                adb install 安装应用
                                adb uninstall 卸载应用
                                adb shell pm list packages列出手机装的所有 app 的包名
                                adb shell pm list packages -3列出除了系统应用的第三方应用包名
                                adb shell pm clear 清除应用数据与缓存
                                adb shell pm disable-user 禁用应用
                                adb shell pm enable 启用应用
                                1. 连接设备:

                                  adb devices

                                  该命令列出连接到计算机的所有 Android 设备。确保你的设备通过 USB 连接,并且 USB 调试选项已启用。

                                2. 连接设备的 Shell:

                                  adb shell

                                  该命令允许你在设备上运行交互式 shell。

                                3. 推送文件到设备:

                                  adb push local_file_path /device/path

                                  将本地文件推送到设备上指定路径。替换 local_file_path 为本地文件路径,/device/path 为设备上的目标路径。

                                4. 拉取文件从设备:

                                  adb pull /device/path local_file_path

                                  从设备上拉取文件到本地。替换 /device/path 为设备上的文件路径,local_file_path 为本地目标路径。

                                5. 安装应用:

                                  adb install app.apk

                                  安装应用到设备。替换 app.apk 为你要安装的应用的 APK 文件。

                                6. 卸载应用:

                                  adb uninstall package_name

                                  卸载设备上的应用。替换 package_name 为应用的包名。

                                7. 查看设备日志:

                                  adb logcat

                                  查看设备上的实时日志。

                                8. 重启设备:

                                  adb reboot

                                  重启连接的设备。

                                9. 查看设备信息:

                                  adb devices -l

                                  以详细格式列出连接的设备信息。

                                10. 查看设备状态:

                                  adb get-state

                                  显示设备的连接状态,例如 device、offline 等。

                                这只是一小部分 ADB 命令,还有更多功能和选项可供使用。你可以通过运行 adb 命令来查看所有可用的选项和子命令。例如:

                                adb --help

                                请注意,有些命令可能需要设备处于开发者模式下,并启用 USB 调试。

                                如果不是android设备,一般我们最常用的就是前3条指令了~

                                 

                                更多文章,可关·注·公·号:【嵌入式艺术】,同时也为大家准备了学习福利,可免费领取。

                                 

                                6、总结

                                 

                                欢迎关注 公号&星球【嵌入式艺术】,董哥原创!

上一篇:公众号淘宝客推广攻略,轻松掌握发布技巧!

下一篇:【数据结构】树的基本性质(计算树的总结点数与叶结点数)