当前位置:   article > 正文

adb启动某个app的方法_adb 启动应用

adb 启动应用

启动命令

一 常规命令 + 包名/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

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

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

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启动。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/333856
推荐阅读
相关标签
  

闽ICP备14008679号