我的圈子: 高级工程师聚集地 我是董哥,高级嵌入式软件开发工程师,从事嵌入式Linux驱动开发和体系开发,曾就职于天下500强公司! 创作理念:专注分享高质量嵌入式文章,让各人读有所得!
【一文秒懂】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 主机端安装
- 假如你的主机端为windows,则必要下载安装包:【adb】,安装完后,可以在当前路径下运行,也可以到场环境变量中,【安装文档】
下文以linux体系为例,安装完毕后,可以检察版本信息:
- [donge@ubuntu ~/]$ adb version
- Android Debug Bridge version 1.0.39
- Version 1:8.1.0+r23-5~18.04
- Installed 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/sh
- case "$1" 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 $1}'`
- 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 '$1' 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 descriptors
- cannot bind 'tcp:5037'
- warnning! use usb only
- [ 215.026174] read strings
- adbd may crash
- Using USB
复制代码 表现不可以或许绑定到tcp,指定用usb
4.2 无线毗连
这种方式,必要你的装备端毗连到网络,通常使用WiFi来毗连,毗连乐成后检察服务器和装备端的IP地点,如下:
- # ifconfig
- wlan0 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.136
- PING 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 ms
- 64 bytes from 192.168.50.136: icmp_seq=2 ttl=128 time=8.04 ms
复制代码
- # netstat -an
- Active 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 Path
- unix 3 [ ] DGRAM 50 /dev/log
- unix 2 [ ] DGRAM 17723 /var/run/wpa_supplicant/wlan0
- unix 2 [ ACC ] SEQPACKET LISTENING 11722 /run/udev/control
- unix 2 [ ACC ] STREAM LISTENING 11023 @jdwp-control
- unix 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:5555
- connected to 192.168.50.136:5555
复制代码
- dong@ubuntu:~$ adb devices
- List of devices attached
- 192.168.50.136:5555 device
复制代码 到此即为毗连乐成。
5、常用下令
下令阐明adb device检察毗连装备adb push [local] [remote]向装备端中推送文件adb pull [remote] [local]从装备端拉取文件adb install < apk name >安装应用adb uninstall < pak name >卸载应用adb shell
pm list packages列脱手机装的全部 app 的包名adb shell
pm list packages -3列出除了体系应用的第三方应用包名adb shell
pm clear < pak name >打扫应用数据与缓存adb shell
pm disable-user < pak name >禁用应用adb shell
pm enable < pak name >启用应用
- 毗连装备:
该下令列出毗连到盘算机的全部 Android 装备。确保你的装备通过 USB 毗连,而且 USB 调试选项已启用。
- 毗连装备的 Shell:
该下令允许你在装备上运行交互式 shell。
- 推送文件到装备:
- adb push local_file_path /device/path
复制代码 将当地文件推送到装备上指定路径。更换 local_file_path 为当地文件路径,/device/path 为装备上的目标路径。
- 拉取文件从装备:
- adb pull /device/path local_file_path
复制代码 从装备上拉取文件到当地。更换 /device/path 为装备上的文件路径,local_file_path 为当地目标路径。
- 安装应用:
安装应用到装备。更换 app.apk 为你要安装的应用的 APK 文件。
- 卸载应用:
- adb uninstall package_name
复制代码 卸载装备上的应用。更换 package_name 为应用的包名。
- 检察装备日记:
检察装备上的及时日记。
- 重启装备:
重启毗连的装备。
- 检察装备信息:
以详细格式列出毗连的装备信息。
- 检察装备状态:
表现装备的毗连状态,比方 device、offline 等。
这只是一小部门 ADB 下令,另有更多功能和选项可供使用。你可以通过运行 adb 下令来检察全部可用的选项和子下令。比方:
请留意,有些下令大概必要装备处于开发者模式下,并启用 USB 调试。
假如不是android装备,一样寻常我们最常用的就是前3条指令了~
更多文章,可关·注·公·号:【嵌入式艺术】,同时也为各人预备了学习福利,可免费领取。
6、总结
以上,这篇文章重要先容了ADB工具的架构以及怎样摆设,怎样使用,渴望对各人有所资助。
欢迎关注 公号&星球【嵌入式艺术】,董哥原创!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |