ADB AM (Activity Manager) 命令详解
adb shell am 是一个功能强大的 Android Debug Bridge (ADB) 命令,用于通过命令行与设备上的
Activity Manager(活动管理器) 系统服务进行交互。
活动管理器负责管理应用程序生命周期、启动组件(如 Activity、Service、Broadcast Receiver)和发送 Intent。
一、 am 命令的基本结构
该命令总是通过 ADB Shell 执行,其基本格式如下:
adb shell am <COMMAND> [options]
二、 核心功能和最常用命令
am 命令主要用于启动、停止和操纵应用组件。以下是几个最常用的子命令:
子命令
功能描述
示例
start
启动一个指定的 Activity。这是最常用的命令。
am start -n com.android.settings/.Settings
startservice
启动一个指定的 Service。
am startservice -n com.example.app/.MyService
broadcast
发送一个全局的 Intent 广播。
am broadcast -a android.intent.action.BOOT_COMPLETED
force-stop
强制停止与指定包名关联的所有应用进程。
am force-stop com.tencent.mm
kill
杀死与指定包名关联的后台进程(比 force-stop 温和)。
am kill com.google.android.youtube
instrument
启动一个 Instrumentation 进程,常用于运行自动化测试。
am instrument -w com.example.app/android.test.InstrumentationTestRunner
三、 start 命令的详细用法与示例
am start 是用于测试和调试 Activity 生命周期、权限和 Intent 过滤器的关键工具。
1. 启动主 Activity (默认 Intent)
启动应用中标记为 Launcher 的主 Activity。
adb shell am start -n com.example.myapp/.MainActivity# -n (component): 指定组件名,格式为 <包名>/<类名>
2. 通过 Action 启动 (隐式 Intent)
通过 Intent Action 启动能处理该 Action 的 Activity,例如启动拨号界面。
adb shell am start -a android.intent.action.DIAL -d tel:10086# -a (action): 指定 Intent 动作# -d (data): 指定 URI 数据
3. 启动设置界面
这是一个启动特定系统设置页面的常见用法。
adb shell am start -a android.settings.SETTINGS
4. 传递额外数据 (Extras)
向 Activity 传递额外的键值对数据,通常用于测试数据的初始化。
adb shell am start -n com.example.app/.DetailActivity --es "user_id" "12345" --ei "count" 5# --es <key> <value>: 传递一个字符串 (String)# --ei <key> <value>: 传递一个整数 (Integer)# --ez <key> <value>: 传递一个布尔值 (Boolean)
5. 指定 MIME 类型
限制 Intent 只能匹配处理特定 MIME 类型的 Activity。
adb shell am start -a android.intent.action.VIEW -t "image/jpeg"# -t (mime-type): 指定 MIME 数据类型
四、 其他重要的 am 命令
1. 模拟电源管理事件
用于测试应用的唤醒锁和功耗管理。
# 使设备进入睡眠模式adb shell am sleep# 唤醒设备adb shell am wakeup
2. 更改显示密度(DPI)
用于测试应用在不同屏幕密度下的布局适配情况。
# 将屏幕密度改为 320 DPIadb shell am display-density 320# 重置为默认密度adb shell am display-density reset