Android adb 启动APP

本文介绍了如何使用adb命令来启动和关闭Android应用程序,包括常规命令结合包名和activity以及仅包名的方式。同时,讨论了如何通过adbshelldumpsys和logcat命令获取应用的包名和当前活动的activity。这些技巧对于开发者和测试人员在没有直接交互界面的情况下操控和监控应用特别有用。
摘要由CSDN通过智能技术生成

启动命令

一 常规命令 + 包名/activity

adb shell am start -n package/launch activity

说明:package 是app的包名(android studio一般是gradle中的applicationId的值)
launch activity 是启动activity的完整路径(如果和package重叠的话,可简写)

例如:
applicationId:com.eagle.game
启动activity完整的路径是com.eagle.game.ui.StartActivity

具体的命令为:

adb shell am start -n com.eagle.game/com.eagle.game.ui.StartActivity

adb shell am start -n com.eagle.game/.ui.StartActivity

注意:包名和activity之间是有斜线,简写时注意斜线后的点。

输出:

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.eagle.game/.ui.StartActivity }

代表启动成功

二 常规命令 + 包名

adb shell am start -n package

这种命令需app的启动activity的intent-filter中配置属性:
<category android:name=“android.intent.category.DEFAULT”/>

即:

<activity
           android:name=".ui.StartActivity"
           android:banner="@drawable/gs_ic_launcher"
           android:icon="@drawable/gs_ic_launcher"
           android:label="@string/app_name"
           android:theme="@style/AppWelcome"
           android:logo="@drawable/gs_ic_launcher"
           android:screenOrientation="landscape">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />

               <category android:name="android.intent.category.LAUNCHER" />
               <category android:name="android.intent.category.DEFAULT"/>
           </intent-filter>
       </activity>

但为了app的安全以及合规,一般是app是不会配置的。

命令关闭App

  1. cmd命令行中执行 adb shell am force-stop app包名

例如:adb shell am force-stop com.eagle.game

  1. cmd命令行中执行 adb shell pm clear app包名

例如:adb shell pm clear com.eagle.game

获取包名和activity的路径

回到第一种命令,关键是包名和actvity的路径,怎么获取呢

代码获取

从开发者处获取,gradle中的applicationId就是包名,从AndroidManifest.xml里面获取包名和启动的activty路径。

1 命令获取( 需要app运行在前台,停留在启动界面)

打开App,在cmd窗口中输入以下命令。

adb shell dumpsys window windows | findstr “Current”

如下图所示,/之前的就是package,之后的就是当前的activity, 有些应用启动时包含了欢迎页之类的,打开App的时候就自动切换了activity,那用这种方法就获取不了需要的activity。

C:\Users\Administrator>adb shell dumpsys window windows | findstr “Current”
mCurrentFocus=Window{64177ed u0 com.eagle.game/com.eagle.game.ui.StartActivity}

2命令获取(先执行命令,再点击app启动)

先输入:adb shell 回车

再输入:logcat | grep -i ActivityManager

启动app。

注意留意输出内容,可能刷得比较快。

在log中“ ActivityManager: START”之后的部分就含有am 命令需要的package和launch activity。如:

2129 I ActivityManager: START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 hwFlg=0x10 cmp=com.eagle.game/.ui.StartActivity bnds=[288,396][540,690]} from uid 10063

中的com.eagle.game/.ui.StartActivity

命令获取都需要先启动app,这种情况下,实际上也用不着通过命令去启动。一般那种定制系统,如电视盒子,定制的平板手机,大屏一体机,没有列出某些app,无法通过桌面启动,在测试其他厂商的app的情况下可能需要通过命令去启动。
这种情况下可以先用手机启动后获取到包名和activity,再在定制系统中去用adb启动。

说明:本文是的实例是在windows 7 上进行的。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值