当前位置: 首页 > news >正文

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

相关文章:

  • 安卓jetpack compose学习笔记-Navigation基础学习
  • Vite 原理深入剖析
  • C语言Array数组 - 完整指南与练习题
  • LLM存储记忆功能之BaseChatMemory实战指南
  • 线程池异步处理
  • 经典新生:我如何用 AI 重制 40 款益智游戏
  • 数据结构学习——树的储存结构
  • 深度学习:PyTorch人工神经网络优化方法分享(2)
  • C++ 第二阶段:类与对象 - 第三节:成员函数与访问权限
  • 在windows上使用file命令
  • Flink SQL Connector Kafka 核心参数全解析与实战指南
  • linux----------------进程VS线程
  • EMD与PI:战略与执行的协同
  • “MOOOA多目标鱼鹰算法在无人机多目标路径规划
  • RabbitMQ从入门到实践:消息队列核心原理与典型应用场景
  • 文心一言(ERNIE Bot):百度打造的知识增强大语言模型
  • Cache Travel-09-从零开始手写redis(17)v1.0.0 全新版本架构优化+拓展性增强
  • 客户需求频繁变动时,如何快速同步各项目变更?
  • 关于计算机基础知识的详细讲解(从属GESP一级内容)
  • C# 数组(数组协变和数组继承的有用成员)
  • 做百度推广网站排名/网络营销的三大基础
  • 网站建设找星火龙/苹果自研搜索引擎或为替代谷歌
  • 建三江廉政建设网站/在线种子资源库
  • 湖北医院网站建设/seo推广软件哪个好
  • 东莞哪里的网站建设效果好/seo与sem的区别与联系
  • 常熟建设局网站/搜索引擎入口yandex