ADB命令语法
adb 命令的基本语法如下:
adb [-d|-e|-s <serial-number>] <command>
单一设备/模拟器连接
如果只有一个设备/模拟器连接时,可以省略掉 [-d|-e|-s <serial-number>] 这一部分,直接使用 adb <command>。
多个设备/模拟器连接
如果有多个设备/模拟器连接,则需要为命令指定目标设备,下表是指定目标设备的命令选项:
参数 含义
-d 指定当前唯一通过 USB 连接的 Android 设备为命令目标
-e 指定当前唯一运行的模拟器为命令目标
-s <serial-number> 指定相应设备序列号的设备/模拟器为命令目标
在多个设备/模拟器连接的情况下较常用的是 -s <serial-number> 参数,serial-number是指设备的设备序列号,可以通过 adb devices 命令获取。
adb version
adb start-server
一般无需手动启
adb kill-server
adb root
adb -P <port> start-server
ADB的默认端口为 5037。
adb devices
查看应用列表的基本命令格式是:
adb shell pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [FILTER]
adb shell pm list packages 后面可以跟一些可选参数进行过滤查看不同的列表,可用参数及含义如下
-f 显示应用关联的 apk 文件
-d 只显示 disabled 的应用
-e 只显示 enabled 的应用
-s 只显示系统应用
-3 只显示第三方应用
-i 显示应用的 installer
-u 包含已卸载应用
<filter> 包名包含 <filter> 字符串
adb shell pm list packages
adb shell pm list packages -s
adb shell pm list packages -3
adb shell pm list packages test
基本命令格式:
adb install [-l] [-r] [-t] [-s] [-d] [-g] <apk-file>
adb install
后面可以跟一些可选参数来控制安装 APK 的行为,可用参数及含义如下:
-l | 将应用安装到保护目录 /mnt/asec |
---|---|
-r | 允许覆盖安装 |
-t | 允许安装 AndroidManifest.xml 里 application 指定 android:testOnly=“true” 的应用 |
-s | 将应用安装到 sdcard |
-d | 允许降级覆盖安装 |
-g | 授予所有运行时权限 |
包含安装进度和状态,安装状态如下:
adb install
实际是分三步完成:
push apk 文件到 /data/local/tmp。
调用 pm install 安装。
删除 /data/local/tmp 下的对应 apk 文件。
卸载应用的基本命令格式是:
adb uninstall [-k] <package-name>
表示应用的包名,-k 参数可选,表示卸载应用但保留数据和缓存目录
adb shell pm clear <package-name>
adb shell dumpsys activity activities | grep mFocusedActivity
adb shell dumpsys activity services [<package-name>]
<package-name> 参数不是必须的,指定 <package-name> 表示查看与某个包名相关的 Services,不指定表示查看所有 Services。<package-name> 不一定要给出完整的包名,可以只给一部分,那么所给包名相关的 Services 都会列出来。
adb shell dumpsys package <package-name>
运行次命令的输出中包含很多信息,包括 Activity Resolver Table、Registered ContentProviders、包名、userId、安装后的文件资源代码等路径、版本信息、权限信息和授予状态、签名版本信息等。
adb shell pm path <package-name>
start [options] <intent> 启动 <intent> 指定的 Activity
startservice [options] <intent> 启动 <intent> 指定的 Service
broadcast [options] <intent> 发送 <intent> 指定的广播
force-stop <package-name> 停止 <package-name> 相关的进程
<intent>
参数很灵活,和写 Android 程序时代码里的 Intent 相对应。用于决定 intent 对象的选项如下:
-a <action> 指定 action,比如 android.intent.action.VIEW
-c <category> 指定 category,比如 android.intent.category.APP_CONTACTS
-n <component> 指定完整 component 名,用于明确指定启动哪个 Activity
<intent>
里还能带数据,就像写代码时的 Bundle 一样:
adb shell am start [options] <intent>
例如:
adb shell am start -a android.settings.SETTINGS # 打开系统设置页面
adb shell am start -a android.intent.action.DIAL -d tel:10086 # 打开拨号页面
options 是一些改变其行为的选项,支持的可选参数及含义如下:
-D 启用调试
-W 等待启动完成
–start-profiler file 启动分析器并将结果发送到 file
-P file 类似于 --start-profiler,但当应用进入空闲状态时分析停止
-R count 重复 Activity 启动次数
-S 启动 Activity 前强行停止目标应用
–opengl-trace 启用 OpenGL 函数的跟踪
–user user_id current
adb shell am startservice [options] <intent>
adb shell am stopservice [options] <intent>
adb shell am broadcast [options] <INTENT>
比如某个广播的场景很难制造,可以考虑通过这种方式来发送广播。 既能发送系统预定义的广播,也能发送自定义广播。如下是部分系统预定义广播及正常触发时机:
android.net.conn.CONNECTIVITY_CHANGE 网络连接发生变化
android.intent.action.SCREEN_ON 屏幕点亮
android.intent.action.SCREEN_OFF 屏幕熄灭
android.intent.action.BATTERY_LOW 电量低,会弹出电量低提示框
android.intent.action.BATTERY_OKAY 电量恢复了
android.intent.action.BOOT_COMPLETED 设备启动完毕
android.intent.action.DEVICE_STORAGE_LOW 存储空间过低
android.intent.action.DEVICE_STORAGE_OK 存储空间恢复
android.intent.action.PACKAGE_ADDED 安装了新的应用
android.net.wifi.STATE_CHANGE WiFi连接状态发生变化
android.net.wifi.WIFI_STATE_CHANGED WiFi状态变为启用/关闭/正在启动/正在关闭/未知
android.intent.action.BATTERY_CHANGED 电池电量发生变化
android.intent.action.INPUT_METHOD_CHANGED 系统输入法发生变化
android.intent.action.ACTION_POWER_CONNECTED 外部电源连接
android.intent.action.ACTION_POWER_DISCONNECTED 外部电源断开连接
android.intent.action.DREAMING_STARTED 系统开始休眠
android.intent.action.DREAMING_STOPPED 系统停止休眠
android.intent.action.WALLPAPER_CHANGED 壁纸发生变化
android.intent.action.HEADSET_PLUG 插入耳机
android.intent.action.MEDIA_UNMOUNTED 卸载外部介质
android.intent.action.MEDIA_MOUNTED 挂载外部介质
android.os.action.POWER_SAVE_MODE_CHANGED 省电模式开启
都可以通过广播来触发。
adb shell am force-stop <packagename>
adb shell am send-trim-memory <pid> <level>
参数说明: