linux cpu占用率如何看
354
2022-09-24
Android 10 根文件系统和编译系统(五):ADB使用
说明
系统:AOSP Android10.0
设备:Android模拟器
前言
本章节重点介绍Android系统中ADB的运行基本框架, ADB连接方法, 以及ADB常见命令
一, 基本框架
adb(Android Debug Bridge) 安卓调试桥,包含adb client、adb server和adbd三部分:
adb client:运行在PC上,通过在命令行执行adb,就启动了ADB Client程序adb server:运行在PC上,作为adb client的server端,也作为adbd服务进程的客户端adbd 服务进程:运行在Android系统上,以服务进程运行,当Android系统启动时,由init程序启动adbd。如果adbd挂了,则adbd会由init重新启动
其实在PC HOST端,adb会fork出一个守护进程(不是adbd),即ADB Server,而父进程(ADB Client)继续处理Client请求,所有的Client通过TCP端口号5037进行与Server通信,而Server创建 local socket 与 remote socket,前者用于和Client通信,后者用与远端进行通信,emulator通过TCP,real device则通过usb。
当启动某个 adb 客户端时,客户端会先检查是否有 adb 服务器进程正在运行。如果没有,它将启动服务器进程。服务器在启动后会与本地 TCP 端口 5037 绑定,并监听 adb 客户端发出的命令 - 所有 adb 客户端均通过端口 5037 与 adb 服务器通信。然后,服务器会与所有正在运行的设备建立连接。它通过扫描 5555 到 5585 之间(该范围供前 16 个模拟器使用)的奇数号端口查找模拟器。服务器一旦发现 adb 守护进程 (adbd),便会与相应的端口建立连接。
adb client 与 adb server 之间是通过 tcp 进行通信,adb server 和 adbd 通过 usb 或者 tcp 进行通信。ADB Server 对本地的 TCP 5037 端口进行监听,等待 ADB Client 的命令。
二, ADB链接设备方法
1, ADB工具
adb 包含在 Android SDK 平台工具软件包中。您可以使用 SDK 管理器下载此软件包,该管理器会将其安装在 android_sdk/platform-tools/ 下。或者,如果您需要独立的 Android SDK 平台工具软件包,
我们提供已经下载好的:
2, USB线连接调试
a, 确保手机和PC机通过USB链接,并且安装adb驱动.
c, 确保在手机中在adb通信时,手机确认授权
3, wifi无线连接调试
a, USB需要一次连接, 通过adb tcpip 端口号(注意,临时有效, 手机重启后需要重新设置) b, PC和手机必须在同一个网络中
c, PC端通过命令行: adb connect 手机ip:端口号(第一个步骤)
三, ADB常见命令
通用命令:
adb devices [-l] 列举所有设备,-l 表示长输出
adb help 查看帮助
adb version 显示adb版本
选项:
adb -a 命令针对所有的设备,需要与命令一起使用,例如 adb -a push
-d:真机(多个设备中只有一个真机时适用)
-e:模拟器(多个设备中只有一个模拟器时适用)
adb -s
网络命令:
adb connect
Port 5555 is used by default if no port number is specified.
adb disconnect [
Port 5555 is used by default if no port number is specified.
Using this command with no additional arguments
will disconnect from all connected TCP/IP devices.
文件传输命令:
adb push
- copy files/dirs to device
adb pull [-a]
- copy files/dirs from device
(-a preserves file timestamp and mode)
包的安装和卸载:
adb install [-lrtsdg]
adb install-multiple [-lrtsdpg]
- push this package file to the device and install it
(-l: 直接锁定app)
(-r: 替换已存在的app)
(-t: 允许安装测试包)
(-s: 安装到sdcard中)
(-d: 允许降版本安装(只在针对调试版本的app有用))
(-g: 安装时获取所有权限,(只有6.0系统可用))
adb uninstall -k
可选参数-k的作用为卸载软件但是保留配置和缓存文件
调试命令:
adb bugreport [
adb logcat 直接输出android系统的log日志
scripting命令:
adb start-server 确保启动adb server(注意,不是adbd)
adb kill-server 杀死adb server
adb get-serialno : 获取设备唯一序列号(如打卡app通过该值判断是否重复打卡)
adb get-state : 获取设备的状态 设备的状态有3种,device , offline , unknown
device:设备正常连接offline:连接出现异常,设备无响应unknown:没有连接设备
adb remount: 重新将设备中/system,/vendor (if present) and /oem (if present) 重新挂载为可读写
adb reboot [bootloader|recovery|sideload|sideload-auto-reboot]
adb reboot bootloader, 重启进入bootloader, 一般会进入fastboot 模式,Android 可以在fastboot 模式下进行烧录镜像。部分平台会进入特定的loader模式。adb reboot recovery :重启到Recovery界面adb reboot sideload :线刷升级包,需要先进入到recovery模式adb reboot sideload-auto-reboot:线刷升级包之后自动重启,不管刷机是否成功。
adb root 以root权限重启adbd, adb shell进入之后,就是以root身份操作了,一般是在镜像 为userdebug版本下。
adb unroot 取消root权限来重启adbd
adb usb 重启adbd并监听 USB连接
adb tcpip
执行shell命令:
adb shell ls
基于以上命令衍生出来的常见操作:
adb shell pm list packages: 列举系统已安装的app adb shell pm list packages -s # 系统应用
adb shell pm list packages -3 # 第三方应用
adb shell pm list packages smart # 包名包含smart字符串的应用
adb shell dumpsys package
adb shell am start -n
adb shell getprop | grep version: 获取系统版本号
adb shell wm size :获取系统分辨率
adb shell dumpsys meminfo : 获取系统进程占用内存情况
总结
ADB命令会比较多, 可根据自己实际情况进行操作。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~