【Android】am命令

发布于:2025-06-24 ⋅ 阅读:(18) ⋅ 点赞:(0)

Android中的am命令是进行ams调试的有利工具,如启动activity,广播,

可以使用am -h来查看帮助信息,

 am -h
Activity manager (activity) commands:
  help
      Print this help text.
  logging <enable-text|disable-text> <CONFIG>
  app-logging <PROCESS_NAME> <UID> <enable-text|disable-text> <CONFIG>
  start-activity [-D] [-N] [-W] [-P <FILE>] [--start-profiler <FILE>]
          [--sampling INTERVAL] [--clock-type <TYPE>] [--streaming]
          [-R COUNT] [-S] [--track-allocation]
          [--user <USER_ID> | current] [--suspend] <INTENT>
      Start an Activity.  Options are:
      -D: enable debugging
      --suspend: debugged app suspend threads at startup (only with -D)
      -N: enable native debugging
      -W: wait for launch to complete

...

am命令其实是一个脚本调用,

/bin $ cat am
#!/system/bin/sh

if [ "$1" != "instrument" ] ; then
    cmd activity "$@"
else
    base=/system
    export CLASSPATH=$base/framework/am.jar
    exec app_process $base/bin com.android.commands.am.Am "$@"
fi

am(Activity Manager)命令是 Android 提供的一个强大的 shell 工具,用于与系统的服务进行交互,主要用来启动活动(Activity)、服务(Service),发送广播(Broadcast),以及执行其他与应用组件相关的操作。通过 adb shell 或者直接在设备上的终端中使用 am 命令,开发者可以方便地调试和测试应用程序。

使用方法
要使用 am 命令,你需要通过 adb shell 连接到你的 Android 设备或模拟器,或者在设备上具有 root 权限的终端环境中运行这些命令。

基本语法

am [subcommand] [options]
常用子命令
启动 Activity
使用 am start 可以启动一个 Activity。

adb shell am start -n <package_name>/<activity_class_name>
例如:

adb shell am start -n com.example.myapp/.MainActivity
启动 Service
使用 am startservice 可以启动一个后台 Service。

adb shell am startservice -n <package_name>/<service_class_name>
例如:

adb shell am startservice -n com.example.myapp/.MyBackgroundService
发送广播
使用 am broadcast 可以发送一个广播 Intent。

adb shell am broadcast -a <broadcast_action>
例如,发送一个自定义广播:

adb shell am broadcast -a com.example.myapp.CUSTOM_INTENT
强制停止应用
使用 am force-stop 可以终止指定包名的所有进程。

adb shell am force-stop <package_name>
例如:

adb shell am force-stop com.example.myapp
查看堆栈信息
使用 am stack list 查看当前任务栈的信息。

adb shell am stack list
启动 Instrumentation 测试
使用 am instrument 可以运行 instrumentation 测试。

adb shell am instrument -w <test_package_name>/<runner_class>
例如:

adb shell am instrument -w com.example.myapp.test/androidx.test.runner.AndroidJUnitRunner
参数选项
-n:指定要启动的组件(Activity 或 Service)的完整类名,格式为 <package_name>/<class_name>。
-a:指定 Intent 的 action 属性。
-d:指定 Intent 的 data URI。
-c:指定 Intent 的 category 属性。
-e <key> <value>:添加额外的数据到 Intent 中。
-f:设置 Intent 标志位,如 FLAG_ACTIVITY_NEW_TASK 等。
示例
启动一个特定 URL 的浏览器:

adb shell am start -a android.intent.action.VIEW -d http://www.example.com
向某个 Activity 发送带额外数据的 Intent:

adb shell am start -n com.example.myapp/.MainActivity -e key value
发送包含多个 category 的广播:

adb shell am broadcast -a com.example.myapp.CUSTOM_INTENT -c android.intent.category.DEFAULT -c com.example.myapp.MY_CATEGORY
注意事项
使用 am 命令时,请确保你有足够的权限。某些命令可能需要设备具有 root 权限才能执行。
在使用 am 命令进行调试时,请注意不要中断正在运行的应用程序的正常流程,以免造成不稳定的状态。
对于自动化测试或脚本编写,am 命令非常有用,但请确保理解每个命令的具体含义及其对系统的影响。
总之,am 命令是一个功能强大且灵活的工具,适用于各种开发和调试场景,能够极大地提高工作效率。通过掌握 am 命令的不同用法,你可以更有效地管理和测试 Android 应用程序。


网站公告

今日签到

点亮在社区的每一天
去签到