adb命令 – 通用
查看信息
查看设备号
adb devices
指定连接设备使用命令
adb -s xxx 命令
查看adb版本
adb version
查看序列号
adb get-serialno
查看bug报告
adb bugreport
查看adb帮助
adb help
安装apk
安装应用
adb install xxxx.apk #此安装方式,如果已经存在,无法安装
覆盖安装
adb install -r xxxx.apk
安装测试APK
adb install -t xxxx.apk #可和 -r 参数一起使用
安装低版本APK
adb install -d xxxx.apk
安装并授予所有运行时权限
adb install -g xxxx.apk
锁定该应用程序
adb install -l xxxx.apk
安装到sd卡
adb install -s xxxx.apk
卸载apk
1)直接卸载
查看包名:
adb shell pm list packages
指定包名卸载:
adb uninstall 包名
保留用户数据卸载
adb uninstall -k(keep) 包名
2)获取root权限卸载
如果直接卸载不成功,则可能需要获取root权限,删除指定文件下的apk
通过包名获取apk路径(包名地址):
adb shell pm path {包名}
root权限:
adb root
读写权限
adb remount
删除apk:
adb shell rm {包名地址}
3)shell卸载
进入apk目录下进行删除
获取root权限后
进入shell:
adb shell
查看包名:
pm list package
获取路径:
pm path {包名}
进入apk所在目录
cd /system/app/xxx
彻底删除apk:
rm -rf xxx.apk
传递文件
将移动设备中的文件传送到PC上
adb pull 移动设备路径 PC路径
将PC中的文件传送到移动设备端
adb push PC路径 移动设备路径 (sdcard)
日志
查看和跟踪系统日志缓冲区的信息
adb logcat
日志等级
参数 | 含义 | 作用 |
---|---|---|
V | Verbose | 最低等级,开发调试中的一些详细信息,仅在开发中使用,不可再发布产品中 |
D | Debug | 调试,用于调试的信息,可以在发布产品中关闭,比较常见 |
I | info | 信息,一般提示性的信息 |
W | Warning | 警告 |
E | Error | 错误,已经出现可影响运行的错误,比如应用crash时输出的日志 |
在 E级别中可以搜索这个关键字:fatal exception
ANR全名Application Not Responding,也就是应用无响应
当操作在一段时间内系统无法处理时,系统层面会弹出ANR对话框
在日志中查询:ANR in
在查到ANR in 之后 上一行会有
打印时间
adb logcat -v time
使用不同的颜色来显示每个优先级
adb logcat -v color
将日志输出到文件(文件存在手机上)
adb logcat -f 文件名/路径
保存日志到PC上
adb logcat > 文件名/路径
清理已存在的日志
adb logcat -c
打印Warning以上级别的日志
adb logcat *:W
关机重启
重启手机
adb reboot
重启手机到recovery刷机模式
adb reboot recovery
重启手机到bootloader界面
adb reboot bootloader
关闭手机
adb shutdown
adb命令 – adb shell
录屏截图
屏幕截图
adb shell screencap /sdcard/xxx.png
老版本无exec-out命令,只适合于新版的截图
adb exec-out screencap -p > xxx.png
录制视频
adb shell screenrecord /sdcard/xxx.mp4
查看设备信息
查看手机信息
adb shell getprop
查看设备型号
adb shell getprop ro.product.model
查看手机序列号
adb shell getprop ro.serialno
查看Android系统版本
adb shell getprop ro.build.version.release
查看IP地址
adb shell ifconfig | find “Mask”
adb shell ifconfig wlan0
查看网络连接状态
adb shell netcfg
查看更多硬件与系统属性
adb shell cat /system/build.prop
查看占用内存前10 的app
adb shell top -s 10
模拟手机按键(input)
打开“指针位置” 设置
设置——开发者选项——指针位置
模拟点击事件
adb shell input tap x坐标 y坐标
输入文本
首先需要把光标移到输入框,然后执行以下命令
adb shell input text xxx
模拟滑动事件
adb shell input swipe <起点x> <起点y> <终点x> <终点y> <滑动时长>
返回键
adb shell input keyevent 4
返回home键(置应用于后台)
adb shell input keyevent 3
音量放大
adb shell input keyevent 24
音量缩小
adb shell input keyevent 25
具体键值可参考input keyevent发送按键值
adb命令 – pm&am
pm
pm -- package manager,使用 pm 命令可以去模拟 android 行为或者查询设备上的应用信息等。
输出所有软件包,或者,仅输出软件包名称包含 filter 中的文本的软件包
list packages [options] filter
具体选项:
-f:查看它们的关联文件。
-d:进行过滤以仅显示已停用的软件包。
-e:进行过滤以仅显示已启用的软件包。
-s:进行过滤以仅显示系统软件包。
-3:进行过滤以仅显示第三方软件包。
-i:查看软件包的安装程序。
-u:也包括已卸载的软件包。
--user user_id:要查询的用户空间。
输出所有已知的权限组
list permission-groups
输出所有已知的权限,或者,仅输出 group 中的权限
list permissions [options] group
具体选项:
-g:按组进行整理。
-f:输出所有信息。
-s:简短摘要。
-d:仅列出危险权限。
-u:仅列出用户将看到的权限。
列出所有测试软件包
list instrumentation [options]
具体选项:
-f:列出测试软件包的 APK 文件。
target_package:仅列出此应用的测试软件包。
输出系统的所有功能
list features
输出当前设备支持的所有库
list libraries
输出系统中的所有用户
list users
输出给定 package 的 APK 的路径
path package
将软件包(通过 path 指定)安装到系统
install [options] path
具体选项:
-r:重新安装现有应用,并保留其数据。
-t:允许安装测试 APK。仅当您运行或调试了应用或者使用了 Android Studio 的 Build > Build APK 命令时,Gradle 才会生成测试 APK。如果是使用开发者预览版 SDK(如果 targetSdkVersion 是字母,而非数字)构建的 APK,那么安装测试 APK 时必须在 install 命令中包含 -t 选项。
-i installer_package_name:指定安装程序软件包名称。
--install-location location:使用以下某个值设置安装位置:
0:使用默认安装位置。
1:在内部设备存储上安装。
2:在外部介质上安装。
-f:在内部系统内存上安装软件包。
-d:允许版本代码降级。
-g:授予应用清单中列出的所有权限。
--fastdeploy:通过仅更新已更改的 APK 部分来快速更新安装的软件包。
--incremental:仅安装 APK 中启动应用所需的部分,同时在后台流式传输剩余数据。如要使用此功能,必须为 APK 签名,创建一个 APK 签名方案 v4 文件,并将此文件放在 APK 所在的目录中。只有部分设备支持此功能。此选项会强制 adb 使用该功能,如果该功能不受支持,则会失败。附加 --wait 选项,可等到 APK 完全安装完毕后再授予对 APK 的访问权限。
--no-incremental 可阻止 adb 使用此功能。
从系统中移除软件包
uninstall [options] package
具体选项:
-k:移除软件包后保留数据和缓存目录。
删除与软件包关联的所有数据。
clear package
启用给定的软件包或组件(写为“package/class”)
enable package_or_component
停用给定的软件包或组件(写为“package/class”)
disable package_or_component
disable-user [options] package_or_component
具体选项:
--user user_id:要停用的用户。
向应用授予权限
grant package_name permission
在搭载 Android 6.0(API 级别 23)及更高版本的设备上,该权限可以是应用清单中声明的任何权限。
在搭载 Android 5.1(API 级别 22)及更低版本的设备上,该权限必须是应用定义的可选权限。
从应用撤消权限
revoke package_name permission
在搭载 Android 6.0(API 级别 23)及更高版本的设备上,该权限可以是应用清单中声明的任何权限。
在搭载 Android 5.1(API 级别 22)及更低版本的设备上,该权限必须是应用定义的可选权限。
更改默认安装位置
set-install-location location
位置值如下:
0:自动:让系统决定最合适的位置。
1:内部:在内部设备存储上安装。
2:外部:在外部介质上安装。
注意:此命令仅用于调试目的;使用此命令可能会导致应用中断和其他意外行为。
返回当前安装位置
get-install-location
返回值如下:
0 [auto]:让系统决定最合适的位置
1 [internal]:在内部设备存储上安装
2 [external]:在外部介质上安装
指定是否应强制执行指定权限
set-permission-enforced permission [true | false]
减少缓存文件以达到给定的可用空间
trim-caches desired_free_space
创建具有给定 user_name 的新用户,从而输出该用户的新用户标识符
create-user user_name
移除具有给定 user_id 的用户,从而删除与该用户关联的所有数据。
remove-user user_id
输出设备支持的最大用户数。
get-max-users
输出给定 package 的域名验证状态,如果未指定软件包,则输出所有软件包的域名验证状态
get-app-links [options] [package]
状态代码的定义如下:
none:没有为此域名记录任何内容
verified:域名已成功通过验证
approved:强行批准了域名,通常是通过执行 shell 命令来实现的
denied:强行拒绝了域名,通常是通过执行 shell 命令来实现的
migrated:从旧响应流程中保留的验证状态
restored:从用户数据恢复流程中保留的验证状态
legacy_failure:旧版验证程序拒绝了域名,原因未知
system_configured:设备配置自动批准了域名
>= 1024:设备验证程序特定的自定义错误代码
具体选项:
--user user_id:包括用户选择的域名(涵盖所有域名,而不仅仅是执行 autoVerify 的域名)。
重置给定软件包的域名验证状态,如果未指定任何软件包,则重置所有软件包的域名验证状态。
reset-app-links [options] [package]
package:要重置的软件包,如果使用“all”,则重置所有软件包
具体选项:
--user user_id:包括用户选择的域名(涵盖所有域名,而不仅仅是执行 autoVerify 的域名)
广播给定 package 的域名验证请求,如果未指定软件包,则发送所有软件包的域名验证请求。仅当软件包之前未记录响应时发送该请求。
verify-app-links [--re-verify] [package]
--re-verify:即使软件包已记录响应也发送
手动设置软件包的域名状态
set-app-links [--package package] state domains
仅当软件包将域名声明为 autoVerify 时,此命令才能正常运行。此命令不会针对无法应用的域名报告失败。
--package package:要设置的软件包,如果使用“all”,则设置所有软件包
state:要为域名设置的代码,有效值为:
STATE_NO_RESPONSE (0):按未记录过任何响应的情况进行重置。
STATE_SUCCESS (1):将域名视为已成功通过域名验证代理的验证。请注意,域名验证代理可以覆盖此设置。
STATE_APPROVED (2):将域名视为一律批准,防止域名验证代理更改状态。
STATE_DENIED (3):将域名视为一律拒绝,防止域名验证代理更改状态。
domains:要更改的域名的列表(以空格分隔),如果使用“all”,则更改所有域名。
am
am -- activity manager,可以使用 am 命令去模拟各种系统的行为,例如去启动一个 activity,强制停止进程,发送广播等。
启动由 intent 指定的 Activity。
start [options] intent
具体选项:
-D:启用调试功能。
-W:等待启动完成。
--start-profiler file:启动性能分析器并将结果发送至 file。
-P file:类似于 --start-profiler,但当应用进入空闲状态时剖析停止。
-R count:重复启动 activity count 次。在每次重复前,将完成顶层 activity。
-S:在启动 activity 前,强行停止目标应用。
--opengl-trace:启用 OpenGL 函数的跟踪。
--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。
启动由 intent 指定的 Service
startservice [options] intent
具体选项:
--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。
强行停止与 package(应用的软件包名称)关联的所有进程
force-stop package
终止与 package(应用的软件包名称)关联的所有进程
kill [options] package 此命令仅终止可安全终止且不会影响用户体验的进程。
具体选项:
--user user_id | all | current :指定要终止哪个用户的进程;如果未指定,则终止所有用户的进程。
终止所有后台进程
kill-all
发出广播 intent
broadcast [options] intent
具体选项包括:
[--user user_id | all | current] :指定要发送给哪个用户;如果未指定,则发送给所有用户。
使用 Instrumentation 实例启动监控
instrument [options] component 通常情况下,目标 component 采用 test_package/runner_class 格式。
具体选项:
-r:输出原始结果(否则,对 report_key_streamresult 进行解码)。与 [-e perf true] 结合使用可生成性能测量的原始输出。
-e name value:将参数 name 设为 value。 对于测试运行程序,通用格式为 -e testrunner_flag value[,value...]。
-p file:将剖析数据写入 file。
-w:等待插桩完成后再返回。测试运行程序需要使用此选项。
--no-window-animation:运行时关闭窗口动画。
--user user_id | current:指定以哪个用户身份运行插桩;如果未指定,则以当前用户身份运行。
启动 process 的性能分析器,将结果写入 file
profile start process file
停止 process 的性能分析器
profile stop process
转储 process 的堆,写入 file
dumpheap [options] process file
具体选项:
--user [user_id | current]:提供进程名称时,指定要转储的进程的用户;如果未指定,则使用当前用户。
-n:转储原生堆,而非托管堆。
设置要调试的应用 package
set-debug-app [options] package
具体选项:
-w:应用启动时等待调试程序。
--persistent:保留此值。
清除之前使用 set-debug-app 设置的待调试软件包
clear-debug-app
开始监控崩溃或 ANR
monitor [options]
具体选项:
--gdb:在崩溃/ANR 时,在给定的端口上启动 gdbserv。
控制 package 的屏幕兼容性模式
screen-compat {on | off} package
替换设备显示尺寸
display-size [reset | widthxheight] 此命令支持使用大屏设备模仿小屏幕分辨率(反之亦然),对于在不同尺寸的屏幕上测试应用非常有用。
示例:
am display-size 1280x800
替换设备显示密度
display-density dpi
此命令支持使用低密度屏幕在高密度屏幕环境上进行测试(反之亦然)对于在不同密度的屏幕上测试应用非常有用
示例:
am display-density 480
以 URI 的形式输出给定的 intent 规范
to-uri intent
以 intent: URI 的形式输出给定的 intent 规范
to-intent-uri intent
adb命令 – dumpsys
dumpsys 默认打印出当前系统所有service信息,在后面可加上具体的服务名
查看内存信息
adb shell dumpsys meminfo #获取pid
adb shell dumpsys meminfo pid
adb命令 – 性能相关
包信息Package Information
adb shell dumpsys package
查看指定APK CPU
adb shell dumpsys cpuinfo |findstr com.android.xxx
获取电池信息
adb shell dumpsys battery
查看显示帧率
adb shell dumpsys gfxinfo
查看显示参数
adb shell dumpsys display
查看位置信息
adb shell dumpsys location
更全面信息可参考ADB 用法大全&Android 调试桥 (adb)