返回顶部
首页 > 资讯 > 移动开发 >使用am start命令启动android apk应用程序
  • 190
分享到

使用am start命令启动android apk应用程序

androidjava开发语言 2023-09-03 09:09:34 190人浏览 独家记忆
摘要

使用am start命令启动Android apk应用程序 am start -n {包(package)名}/{包名}.{活动(activity)名称} 启动tbox service test ap

使用am start命令启动Android apk应用程序

am start -n {包(package)名}/{包名}.{活动(activity)名称}

启动tbox service test apk
adb root
adb shell
am start -n com.demo.hmi.xxxservices.xxx/.MainActivity

程序的入口类可以从每个应用的AndroidManifest.xml的文件中得到;
启动的方法可以从每个应用的AndroidManifest.xml的文件中得到;

还可以使用 pm 和 dumpsys命令得知
这种情况下,只知道一个apk名字,也没有打开使用过,则使用

pm list package #列出全部的包名,在这些包名中找出和apk相似的包 如 com.demo.hmi.onstarservices.tboxdumpsys package com.demo.hmi.onstarservices.tbox #列出包的信息如下
Activity Resolver Table:  Non-Data Actions:      android.intent.action.MAIN:        a738865 com.demo.hmi.onstarservices.tbox/.MainActivity filter 5b39c16          Action: "android.intent.action.MAIN"          Action: "android.intent.action.onstarservices.tbox"          CateGory: "android.intent.category.LAUNCHER"      android.intent.action.onstarservices.tbox:        a738865 com.demo.hmi.onstarservices.tbox/.MainActivity filter 5b39c16          Action: "android.intent.action.MAIN"          Action: "android.intent.action.onstarservices.tbox"          Category: "android.intent.category.LAUNCHER" Key Set Manager:  [com.demo.hmi.onstarservices.tbox]      Signing KeySets: 11 Packages:  Package [com.demo.hmi.onstarservices.tbox] (9de093a):    userId=10060    pkg=Package{735c9eb com.demo.hmi.onstarservices.tbox}    codePath=/system/app/TboxServiceTest.apk    resourcePath=/system/app/TboxServiceTest.apk    legacyNativeLibraryDir=/system/lib64/TboxServiceTest    primaryCpuAbi=null    secondaryCpuAbi=null    versionCode=1 minSdk=15 targetSdk=28    versionName=1.0    splits=[base]    apkSigningVersion=1    applicationInfo=ApplicationInfo{c2ec348 com.demo.hmi.onstarservices.tbox}    flags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]    privateFlags=[ PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE_VIA_SDK_VERSION ]    dataDir=/data/user/0/com.demo.hmi.onstarservices.tbox    supportsScreens=[small, medium, large, xlarge, resizeable, anyDensity]    timeStamp=2020-01-07 15:07:00    firstInstallTime=2020-01-07 15:07:00    lastUpdateTime=2020-01-07 15:07:00    signatures=PackageSignatures{11945e1 version:1, signatures:[77f655d], past signatures:[]}    installPermissionsFixed=false    pkgFlags=[ SYSTEM HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP ]    User 0: ceDataInode=796 installed=true hidden=false suspended=false stopped=false notLaunched=false enabled=0 instant=false virtual=false      runtime permissions:Package Changes:  Sequence number=0Dexopt state:  [com.demo.hmi.onstarservices.tbox]    path: /system/app/TboxServiceTest.apk      arm64: [status=verify] [reason=boot]Compiler stats:  [com.demo.hmi.onstarservices.tbox]

其中有如下一行

a738865 com.demo.hmi.onstarservices.tbox/.MainActivity

可知要启动的package和activity

am start com.demo.hmi.onstarservices.tbox/.MainActivity

压测中经常会用到am start命令去进行操作,基本上也只用到 am start -nam start -a ** -d **,后来测试activity启动用到了am start -W,才惊觉这个命令的功能还是很强大的

  1. am start -n
    解释:启动一个activity
    e.g. am start -n com.android.settings/.Settings 启动android原生设置的一级页面

  2. am start -a -d
    解释: 启动一个activity同时传入-d后面的参数
    e.g. am start -a android.intent.action.CALL -d tel:10086 打开拨号盘并拨打电话给10086
    am start -a android.intent.action.VIEW geo:0,0?q=beijing 启动google键盘并定位到北京

  3. am start -D
    解释:将应用设置成可调式模式,打开会提示waiting for debugger,方便调试那些在打开过程中产生的bug。

  4. am start -W
    解释:等待完全启动,并记录了启动时间
    e.g. am start -W com.android.settings/.Settings 应用完全启动,并记录启动时间,结果如下:

   Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.settings/.Settings   Status: ok   Activity: com.android.settings/.MiuiSettings   ThisTime: 414   TotalTime: 718   WaitTime: 801   Complete
  1. am start -P
    解释:类似 –start-profiler,不同的是当app进入idle状态,则停止profiling

  2. am start -S
    解释:启动activity之前,需要先调用forceStopPackage()方法强制停止应用,比如如果activity打开,-n只会重新起一遍activity,-S会杀掉原来的应用,重新启动activity

  3. am start --opengl-trace
    解释:运行获取OpenGL函数的trace

  4. am start --user | current
    解释:指定用户来运行App,默认为当前用户。


Android在shell中提供了 am 命令来发送Intent,它的源码为位于 frameworks/base/cmds/am

它本身是用JAVA代码来实现的。

执行 am 命令其实是通过运行shell脚本 frameworks/base/cmds/am/am,然后在该脚本中运行 app_process 命令来启动am这个java程序的。

frameworks/base/cmds/am/am脚本文件如下:

# Script to start "am" on the device, which has a very rudimentary  # shell.#base=/system  export CLASSPATH=$base/framework/am.jar  exec app_process $base/bin com.android.commands.am.Am "$@"  am命令语法如下am [subcommand] [options]      start an Activity: am start [-D] [-W] <INTENT>          -D: enable debugging          -W: wait for launch to complete      start a Service: am startservice <INTENT>      send a broadcast Intent: am broadcast <INTENT>      start an Instrumentation: am instrument [flags] <COMPONENT>          -r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)          -e <NAME> <VALUE>: set argument <NAME> to <VALUE>          -p <FILE>: write profiling data to <FILE>          -w: wait for instrumentation to finish before returning      start profiling: am profile <PROCESS> start <FILE>      stop profiling: am profile <PROCESS> stop      start monitoring: am monitor [--gdb <port>]          --gdb: start gdbserv on the given port at crash/ANR      <INTENT> specifications include these flags:          [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]          [-c <CATEGORY> [-c <CATEGORY>] ...]          [-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]          [--esn <EXTRA_KEY> ...]          [--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]          [-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]          [-n <COMPONENT>] [-f <FLAGS>]          [--grant-read-uri-permission] [--grant-write-uri-permission]          [--debug-log-resolution]          [--activity-brought-to-front] [--activity-clear-top]          [--activity-clear-when-task-reset] [--activity-exclude-from-recents]          [--activity-launched-from-history] [--activity-multiple-task]          [--activity-no-animation] [--activity-no-history]          [--activity-no-user-action] [--activity-previous-is-top]          [--activity-reorder-to-front] [--activity-reset-task-if-needed]          [--activity-single-top]          [--receiver-reGIStered-only] [--receiver-replace-pending]          [<URI>]

这是一个在 Android 设备上启动 “am” 的脚本,其中的 shell 非常基础。

该脚本的作用是设置 CLASSPATH 变量,将 am.jar 添加到 CLASSPATH 中,并执行 app_process 命令来启动 com.android.commands.am.Am 类。“$@” 表示传递给该脚本的所有参数都会被传递给 Am 类。

am 命令可以用于启动 Activity、Service、广播 Intent、以及测试 Instrumentation 等。命令语法包括子命令和选项。例如,使用 “am start” 子命令可以启动 Activity,“-D” 和 “-W” 选项分别表示开启调试模式和等待 Activity 启动完成。

INTENT> 参数可以包含各种标记和选项,如 Action、Data URI、MIME 类型、Category、Extra 等等。通过这些标记和选项,可以指定要启动的组件、传递参数给组件,或者实现其他功能。

需要注意的是,am 命令只能在已经 root 权限的设备上运行。

来源地址:https://blog.csdn.net/weixin_43233219/article/details/131183841

--结束END--

本文标题: 使用am start命令启动android apk应用程序

本文链接: https://lsjlt.com/news/391877.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 使用am start命令启动android apk应用程序
    使用am start命令启动android apk应用程序 am start -n {包(package)名}/{包名}.{活动(activity)名称} 启动tbox service test ap...
    99+
    2023-09-03
    android java 开发语言
  • Android中使用am命令实现在命令行启动程序详解
    在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命令行工具am. 代码如下: usage: am [subcommand] [options]...
    99+
    2022-06-06
    程序 启动 命令行 Android
  • Docker如何使用start命令启动容器
    小编给大家分享一下Docker如何使用start命令启动容器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!使用start命令启动...
    99+
    2024-04-02
  • Android应用启动另外一个apk应用的方法
    本文实例讲述了Android应用启动另外一个apk应用的方法。分享给大家供大家参考,具体如下: 在开发的过程中,经常会遇到在一个应用中启动另外一个apk应用的情况 问题的核心点...
    99+
    2022-06-06
    方法 启动 apk Android
  • Android | 电脑cmd中使用adb命令安装apk
    目录 一、使用步骤二、常见问题2.1 adb: failed to install xxx.apk: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE: Package com.xxx.xxx....
    99+
    2023-08-23
    android adb
  • Android应用程序(APK)的编译打包过程
    流程图:   我们重点关心的是(1)这个过程的输入是什么?(2)这个过程的输出是什么?(3)这个过程使用了什么工具?至于使用什么参数,可以自己去看对应命令的帮助文件,...
    99+
    2022-06-06
    程序 apk Android
  • 使用adb命令启动app
    1.获取应用包名:(方法各异自行选择) adb shell am monitor# 输入命令后打开手机上需要获取包名的应用(ctrl + C 退出该模式) 2.获取正在运行应用的activity: #方法一:打开需要获取的应用(不需要知道...
    99+
    2023-09-02
    adb android
  • linux上如何使用linux at命令定时启动程序
    这篇文章主要介绍“linux上如何使用linux at命令定时启动程序”,在日常操作中,相信很多人在linux上如何使用linux at命令定时启动程序问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux...
    99+
    2023-06-17
  • Android应用程序的启动流程是什么
    本篇内容介绍了“Android应用程序的启动流程是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!应用进程的启动流程本文基于Android...
    99+
    2023-07-05
  • python启动应用程序和终止应用程序
    1. 目的 每天上班,工作需要,电脑上需要每天开机启动一些软件,下班时候,需要关掉一些软件。一个一个打开和关闭貌似是很繁琐的,于是乎,这个脚本产生了。 2. 环境 系统环境: - win7-32位 - python 2.7...
    99+
    2023-01-31
    应用程序 python
  • Android使用Intent启动其他非系统应用程序的方法
    本文实例讲述了Android使用Intent启动其他非系统应用程序的方法。分享给大家供大家参考,具体如下: android应用程序内部通过Intent来实现Activity间的...
    99+
    2022-06-06
    程序 方法 应用程序 intent 系统 Android
  • adb命令导出手机已安装的android应用apk文件
    adb命令导出手机已安装的android应用apk文件,保存到PC电脑 前提条件是手机已经和PC电脑可以通过adb建立连接。 (1)通过adb shell命令获取当前手机所有已经安装的应用包名: adb shell pm list pack...
    99+
    2023-08-31
    android adb
  • win7如何使用命令行输入net start mysql启动mysql数据库服务
    本篇内容主要讲解“win7如何使用命令行输入net start mysql启动mysql数据库服务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“win7如何使用...
    99+
    2024-04-02
  • Flex应用程序怎么启动
    这篇文章主要介绍了Flex应用程序怎么启动,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Flex应用程序启动编写一个简单的Flex应用程序并不复杂,就算你从来没接触过Flex...
    99+
    2023-06-17
  • Java调用windows系统的CMD命令并启动新程序
    我们通常在使用Java 调用脚本的时候,会使用 Runtime 类如: // 打开浏览器并访问 http://localhost:7001 Runtime.get...
    99+
    2023-05-18
    Java调用CMD命令 Java启动其它程序方法
  • 如何实现CMD命令行中以管理员权限启动应用程序
    本篇内容主要讲解“如何实现CMD命令行中以管理员权限启动应用程序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何实现CMD命令行中以管理员权限启动应用程序”吧!很多时候我们需要管理员权限来运行...
    99+
    2023-06-08
  • 使用Golang快速构建出命令行应用程序
    目录urfave/clispf13/cobra在日常开发中,大家对命令行工具(CLI)想必特别熟悉了,如果说你不知道命令工具,那你可能是个假开发。每天都会使用大量的命令行工具,例如最...
    99+
    2023-02-24
    Golang命令行应用程序 Golang命令行
  • android应用启动过程是什么
    Android应用的启动过程可以分为以下几个步骤:1. 用户点击应用图标:用户在设备上点击应用图标,触发应用的启动。2. 系统启动应...
    99+
    2023-09-09
    android
  • Win10 UWP应用系统的启动命令详解
    很多用户都升级到了win10系统,但是win10系统和以往的win7/win8系统有所不同,那么,Win10 Uwp应用系统设置启动命令有哪些?小编整理了常见UWP应用命令,用户可尝试使用。一起去看看吧! 以下命令只支...
    99+
    2023-05-22
    Win10 UWP 启动命令
  • Android 程序应用的生命周期
    程序应用步骤:打开应用:onCreateonStartonResumeBACK键:onPauseonStoponDestoryHOME键:onPauseonStop再次启动应用:onRestartonStartonResume...
    99+
    2022-06-06
    程序 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作