前言
ADB
,即 Android Debug Bridge
是一种允许和已连接的 Android
设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell
(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools
中找到 adb
工具或下载 ADB Kits
。
ADB语法命令
基本语法:
bash
adb [-d|-e|-s <serialNumber>] <command.>
- -d : 指定当前唯一通过
USB
连接的Android
设备为命令目标 - -e : 指定当前唯一运行的模拟器为命令目标
- -s <serialNumber.> 指定相应
serialNumber
号的设备/模拟器为命令目标
如果当前有一个设备连接 ,可以省略掉[-d|-e|-s <serialNumber.>
] 这一部分,直接使用 adb <command.>
常用的设备连接方式有两种:
- 通过USB数据线将电脑和手机进行连接,
Android
手机将开发者选项-USB调试
开关打开 - 通过网络连接,电脑和
Android
设备保持在同一网段,Android
设备有root权限,设备打开USB调试
开关
常用语法
查看本机adb版本信息
bash
adb version
启动/停止adb
bash
adb start-server / adb kill-server
将设备切换到root权限下
bash
adb root
当前已连接的设备
bash
adb devices
1、文件管理
1.0.0 从手机设备上下载指定文件到本地计算机上
bash
adb pull <remote> [local]
remote: 远程设备,如手机、大屏设备
local: 本机设备
例: adb pull /storage/emulated/0/Pictures/screenshot.png
/Users/ho/Desktop/screenshot.png
1.0.1 从本机设备文件推送到手机设备上
bash
adb push [local] <remote>
例: adb push /Users/ho/Desktop/screenshot.png
/storage/emulated/0/Pictures/screenshot.png
1.0.2 列出指定目录下内容
bash
adb shell ls [options] <directory>
<directory>: 指定目录,不写的话获取当前目录下内容
[options] : 可选参数,可以筛选不同条件的内容
-无 : 列出目录下所有的文件和文件夹
-a : 列出目录下的所有文件(包括隐藏的)
-i : 列出目录下的所有文件和索引编号
-s : 列出目录下的所有文件和文件大小
-n : 列出目录下的所有文件及其 UID和 GID
-R : 列出目录下的所有子目录中的文件
1.0.3 进入指定目录
bash
adb shell cd <directory>
例:adb shell cd system/
1.0.4 删除文件或者文件夹
bash
adb shell rm [options] <files or directory>
[options] : 可选参数,删除的一些操作
- 无 : 删除文件
- f : 列出目录下所有的文件和文件夹
- r : 强制删除指定目录中的所有文件和子目录
- d : 删除指定目录,即使它是一个非空目录
- i : 交互式删除,删除前提示
1.0.5 创建目录
bash
adb shell mkdir [options] <directory-name>
[options] : 可选参数,创建目录的一些操作
- 无 : 创建指定目录
- m : 创建指定目录并赋予读写权限
- p : 创建指定目录及其父目录
例:adb shell mkdir -m /example/
1.0.6 创建空文件
bash
adb shell touch <file>
例:adb shell touch example.txt
1.0.7 复制文件和目录
bash
adb shell cp <source> <dest>
<source>:源文件目录
<dest>:目标文件目录
例:adb shell cp /Users/ho/Desktop/screenshot.png
/storage/emulated/0/Pictures/
1.0.8 输出当前目录路径
bash
adb shell pwd
例:t7_an400:/system/app $ pwd
输出:/system/app
1.0.9 移动和重命名文件
bash
adb shell mv [options] <source> <dest>
<source>:源文件目录
<dest>:目标文件目录
例:mv /system/app/WPS_Office/WPS_Office.apk /data/
2、日志打印
基本语法:
bash
adb logcat [option] [filter-specs]
如果要停止日志打印,按下ctr+c
或者commond + c
2.0.0 按级别过滤日志
bash
adb logcat [filter-specs]
[filter-specs]: 日志过滤级别
*:V >> 过滤只显示 Verbose 及以上级别(优先级最低)
*:D >> 过滤只显示 Debug 及以上级别
*:I >> 过滤只显示 Info 及以上级别
*:W >> 过滤只显示 Warning 及以上级别
*:E >> 过滤只显示 Error 及以上级别
*:F >> 过滤只显示 Fatal 及以上级别
*:S >> 过滤只显示 Silent 及以上级别(优先级最高,什么也不输出)
2.0.1 按tag和级别过滤日志
bash
adb logcat [tag:level] [tag:level] ....
例:adb logcat MainActivity:D App:W *:E
表示只输出 tag MainActivity 的 Debug 以上级别日志,输出 tag App 的 Warning 以上级别日志,及其它 tag 的 Error 级别日志。
2.0.2 清空已存在的日志
bash
adb logcat -c
2.0.3 将日志显示在控制台
bash
adb logcat -d
2.0.4 将日志输出到文件
bash
adb logcat > file_path
例:adb logcat > /Users/ho/Desktop/
2.0.5 打印指定日志缓冲区的大小
bash
adb logcat -G 100M
2.0.6 过滤指定tag的日志
bash
adb logcat grep | tag
例:adb logcat grep | PowerKeyReceiver
3、查看Android系统信息
3.0.0 查看指定属性值
bash
adb shell getprop [options]
例:adb shell getprop persist.sys.swipeleft
3.0.1 设置属性值
bash
adb shell setprop [options] [value]
例:adb shell setprop persist.sys.swipeleft 1
3.0.2 查看系统信息
bash
adb shell dumpsys [options]
# 列出最近使用过的activity栈,按时间从近到远排序
adb shell dumpsys activity
# 查看Activity的相关信息
adb shell dumpsys activity [包名]
# 查看最上层的activity的View布局
adb shell dumpsys activity top
例:adb shell dumpsys activity top | grep ACTIVITY
ACTIVITY com.vst.xnlauncher/.newui.MainNewActivity 2c1ad75 pid=1177
ACTIVITY org.qtproject.example.WriteBoard/org.qtproject.qt.android.bindings.QtActivity
3.0.3 修改设备分辨率
bash
adb shell wm size 1920x1080
3.0.4 查看设备分辨率
bash
adb shell wm size
Physical size: 3840x2160
Override size: 1920x1080
Physical size: 设备原先的分辨率
Override size: 当前修改后的分辨率
3.0.5 修改设备屏幕密度
bash
adb shell wm density 160
3.0.6 查看设备屏幕密度
bash
adb shell wm density
Physical density: 480
Override density: 160
3.0.7 查看设备显示屏参数
bash
adb shell dumpsys window displays
3.0.8 查看android_id
bash
adb shell settings get secure android_id
73f34d0eef311581
3.0.9 查看系统版本
bash
adb shell getprop ro.build.version.release
11
3.1.0 查看mac地址
bash
adb shell cat /sys/class/net/eth0/address
40:e7:93:2e:17:76
3.1.1 查看设备cpu信息
bash
adb shell cat /proc/cpuinfo
processor : 0
BogoMIPS : 48.00
Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 cpuid
CPU implementer : 0x41
CPU architecture: 8
CPU variant : 0x0
CPU part : 0xd09
CPU revision : 2
.....
3.1.2 查看设备内存信息
bash
adb shell cat /proc/meminfo
MemTotal: 8143476 kB
MemFree: 4668636 kB
MemAvailable: 6485660 kB
Buffers: 27684 kB
Cached: 1457424 kB
SwapCached: 0 kB
Active: 1101668 kB
Inactive: 1039864 kB
.....
3.1.3 查看硬件信息
bash
adb shell cat /system/build.prop
ro.build.id=RQ3A.210805.001.A1
ro.build.display.id=vst_newline_q-series
ro.build.version.incremental=eng.chenwe.20231117.154040
ro.build.version.sdk=30
ro.build.version.preview_sdk=0
ro.build.version.preview_sdk_fingerprint=REL
ro.build.version.codename=REL
ro.build.version.all_codenames=REL
ro.build.version.release=11
ro.build.version.release_or_codename=11
ro.build.version.security_patch=2021-08-05
.....
4、应用管理
基本语法:
bash
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u]
[--user USER_ID] [FILTER]
-无 : 列出系统中所有的apk包名
-f : 列出apk包名和所对应的路径
-d : 只显示disabled应用
-e : 只显示enable应用
-s : 只显示系统应用
-3 : 只显示3方应用
-i : 显示应用的 installer
-u : 包含已卸载应用
4.0.0 显示系统中所有应用
bash
adb shell pm list packages
package:com.google.android.carriersetup
package:com.android.cts.priv.ctsshim
package:com.google.android.ext.services
.....
4.0.1 显示系统中所有应用
bash
adb shell pm list packages -f
package:/system/priv-app/CarrierSetup/CarrierSetup.apk=com.google.android.carriersetup
package:/system/priv-app/CtsShimPrivPrebuilt/CtsShimPrivPrebuilt.apk=com.android.cts.priv.ctsshim
package:/system/priv-app/GoogleExtServices/GoogleExtServices.apk=com.google.android.ext.services
.....
4.0.2 显示系统应用
bash
adb shell pm list packages -s
package:com.google.android.carriersetup
package:com.android.cts.priv.ctsshim
package:com.google.android.ext.services
package:com.google.android.katniss
.....
4.0.3 显示三方应用
bash
adb shell pm list packages -3
package:com.finalwire.aida64
package:org.qtproject.example.WriteBoard
.....
4.0.4 显示应用的installer
bash
adb shell pm list packages -3
package:com.google.android.carriersetup installer=null
package:com.android.cts.priv.ctsshim installer=null
package:com.google.android.ext.services installer=null
package:com.google.android.katniss installer=null
.....
4.0.4 包含已显示卸载应用
bash
adb shell pm list packages -u
package:com.google.android.carriersetup
package:com.android.cts.priv.ctsshim
package:com.google.android.ext.services
package:com.google.android.katniss
.....
4.0.5 安装apk
bash
adb install /Users/ho/Desktop/AIDA64.apk
4.0.6 卸载apk
bash
adb uninstall [-k] <package-name>
<package-name> 表示应用的包名,[-k]参数可选,表示卸载应用但保留数据和缓存目录。
例:adb uninstall com.finalwire.aida64
4.0.7 清除应用数据与缓存
bash
adb shell pm clear <package-name>
例:adb shell pm clear com.finalwire.aida64
4.0.8 查看前台 activity
bash
adb shell dumpsys activity top | grep ACTIVITY
ACTIVITY com.finalwire.aida64/.HHMainActivity e968545 pid=8302
ACTIVITY com.ho.launcher/.app.MoreAppsActivity d67d300 pid=1137
ACTIVITY com.ho.setting/.MainActivity 4b2d6ad pid=14017
.....
4.0.9 查看正在运行的service
bash
adb shell dumpsys activity services
ACTIVITY MANAGER SERVICES (dumpsys activity services)
User 0 active services:
* ServiceRecord{a6742d3 u0 com.android.toofifi/com.mphotool.ball.service.PullPlayPermissionService}
intent={cmp=com.android.toofifi/com.mphotool.ball.service.PullPlayPermissionService}
packageName=com.android.toofifi
processName=com.android.toofifi
baseDir=/system/app/Toofifi/Toofifi.apk
dataDir=/data/user/0/com.android.toofifi
app=ProcessRecord{f554e88 3684:com.android.toofifi/1000}
allowWhileInUsePermissionInFgs=true
recentCallingPackage=com.android.toofifi
createTime=-50m55s508ms startingBgTimeout=-50m40s507ms
lastActivity=-50m55s507ms restartTime=-50m55s507ms createdFromFg=false
startRequested=true delayedStop=false stopIfKilled=false callStart=true lastStartId=1
4.1.0 查看应用的详细信息
bash
adb shell dumpsys package <package-name>
持续更新...