Android开发对于ADB想来是不会陌生的,对于ADB的相关知识和使用我们需要熟练掌握。
Android Debug Bridge,Android调试桥接器,简称ADB,是用于管理模拟器或真机状态的万能工具。说人话就是:ADB是PC和移动终端通信的桥梁,它采用了C/S模型,由三部分组成。 1. adb client(客户端) 每当我们发起一个ADB命令时,就会开启一个client程序,client开启后就会去检测后台是否已存在server程序在运行,如无存在则开启一个adb-server进程。我们常见的打开Android Studio开发工具时,会帮你自动开启一个client。 client与模拟器是一对多的关系,连接多个手机也只有一个client。client都是通过5037端口与adb-server进行通讯的。 2. adb daemon(adb后台程序) 在PC命令行中中输入的ADB命令,通过Server与daemon的通信,将命令传至daemon,实际命令是在daemon中运行。 daemon使用端口的范围是5554-5585,每个模拟器/设备连接到PC端时,总会开启这样一个后台进程(client会帮助检查),并且为其分配了两个连续的端口,比如: 因为每个设备都分一组两个端口,所以adb连接手机的最大数量为16。 3. adb server(服务器) ADB组件是通过TCP/IP协议建立长连接实现通信的。其通信流程大致如下: 我们Android手机线一般有两种,USB type-C和USB micro。这种方式很常见,不说了。 首选认识下USB type-A数据口,它就是我们常见电脑上的USB口,见图如下: 网络连接就是通过让Android终端与电脑处于同一网络内,将设备设置为TCP模式进行连接。让Android 设备与PC处于同一网络,可以是通过网线或者wifi连接。 其连接流程如下: 检查网络同一 设置设备TCP模式 连接设备 我用华为Honor 9测试,插件 ADB Wifi好像无法使用,插件Android Wifi ADB布局画面也不美观。Android studio进行开发,那么我给你推荐WIFI ADB ULTIMATE这款wifi连接插件,界面美观,功能强大。 有时候你可能不知道手机的IP地址是多少,这时候有5种方法可以获取: 如果只是想对ADB工具及命令进行了解,而不想安装类似Android Studio这样的工具,那么请下载ADB 比如我下载文件后解压放在E盘,那么使用步骤: adb -s / -e / -d 指定对某个连接成功的设备执行命令 -s、-e、-d 是跟在adb后面的限制符,如adb -s emulator-5556 install helloWorld.apk adb logcat –* * 代表不同flag,如下图 logcat定义表 format有多种格式,如下: adb 命令是 adb 这个程序自带的一些命令,而 adb shell 则是调用的 Android 系统中的命令,这些 Android 特有的命令都放在了 Android 设备的 system/bin 目录下。想要执行shell命令,有两种方法: 进入Shell模式后,如果现实”#”,说明该设备拥有root权限,如果现实”$”,说明该设备未拥有root权限。 am全称activity manager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等。 pm全称package manager,你能使用pm命令去模拟Android行为或者查询设备上的应用等 这个命令可以向 Android 设备发送按键事件 这个是按键与KEYCODE对应键值表如下 用代码写这个表格太爽歪歪了。 感觉是最全的ADB讲解了,从ADB的基本原理结构》安装》命令使用。如果您还没看懂或学会使用,请留言Call me,由我来帮你洗脑讲解。 ADB 的使用,尤其是ADB shell的使用对我们的Android开发帮助是很大的,尤其是越深度的发展技术路线。 推荐链接ADB详解及常用命令
一、ADB的认识
1. ADB组成
借用一张图:
2. 服务端部分,是运行在开发用电脑上的后台进程,用于管理客户端与运行在模拟器或真机的守护进程通信。
client是运行在PC端的组件,可以在命令行中运行adb命令来调用该客户端,通常的ADB插件、DDMS、豌豆荚等工具都可以调用ADB。
daemon守护进程,该组件作为一个后台进程运行在模拟器/真实Android设备中。
偶数端口用于控制台与终端设备进行连接交互
奇数端口是用来Server与模拟器、手机进行连接通信的
Server,该组件管理客户端和后台程序之间的通信,作为一个后台的程序运行在开发PC端。当一个server开启的时候,会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。
同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。server将client中命令传至daemon.2. ADB 通信原理
3. ADB连接方式
1) 手机数据线连接
USB micro数据口
USB type-C数据口
2) USB type-A数据线连接
这种连接方式一般Android开发碰不到,他在一些Android柜台机,广告机中有可能是这样连接的。这种连接线两头都是一模一样的这种USB type-A数据口,常被叫做双公头数据线。
一般都是如上设置,即可建立连接3) 网络连接
手机要打开开发者模式
在电脑上cmd命令行工具中ping Android设备IP,如果未丢失数据,说明两者在同一网络中。
在adb.exe所在目录输入命令 adb tcpip 5555,将Android设备设置成TCP/IP连接模式
如果失败了,一般是adb 被别的程序占用了,一般要关掉如360手机助手,豌豆荚等程序然后重启adb
输入命令 adb connect 192.168.31.34,如图连接成功,拔掉数据线你会发现设备与PC还是连着的。
如果connect被拒绝,关闭干扰软件,关闭ADB,重新连接。**注意:**
1) 想要断开连接的命令是adb disconnect 192.168.31.34
2) wifi连接模式至少需要让Android设备与PC用数据线连接一次
3)我们常用的Android studio wifi连接插件其实就是基于如上原理,只是自动帮我们完成了一些ADB命令的键入,直接按钮点击连接就好。4. 手机IP确认
二、ADB的安装
三、ADB命令
注意:
1. 《 》 代表内容需要自己更具实际情况更改
2. 【 】 代表内容是可选项,可以不填写
1. adb 普通命令
-s: 指定要操作的设备;
-e: 默认操作模拟器;
-d:默认操作硬件设备;
这条命令就是往emulator-5556模拟器安装apk文件。 它的原始普通命令是 adb install helloWorld.apk1) ADB信息
命令模式
说明
示例
adb pwd
打印当前路径
adb ls
查看当前
adb devices
列举当前连接的调试设备
adb get-serialno
获取当前连接设备信息, 只能当连接一个设备时使用,并拿到设备的序列号
adb get-state
获取设备的状态 ,有 3 钟
device:设备正常连接 ;offline:连接出现异常,设备无响应 ; unknown:没有连接设备
adb bugreport
查看bug报告
adb help
调出adb命令提示
2)操作类
命令模式
说明
示例
adb pull -a remote-path local-path
从设备拷贝文件或文件夹到电脑
-a:保留文件时间戳及属性 ;remote-path:为手机端文件路径; local-path:为文件复制到的路径
adb push loacal-path remote-path
将文件或文件夹(包括文件夹的子目录)拷贝到设备
adb push /Users/littlejie/Desktop/log.txt /dev
adb reboot
重启机器
adb -s xxx reboot 重启连接成功的指定设备。
adb reboot recovery
重启进入recovery模式
adb reboot bootloader
重启到bootloader,即刷机模式
adb forward tcp:8000 tcp:9000
执行此命令后, PC端的8000端口会被adb监听, 这个时候我们只需要往8000端口写数据, 这个数据就会发送到手机端的9000端口上
一般用来主机和移送设备进行额外的数据传输
3 ) ADB 远程
命令模式
说明
示例
adb version
查看版本
adb tcpip 5555
设置连接设备为TCP模式
adb usb
切换到usb模式
adb start/kill -server
启动/杀死adb 的Server
adb connect/disconnect 《192.168.1.101》
通过局域网远程调试ADB终端
adb install 【-r/-s】 test.apk
安装apk文件
-r:保留数据和缓存文件,重新安装apk ; -s:安装apk到sd卡
adb uninstall 【-k】 com.tencent.mobileqq
卸载apk
有-k 则不删除程序运行所产生的数据和缓存目录。
4) log 命令
标识
说明
“-s”选项
设置输出日志的标签, 只显示该标签的日志;
“-f”选项
将日志输出到文件, 默认输出到标准输出流中, -f 参数执行不成功;
“-r”选项 :
按照每千字节输出日志, 需要 -f 参数, 不过这个命令没有执行成功;
“-n”选项
设置日志输出的最大数目, 需要 -r 参数, 这个执行 感觉 跟 adb logcat 效果一样;
“-v”选项
设置日志的输出格式, 注意只能设置一项;
“-c”选项
清空所有的日志缓存信息;
“-d”选项
将缓存的日志输出到屏幕上, 并且不会阻塞;
“-t”选项
输出最近的几行日志, 输出完退出, 不阻塞;
“-g”选项
查看日志缓冲区信息;
“-b”选项
加载一个日志缓冲区, 默认是 main, 下面详解;
“-B”选项
以二进制形式输出日志;
命令模式
说明
示例
adb logcat
打印信息
adb logcat | grep 【-i】
显示包含的logcat ,【并忽略大小写】
adb logcat -c
清楚手机的log buffer
adb logcat -b
打印指定buffer的log信息
adb logcat -d
读完所有log后返回,而不会一直等待
adb logcat -f
输出log到指定文件
log adb logcat -s xys
打印xys标签
adb -s 192.168.56.101:5555 logcat -s xys 打印192.168.56.101:5555设备里的xys标签log
adb logcat -s ActivityManager
findstr “START”** 打印在ActivityManager标签里包含start的日志
logcat -t
打印最近的指定条数count的logcat
adb logcat -v format
格式化输出log
adb logcat -v time 显示时间
adb logcat -v process |grep 8607 查看PID是:8607进程的日志 brief — 显示优先级/标记和原始进程的PID (默认格式) process — 仅显示进程PID tag — 仅显示优先级/标记 thread — 仅显示进程:线程和优先级/标记 raw — 显示原始的日志信息,没有其他的元数据字段 time — 显示日期,调用时间,优先级/标记,PID long —显示所有的元数据字段并且用空行分隔消息内容
2. adb shell命令
adb shell
进入调试设备的shell 界面,然后dumpsys power
adb shell dumpsys power
两种方式的实际效果是一摸一样的。
1) adb shell am
命令模式
说明
示例
am start [options] intent
am即activity manager. 该命令用来执行一些系统动作
am broadcast
发送一个广播
am start -a android.settings.INPUT_METHOD_SETTINGS
使用Action方式打开系统设置-输入法设置
am start -n 《包名》/.《类名》
开始某个Activit或Intent
am start -n com.android.camera/.Camera}
使用组件名方式启动照相机功能
am start -n
启动指定包名的应用
am start -a android.intent.action.CALL-d tel:10086
打开拨号界面,并传递一个DATA_URI数据给拨号界面
am start -a android.intent.action.VIEW -d https://www.jianshu.cn/
打开简书的官网页
am startservice <包名/.Service名>
使用ComponentName 方式启动一个Service
am stopservice 《包名/.Service名》
停止一个service
am force-stop
强制结束应用
adb shell am kill
杀死app 进程
adb shell am monitor
监控程序的crash和anr错误
2)shell pm
命令模式
说明
示例
pm list packages [option filter ]
列出当前已安装的应用包名, 根据filter可以搜索你需要的包名
pm list permission-groups
查看所有可用的权限
pm list permissions [options] group
查看某个权限组下边所有的权限
shell pm path
查看某个apk安装路径
pm clear
删除和这个包有关联的所有数据
pm set-install-location location
改变apk默认安装位置(只能在已root设备使用,未root设备会报java.lang.SecurityException异常)
pm get-install-location
获取系统默认安装位置
pm install test.apk
安装apk
pm uninstall 《package》 卸载指定包名应用
3) shell input
命令模式
说明
示例
input text “发送内容”
不能发送中文
input keyevent
KEYCODE
发送按键事件 ,
KEYCODE表
在文尾input keyevent KEYCODE_HOME 模拟按下Home键
input tap
对屏幕发送一个触摸事件
input tap 500 500 点击屏幕上坐标为 500 500 的位置
adb shell input swipe
滑动事件
input swipe 800 600 100 600 从右往左滑动屏幕》
4)设备信息
KeyCode值
对应按键名
亮度
/sys/class/leds/lcd-backlight/brightness
CPU
/sys/devices/system/cpu/cpu0/cpufreq
GPU
/sys/class/ kgsl/kgsl-3d0/gpuclk
限频
cat /data/pmlist.config
电流
cat /sys/class/power_supply/battery/current_now
获取设备信息
cat /system/build.prop 【grep】
获取手机MAC地址
cat /sys/class/net/wlan0/address
查看wifi密码
cat /data/misc/wifi/*.conf
获取连接设备的IP地址
ifconfig wlan0
查看连接设备的IP地址
netcfg
获取手机内存信息
cat /proc/meminfo
获取手机存储信息
df
获取手机内部存储信息
df /data
获取系统版本
getprop ro.build.version.release
获取系统api版本
getprop ro.build.version.sdk
获取手机设备型号
getprop ro.product.model
获取手机厂商名称
getprop ro.product.brand
列出设备上的输入法
adb shell ime list -s
查看Power
dumpsys power
获取Android设备屏幕分辨率
dumpsys window (或 grep mUnrestrictedScreen)
WIFI
data/misc/wifi/wpa_supplicant.conf
持有wake_lock
echo a> sys/power/wake_lock
释放wake_lock
echo a> sys/power/wake_unlock
查看Wakeup_source
cat sys/kernel/debug/wakeup_sources
Display(关闭AD)
mv /data/misc/display/calib.cfg /data/misc/display/calib.cfg.bak 重启
5)进程、Service及状态
命令模式
说明
示例
su root
获取root权限
一般Android板子可以,手机一般不行
service list
查看后台services信息
dumpsys services []
查看正在运行的Services
dumpsys activity []
查看正在运行的Activity
procrank
查看运行进程
kill 366
关闭或杀掉进程
ps
列出当前运行的进程
adb shell ps -x [PID] 查看指定进程状态
cat /proc/1460/maps
查看进程的文件结构
1460进程的PID
cat /proc/1460/status
查看进程的状态
1460进程的PID
关闭cabc
echo 0 > /sys/device/virtual/graphics/fb0/cabc_onoff
打开cabc
echo 3 > /sys/device/virtual/graphics/fb0/cabc_onoff
6)shell 文件操作
命令模式
说明
示例
ls
列出目录下的文件和文件夹
du -sh *
查看目录下的文件大小
cat <folder/file>
查看文件内容
chmod777
设置文件的权限
cd
进入文件夹,等同于dos中的cd 命令
rename
重命名文件
rm 【 -r 】 /system/avi.apk
删除指定路径文件的文件或者文件夹
mv
移动文件到新的目录
mkdir path/foldelname
新建文件夹
7)其他命令
命令模式
说明
示例
adb shell screencap /sdcard/screen.png
截图当前页面并保存到指定目录
adb shell screenrecord
录屏。Android4.4 及以上才能使用
adb shell bugreport
打印dumpsys、dumpstate、logcat的输出,也是用于分析错误
adb shell dumpsys > D:bugreport.log
adb shell monkey -v -p your.package.name 500
跑monkey
adb -s 192.168.244.151:5555 shell monkey -v -p com.bolexim 500
adb shell top
查看占用内存排序
1) adb shell top -m 6 查看占用内存前6的app ; 2)adb shell top -n 1 刷新一次内存信息,然后返回
当出现read-only 且 remount命令不管用时
adb shell mount -o rw,remount /
进入9008模式
adb reboot edl
查看高通gpio
sys/class/private/tlmm 或者 sys/private/tlmm
查看gpio占用情况
sys/kernle/debug/gpio
systrace
sdk/tools/monitor
限频
echo /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 1497600
LPM
echo N > /sys/modue/lpm_levels/parameters/sleep_disabled
四、 KEYCODE表
KeyCode值
对应按键名
0
KEYCODE_UNKNOWN
1
KEYCODE_MENU
2
KEYCODE_SOFT_RIGHT
3
KEYCODE_HOME
4
KEYCODE_BACK
5
KEYCODE_CALL
6
KEYCODE_ENDCALL
7
KEYCODE_0
8
KEYCODE_1
9
KEYCODE_2
10
KEYCODE_3
11
KEYCODE_4
12
KEYCODE_5
13
KEYCODE_6
14
KEYCODE_7
15
KEYCODE_8
16
KEYCODE_9
17
KEYCODE_STAR
18
KEYCODE_POUND
19
KEYCODE_DPAD_UP
20
KEYCODE_DPAD_DOWN
21
KEYCODE_DPAD_LEFT
22
KEYCODE_DPAD_RIGHT
23
KEYCODE_DPAD_CENTER
24
KEYCODE_VOLUME_UP
25
KEYCODE_VOLUME_DOWN
26
KEYCODE_POWER
27
KEYCODE_CAMERA
28
KEYCODE_CLEAR
29
KEYCODE_A
30
KEYCODE_B
31
KEYCODE_C
32
KEYCODE_D
33
KEYCODE_E
34
KEYCODE_F
35
KEYCODE_G
36
KEYCODE_H
37
KEYCODE_I
38
KEYCODE_J
39
KEYCODE_K
40
KEYCODE_L
41
KEYCODE_M
42
KEYCODE_N
43
KEYCODE_O
44
KEYCODE_P
45
KEYCODE_Q
46
KEYCODE_R
47
KEYCODE_S
48
KEYCODE_T
49
KEYCODE_U
50
KEYCODE_V
51
KEYCODE_W
52
KEYCODE_X
53
KEYCODE_Y
54
KEYCODE_Z
55
KEYCODE_COMMA
56
KEYCODE_PERIOD
57
KEYCODE_ALT_LEFT
58
KEYCODE_ALT_RIGHT
59
KEYCODE_SHIFT_LEFT
60
KEYCODE_SHIFT_RIGHT
61
KEYCODE_TAB
62
KEYCODE_SPACE
63
KEYCODE_SYM
64
KEYCODE_EXPLORER
65
KEYCODE_ENVELOPE
66
KEYCODE_ENTER
67
KEYCODE_DEL
68
KEYCODE_GRAVE
69
KEYCODE_MINUS
70
KEYCODE_EQUALS
71
KEYCODE_LEFT_BRACKET
72
KEYCODE_RIGHT_BRACKET
73
KEYCODE_BACKSLASH
74
KEYCODE_SEMICOLON
75
KEYCODE_APOSTROPHE
76
KEYCODE_SLASH
77
KEYCODE_AT
78
KEYCODE_NUM
79
KEYCODE_HEADSETHOOK
80
KEYCODE_FOCUS
81
KEYCODE_PLUS
82
KEYCODE_MENU
83
KEYCODE_NOTIFICATION
84
KEYCODE_SEARCH
总结
博客书写不易,如觉得文章还行,千万别忘记 ^ _ ^ !
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算