【Android】am命令

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 应用程序。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值