连接设备
-
打开开发者开启USB调试即可
-
通过Wi-Fi连接
版本 方法 Android11 开启开发者模式---> 启用无线调试选项->选择 使用配对码配对设备。记下设备上显示的配对码、IP 地址和端口号--->android_sdk/platform-tools目录下 执行adb pair ip地址:端口号---> 输入配对码Android10 设置目标设备以监听端口5555上的TCP/ip连接 adb tcpip 5555 ---> adb connect ip地址:5555
查询设备
adb devices
上图中的40c3c4a8和emulator-5554是设备号。当存在多个设备时,使用adb -s 设备号来区分不同的设备。
adb -s emulator-5554 install demo.apk
注意:如果您在多个设备可用时发出命令但未指定目标设备,adb 会生成错误。
安装应用
adb install -r -d demo.apk
-
r: 更换现有的应用程序
-
t: 允许测试包
-
d: 允许版本代码降级(仅针对可调试包)
-
p: 部分应用程序安装(只安装多个)
-
g: 授予所有运行时权限
拷贝文件
- 将手机中的文件拷贝到本地
adb pull PhotoPath LocalPath - 将本地文件拷贝到手机
adb push LocalPath PhotoPath
停止adb服务
adb kill-server
log相关
- 清除Log
adb log -c - 保存到本地
adb logcat > Logname.log - 终端查看Log并添加过滤条件
adb logcat | grep -iE "Camera" - 改变Log缓冲区的大小
adb logcat -G 5m - 查看Log缓冲区
adb logcat -g
adb shell
调用 Activity 管理器 (am)
例:adb shell -am start -a android.intent.action.VIEW
1.start启动由 intent 指定的 Activity
- -D: 请用调试功能
- -W:等待启动完成
--start-profiler file:启动性能剖析器并将结果发送至file。-P file:类似于--start-profiler,但当应用进入空闲状态时剖析停止。-R count:重复启动 Activitycount次。在每次重复前,将完成顶层 Activity。-S:在启动 Activity 前,强行停止目标应用。--opengl-trace:启用 OpenGL 函数的跟踪。--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。
adb shell am start -W -S -R 5 com.oppo.camera //循环5次,每次启动前都干掉应用,保证冷启动
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] pkg=com.oppo.camera }
Status: ok
LaunchState: COLD
Activity: com.oppo.camera/.Camera
ThisTime: 793 //最后一个启动的Activity的启动耗时
TotalTime: 793 //应用自身启动耗时
WaitTime: 818 //ActivityManagerService启动App的Activity时的总时间(包括当前Activity的onPause()和自己Activity的启动)。
Complete
- 启动由
intent指定的Service。
adb shell -am startservice [options] intent
options:
--user user_id | current:指定要作为哪个用户运行;如果未指定,则作为当前用户运行。
- 强制停止与某个app关联的所有进程
adb shell am force-stop com.oppo.camera
- 终止与app关联的所有进程。此命令仅终止可安全终止且不会影响用户体验的进程。
adb shell am kill [options] package
adb shell am kill [options] com.oppo.camera
--user user_id | all | current:指定要终止哪个用户的进程;如果未指定,则终止所有用户的进程
- 终止所有后台进程
adb shell am kill-all
- 发出广播Intent
adb shell am broadcast [options] intent
options:
--user user_id | all | current:指定要终止哪个用户的进程;如果未指定,则终止所有用户的进程
- 监听Crash和ANR
adb shell am monitor [options]
options:
--gdb:在崩溃/ANR 时,在给定的端口上启动 gdbserv
- 控制
package的屏幕兼容性模式。
adb shell am screen-compat {on 或 off} packagesName
- 替换设备显示尺寸
// 三星设备测试无效
adb shell am display-size [ reset | width x height ]
- 替换设备显示密度
// 三星设备测试无效
adb shell am display-density dpi
- 以 URI 的形式输出给定的 intent 规范。
adb shell am to-uri 'intent'
adb shell am to-intent-uri 'intent'
调用软件包管理器 (pm)
- 输出软件包
adb shell pm list packages [options] 过滤条件
options:
-f:查看它们的关联文件。-d:进行过滤以仅显示已停用的软件包。-e:进行过滤以仅显示已启用的软件包。-s:进行过滤以仅显示系统软件包。-3:进行过滤以仅显示第三方软件包。-i:查看软件包的安装程序。-u:也包括已卸载的软件包。--user user_id:要查询的用户空间。
- 输出所有已知的权限组。
adb shell pm list permission-groups
- 输出所有已知的权限。
// group 对于permission-groups遍历的权限组
adb shell pm list permissions [options] group
options:
-g:按组进行整理。-f:输出所有信息。-s:简短摘要。-d:仅列出危险权限。-u:仅列出用户将看到的权限。
- 列出所有测试软件包
adb shell pm list instrumentation [options]
options:
-f:列出测试软件包的 APK 文件。target_package:仅列出此应用的测试软件包。
- 输出系统的所有功能。
adb shell pm list features
- 输出当前设备支持的所有库。
adb shell pm list libraries
- 输出系统中的所有用户。
adb shell pm list users
- 输出给定
package的 APK 的路径。
adb shell pm path
- 将软件包(通过
path指定)安装到系统。
adb shell pm 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 使用此功能。
- 从系统中移除软件包。
adb shell pm uninstall [options] package
options
-k:移除软件包后保留数据和缓存目录。
- 删除与软件包关联的所有数据。
adb shell pm clear packages
- 启用给定的软件包或组件(写为“package/class”)
adb shell pm enable package/class
- 停用给定的软件包或组件
adb shell pm disable package/class
- 向应用授予权限
在搭载 Android 6.0(API 级别 23)及更高版本的设备上,该权限可以是应用清单中声明的任何权限。在搭载 Android 5.1(API 级别 22)及更低版本的设备上,该权限必须是应用定义的可选权限。
adb shell pm grant package_name permission
- 取消权限
adb shell pm revoke package_name permission
- 更改默认安装位置
0:自动:让系统决定最合适的位置。1:内部:在内部设备存储上安装。2:外部:在外部介质上安装。
adb shell pm set-install-location 0/1/2
- 返回当前安装位置
adb shell pm get-install-location
- 指定是否应强制执行指定权限。
adb shell pm set-permission-enforced `permission` [true | false]
- 减少缓存文件以达到给定的可用空间。
adb shell pm trim-caches `desired_free_space`
- 创建具有给定
user_name的新用户,从而输出该用户的新用户标识符。
adb shell pm create-user `user_name`
- 移除具有给定
user_id的用户,从而删除与该用户关联的所有数据。
adb shell pm remove-user `user_id`
- 输出设备支持的最大用户数。
adb shell pm get-max-users
截屏
adb shell screencap /sdcard/screen.png
录屏
录制出来的视频没有声音
adb shell screenrecord [options] /PhotoPath/demo.mp4
options
| 选项 | 说明 |
|---|---|
| --help | 显示命令语法和选项 |
| --size 宽x高 | 设置视频大小:1280x720。默认值为设备的本机显示屏分辨率(如果支持);如果不支持,则为 1280x720。为获得最佳效果,请使用设备的 Advanced Video Coding (AVC) 编码器支持的大小。 |
| --bit-rate rate | 设置视频的视频比特率(以 MB/秒为单位)。默认值为 4Mbps。您可以增加比特率以提升视频品质,但这样做会导致视频文件变大。下面的示例将录制比特率设为 6Mbps:screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
| --time-limit time | 设置最大录制时长(以秒为单位)。默认值和最大值均为 180(3 分钟)。 |
| --rotate | 将输出旋转 90 度。此功能处于实验阶段。 |
| --verbose | 在命令行屏幕显示日志信息。如果您不设置此选项,则该实用程序在运行时不会显示任何信息 |
读取应用的 ART 配置文件
adb shell cmd package dump-profiles 'PackageName'
//dump
adb pull /data/misc/profman/PackageName.txt
恢复出厂设置
慎用
adb shell cmd testharness enable
电池相关
adb shell dumpsys battery set level 3 //设置手机电量为3%
adb shell dumpsys battery unplug //设置断开充电
adb shell dumpsys battery reset //复位,恢复实际状态
获取当前Activity
adb shell "dumpsys window | grep mCurrentFocus"
//ubuntu
adb shell dumpsys activity | grep -iE "mResume"
//windows
shell dumpsys activity | findstr -iE "mResume"
填充手机内存
//创建一个名为aa的文件,大小为1024=1G,更改count即可
adb shell dd if=/dev/zero of=sdcard/aa bs=1024000 count=1024