adb(Android Debug Bridge),SDK自带的工具,可实现桥接功能,实现PC和android设备的交互
adb shell:基于Android linux系统 *** 作,放在安卓设备的system/bin目录下,手机端的命令
一:adb常用命令
1 PC连接android设备
(PC与android设备连接同一个wifi,或处于同一个局域网)
连接:adb connect ip:5555
断开连接:adb disconnect ip
查看连接设备的信息:adb devices
获取设备的状态:adb get-state
2 重启adb server
打开adb服务:adb start-service
关闭adb服务:adb kill-service
3 安装卸载软件
安装:adb install apkpath(某个apk)
adb install -r :强制安装
卸载: adb uninstall package(可用adb shell pm list packages查看包名)
4 打印日志
打印android系统日志:adb logcat
将日志打印并保存指定文件夹:adb logcat > /Users/apple/Desktop/logtxt
终止进程:control+C
打印dumpsys,dumpstate,logcat的输出,用于分析错误:adb bugreport
5 PC与android设备上文件复制
android设备上文件复制到PC上:adb pull
PC上文件推至android设备:adb push
6重新挂载system分区为可写,需要root权限/system分区默认挂载为只读,但有些 *** 作比如给android系统添加命令,删除自带应用等需对系统进行写 *** 作,得重新挂载为可写
adb shell
su
或:adb root
adb remount 重新挂载文件系统,获得可写的权限(默认情况是只有可读权限的),使用adb remount 的前提是要有root权限
7 删除系统应用
adb root
adb remount
adb shell
cd system/app
rm apk
二:adb shell命令
adb shell 进入系统子目录,exit 退出
1 pm命令
列出系统应用的所有包名:adb shell pm list packages 可用grep来过滤:adb shell pm list packages | grep 关键字
清除应用数据与缓存:adb shell pm clear <packagename>
2 am命令
启动应用:adb shell am start -n comxxxxxxxxxx|xxxActivity(可通过adb shell dumpsys activity activities | grep mFocusedActivity查看
强制停止应用:adb shell am force-stop <packagename>
3 input命令
模拟点击事件,点击坐标点(x,y):adb shell input tap x y
模拟滑动事件,从(x1,y1)到(x2,y2):adb shell input swipe x1 y1 x2 y2
发送文本内容:adb shell input text
模拟按下home:adb shell input keyevent KRYCODE_HOME
4 screencap命令
截屏:adb shell screencap
5 查看网络状态命令
查看当前网络状态:adb shell netstat
通过配置文件配置和管理网络连接:adb shell netcfg
查看网络信息:ifconfig
测试网络联网状态:ping
5其它相关命令
查看当前终端中进程:adb shell ps
获取cpu信息:adb shell cat /proc/cpuinfo
查看内存信息:adb shell cat /proc/meminfo
查看屏幕分辨率:adb shell wm size
查看设备ip地址:adb shell ifconfig | grep Mask
查看实时资源占用情况:adb shell top
1、查看最上层成activity名字:
adb shell dumpsys activity | findstr "mFocusedActivity"
或者 adb shell dumpsys window w | findstr / | findstr name=
2、查看Activity的任务栈:
3、显示所有的activities的信息,包括任务栈等:
adb shell dumpsys activity
4、查看Android应用包名package和入口activity名称 :
aapt dump badging E:\apk\es3apk
5、显示accounts信息:
adb shell dumpsys account
5、显示CPU信息 :
adb shell dumpsys cpuinfo
查看CPU使用信息
adb shell top -n 1 -d 05 | findstr proc_ id
6、显示键盘,窗口和它们的关系
adb shell dumpsys window
当我们需要知道设备的分辨率时
adb shell dumpsys window displays
查看UI绘制的各个层级信息
adb shell dumpsys SurfaceFlinger
7、显示wifi信息
adb shell dumpsys wifi
8、电量信息及CPU 使用时长
adb shell dumpsys batteryinfo $package_name
9、获取安装包信息
adb shell dumpsys package packagename
10、每个应用的启动次数和时间
adb shell dumpsys usagestats
11、显示状态栏相关的信息
adb shell dumpsys statusbar
12、内存信息(meminfo package_name or pid 使用程序的包名或者进程id显示内存信息)
adb shell dumpsys meminfo
得到comtelecarobintest进程使用的内存的信息 adb shell dumpsys meminfo comtelecarobintest
13、磁盘相关信息
adb shell dumpsys diskstats
14、电池相关信息
adb shell dumpsys battery
15、显示Alarm信息
adb shell dumpsys alarm
统计系统耗电量
adb shell dumpsys batterystats
设置线程的优先级
adb shell dumpsys activity|grep oom_adj
16、强制关闭一个应用程序;
adb shell am force-stop <PACKAGE>
17、查看内存信息
adb shell cat proc/meminfo
指定进程内存地址映射
adb shell cat proc/pid/maps
指定进程内存详细使用信息
adb shell cat proc/pid/smaps
VSS RSS PSS USS 信息
adb shell procrank
指定进程VSS RSS PSS USS 详细信息
adb shell procmem pid
18、查看可输入的设备
adb shell getevent -p
19、获得特定设备的输入信息
adb shell getevent /dev/input/event0
20、点击
adb shell input tap x y
21、发送按键
adb shell input keyevent 82(keycode)
22、输入文本
adb shell input text XXXX
23、查看报名中包含mobileqq的进程
adb shell ps | findstr mobileqq
24、远程进程ID
adb jdwp
25、获取序列号
adb get-serialno
26、重启到bootloader,即刷机模式
adb reboot bootloader
27、重启到recovery,即恢复模式
adb reboot recovery
28、获取机器MAC地址:
adb shell cat /sys/class/net/wlan0/address
29、获取CPU序列号
adb shell cat /proc/cpuinfo
30、覆盖安装(保留数据和缓存文件,重新安装apk)
adb install -r <apkfile>
31、安装apk到sd卡
adb install -s <apkfile>
32、卸载app但保留数据和缓存文件
adb uninstall -k <package>
33、查看设备cpu和内存占用情况
adb shell top
34、查看占用内存前6的app
adb shell top -m 6
35、刷新一次内存信息,然后返回
adb shell top -n 1
36、查询各进程内存使用情况
adb shell procrank
37、查看指定进程状态
adb shell ps -x [PID]
38、查看后台services信息
adb shell service list
39、查看当前内存占用(该方式只能得出系统整个内存的大概使用情况) 车
如果你想查看所有进程的内存使用情况
adb shell procrank
40、查看IO内存分区
adb shell cat /proc/iomem
41、查看wifi密码
adb shell cat /data/misc/wifi/conf
42、清除log缓存
adb logcat -c
43、查看设备信息
adb shell cat /system/buildprop
44、跑monkey
adb shell monkey -v -p yourpackagename 500
45、列出目标设备上安装的所有app的包名
adb shell pm list packages
46、截屏命令:
adb shell screencap -p /sdcard/screenpng
adb pull /sdcard/screenpng
adb shell rm /sdcard/screenpng
录制手机屏幕,视频格式为mp4,存放到手机sd卡里,默认录制时间为180s:
adb shell screenrecord
限制视频录制时间为10s,如果不限制,默认180s:
adb shell screenrecord --time-limit 10 /sdcard/demomp4
指定视频分辨率大小:
adb shell screenrecord --size 1280720 /sdcard/demomp4
指定视频的比特率:
adb shell screenrecord --bit-rate 6000000 /sdcard/demomp4
在命令行显示log:
adb shell screenrecord --time-limit 10 --verbose /sdcard/demomp4
47、设置、获取属性信息
adb shell getprop [key]
adb shell setprop [key] [value]
监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来
adb shell watchprops
48、adb logcat 每一条日志消息都有一个标记和优先级与其关联。
(1)标记是一个简短的字符串,用于标识原始消息的来源 (例如"View" 来源于显示系统)。优先级是下面的字符,顺序是从低到高:
V — 明细 (最低优先级)
D — 调试
I — 信息
W — 警告
E — 错误
F — 严重错误
S — 无记载 (最高优先级,没有什么会被记载)
(2)查看过滤日志
adb logcat ActivityManager:I :S
:S 用于设置所有标记的日志优先级为S,可以确保输出符合指定的过滤器设置的一种推荐的方式,
这样过滤器就成为了日志输出的“白名单”
显示所有优先级大于等于“warning”的日志
adb logcat :W
(3)日志消息在标记和优先级之外还有很多元数据字段,这些字段可以通过修改输出格式来控制输出结果, -v 选项加上下面列出的内容可以控制输出字段:
brief — 显示优先级/标记和原始进程的PID (默认格式)
process — 仅显示进程PID
tag — 仅显示优先级/标记
thread — 仅显示进程:线程和优先级/标记
raw — 显示原始的日志信息,没有其他的元数据字段
time — 显示日期,调用时间,优先级/标记,PID
long —显示所有的元数据字段并且用空行分隔消息内容
使用 thread 输出格式
adb logcat -v thread
(4)Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,要想查看这些附加的缓冲区,可以使用-b 选项,以下是可以指定的缓冲区:
radio — 查看包含在无线/电话相关的缓冲区消息
events — 查看事件相关的消息
main — 查看主缓冲区 (默认缓冲区)
查看radio缓冲区
adb logcat -b radio
48、打印应用程序的log
adb logcat -b main -v time>applog
49、打印射频相关的log,SIM STK也会在里面,modem相关的ATcommand等,当然跟QXDM差的很远了
adb logcat -b radio -v time> radiolog
50、打印系统事件的日志,比如触屏事件
adb logcat -b events -v time
51、tcpdump 是很有用的,对于TCP/IP协议相关的都可以使用这个来抓
adb shell tcpdump -s 10000 -w /sdcard/capturepcap
52、状态信息,里面包含有dmesg,dumpstate和dumpsys
adb bugreport>bugreportlog
53、kernel的log凡是跟kernel相关的,比如driver出了问题(相机,蓝牙,usb,启动,等等吧)
adb shell dmesg > ldmesg_kernellog
54、dumpstate是系统状态信息,里面比较全,包括手机当前的内存信息、cpu信息、logcat缓存,kernel缓存等等 。
adb shell dumpstate
55、关于系统service的内容都在这个里面
adb shell dumpsys
56、显示内存信息
adb shell dumpsys meminfo system
Android 调试桥 (adb) ,可与设备进行通信。adb 命令可用于执行各种设备 *** 作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。它是一种客户端-服务器程序,包括以下三个组件:
客户端: 用于发送命令。客户端在开发机器上运行。可以通过发出 adb 命令从命令行终端调用客户端。(可以通过它对Android应用进行安装、卸载、调试)
PC上的手机助手基本都是通过adb命令去完成的。有时候装了这类手机助手的话,它自带的adb程序可能会与Android SDK下的adb程序产生冲突,5037端口被占用,导致adb命令无法连接到设备。Windows下通过netstat -ano|findstr "5037"
守护程序 (adbd): 用于在设备上运行命令。守护程序在每个设备上作为后台进程运行
执行adb shell ps | grep adbd, 可以找到该后台进程,Windows使用findstr替代grep
adb nodaemon server
服务器(Service): 用于管理客户端与守护程序之间的通信。服务器在开发机器上作为后台进程运行
adb服务启动后,Windows可以在任务管理中找到adbexe; linux ps -ef | gref adb 可以查看service
一般都是通过这样子的格式 adb [-d|-e|-s <设备序列号>] <子命令>
通常只有一台设备就忽略 [-d|-e|-s ] 这一部分
这里介绍一些常用的命令:
获取设备列表及设备状态
获取设备的状态
注意:设备的状态有 3 钟,device , offline , unknown
device:设备正常连接
offline:连接出现异常,设备无响应
unknown:没有连接设备
结束 adb 服务
启动 adb 服务
注意:通常两个命令一起用,有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。一般在连接出现异常,使用 adb devices 未正常列出设备, 设备状态异常时使用 kill-server,然后运行 start-server 进行重启服务。
打印 Android 的系统日志
打印 dumpsys、dumpstate、logcat 的输出,也是用于分析错误输出比较多
打印日志后重定向到一个文件中
安装应用,覆盖安装是使用 -r 选项
注意:有些adb版本无法支持安装中文的apk
查看手机应用包名
查看应用对应的apk文件在手机上的安装位置则可以在上面的命令后加-f参数
卸载应用,后面跟的参数是应用的包名,请区别于 apk 文件名
'-k' means keep the data and cache directories , -k 选项,卸载时保存数据和缓存目录
将 Android 设备上的文件或者文件夹复制到本地
adb pull /sdcard/testtxt C:\Users\Administrator\Desktop\log
推送本地文件至 Android 设备
获取连接到的手机的序列号
获取设备的连接状态
等待设备连接成功
该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。
其实adb shell命令就是调用的是Android设备中的system/bin目录下的命令。
Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行。
如何在手机中执行Shell命令?
每次都加上adb shell来进行命令的发送与执行
先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令。
使一个apk处于禁用状态,相当于卸载了:
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 comUCMobile/mainUCMobile
eg:adb shell su disable comUCMobile/mainUCMobile
同时我们在手机上发现,UC浏览器的图标不见了
让一个apk从禁用状态恢复过来
其中 PACKAGE_OR_COMPONENT的格式是 package/class, 如 comUCMobile/mainUCMobileeg:
adb shell su enable comUCMobile/mainUCMobile
同时我们从手机上发现,UC浏览器的图标又出现了。
查看一个apk所在的路径
adb shell pm path comUCMobile
查看手机中装的所有的包
屏幕开始录像并且储存到/sdcard中,同时名字为demomp4
录屏设置时长10s,命名为demomp4
注意:现在仅支持一部分手机录屏,不支持的手机会出现以下提示
解决方法:
安装了scrcpy之后,只需要输入如下命令,即可录取指定设备的屏幕
scrcpy -s device --render-expired-frames -Nr /demopm4
--render-expired-frames:尽可能最大帧率
-N:不在PC端展示
-r:录制mp4/mkv文件
关闭设备请求,开启设备
设备关机以及重启
pm(package manager)可以获取一些安装到Android设备上的app的信息
pm list packages 用法:list packages [ options] filter
获取所有的应用的包名
列出系统应用
列出第三方应用
查看它们的关联文件
adb shell pm list package -f
查看软件包的安装来源
pm dump 包名 很多dump信息
安装应用
apk如果在电脑用 adb install
如果在Android设备上用 adb shell pm install
卸载应用,同adb uninstall ,后跟包名
清除应用数据
am(activity manager,字面意思就跟activity有关,大家都知道Android的界面都是由一个个activity显示的)
启动一个Activity
获取到package和launch_activity
AndroidSDK中aapt工具,检索命令结果,可以获取到package和launch_activity
这里涉及到一个点,如何找到程序的入口,首先你要知道是哪个activity才能启动;
启动华为系统相机
打开音乐播放器
播放指定音乐:
先停止目标应用,再启动
等待应用完成启动
启动网页(androidintentactionVIEW具体参考Android官网)
结束应用
input
模拟输入,向获得焦点的EditText控件输入内容
返回主界面
发送一个点击 *** 作的指令,参数是<x> <y>坐标
从左往右滑动屏幕, /从 100 100 经历300毫秒滑动到 200 200
长按 *** 作,在 100 100 位置长按 1000毫秒
1getevent命令
我们首先是根据adb shell getevent命令获取到被点击位置的信息。
2sendevent实现模拟长按
这里需要注意的是,我们获得的是16进制,输入必须是10进制,需要自行转换一下。
3密码获取
这里当然是将“getevent”作为命令写入脚本啦。注意要开启子线程,否则会引起ANR。
1、进入设置界面,发送卡下面的显示模式可调分辨率,点击接收卡。
2、在出现的界面单击智能设置,进入智能设置向导1。
3、显示屏类型选择全彩实像数,在下面点击修改屏幕显示区域,调试成想要调试的大小即可。
ADB 全称Android Debug Bridge 是一个功能非常强大的工具,它位于Android SDK安装目录的platform-tools 子目录下,ADB工具即可完成模拟器文件与电脑文件的相互复制,也可安装APK应用,甚至可以直接切换到Android系统中执行部分Linux命令
1、查看当前运行的模拟器,设备:
adb devices
2、切换adb shell终端为root用户:
adb root
3、链接adb tcp接口或者usb串口:
adb connect 19216810252:5555 (tcp 5555端口)
adb connect 93048d8f
4、启动shell
adb -s 19216810252:5555 shell
如果adb devices 下只有一个设备则只需要:
adb shell 即可
5、安装apk文件
adb -s 19216810252:5555 install [-r] [-s] [-t]<file>
-r 强制安装
-s 标示将APK包安装到SD卡上 默认是将APK安装到内部存储器上
-t 如果 报错 Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI] 可以使用该参数
6、卸载apk
adb uninstall [-k] <package>
-k 标示只删除该应用程序,但保留该程序素有的数据和缓存目录。
7、重新挂载文件系统,用来可以读写system等目录
adb -s 19216810252:5555 remount
or
mount -o remount rw/dev/block/mtdblock0/system /
8、复制文件到手机
adb push atxt /sdcard/
9、拷贝文件到电脑
adb pull /sdcard/xyztxt d:/
10、重启设备
adb -s 19216810252:5555 reboot
11、重启设备到bootloader模式
adb -s 19216810252:5555 reboot bootloader
12、启动指定的app的页面
adb -s 19216810252:5555 shell am start -n comandroidsettings/Settings
comandroidsettings 应用程序的包名
Settings 类名(Activity)
13、模拟点击坐标
adb -s 1000245:5555 shell input tap 250 500
x:250 px Y:500 px
14、滑动触摸事件
adb -s 1000245:5555 shell input swipe 200 500 400 500
#向右滑动200像素
15、修改屏幕尺寸
adb -s 1000245:5555 wm size 1080x1920
#修改屏幕尺寸为1080x1920
adb -s 1000245:5555 wm size
#查看屏幕默认尺寸
以上就是关于超实用的adb与adb shell常用命令汇总全部的内容,包括:超实用的adb与adb shell常用命令汇总、Android—ADB命令、ADB常用命令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)