从adb获得包的可启动活动名称

有没有办法使用adb获取包的可启动活动? 对于一个没有根据的手机(即没有从/ data / app目录中取出apk并用appt检查)。

我试过dumpsys,但是没有包含默认启动活动的信息。

谢谢

你不需要root来从/data/app下拉apk文件。 当然,您可能没有权限列出该目录的内容,但您可以通过以下方式findAPK的文件位置:

 adb shell pm list packages -f 

那么你可以使用adb pull

 adb pull <APK path from previous command> 

然后aapt得到你想要的信息:

 aapt dump badging <pulledfile.apk> 
 $ adb shell pm dump PACKAGE_NAME | grep -A 1 MAIN 
 #!/bin/bash #file getActivity.sh package_name=$1 #launch app by package name adb shell monkey -p ${package_name} -c android.intent.category.LAUNCHER 1; sleep 1; #get Activity name adb shell logcat -d | grep 'START u0' | tail -n 1 | sed 's/.*cmp=\(.*\)} .*/\1/g' 

样品:

 getActivity.sh com.tencent.mm com.tencent.mm/.ui.LauncherUI 

我没有find它列出更新列表。

您需要安装apk并在您的手机上运行此解决scheme

Windows CMD行:

adb shell dumpsys window windows | findstr <any unique string from your pkg Name>

Linuxterminal:

adb shell dumpsys window windows | grep -i <any unique string from your Pkg Name>

计算器包的输出是:

 Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}: mOwnerUid=10036 mShowToOwnerOnly=true package=com.android.calculator2 appop=NONE mToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} mRootToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} mAppToken=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} WindowStateAnimator{3e160d22 com.android.calculator2/com.android.calculator2.Calculator}: mSurface=Surface(name=com.android.calculator2/com.android.calculator2.Calculator) mCurrentFocus=Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator} mFocusedApp=AppWindowToken{29a4bed4 token=Token{2f850b1a ActivityRecord{eefe5c5 u0 com.android.calculator2/.Calculator t322}}} 

主要部分是, 第一线

Window #7 Window{39ced4b1 u0 com.android.calculator2/com.android.calculator2.Calculator}:

输出的第一部分是包名称:

com.android.calculator2

输出的第二部分(在/之后)可以是两件事,在我们的例子中是:

com.android.calculator2.Calculator

  1. <PKg name>.<activity name> = <com.android.calculator2>.<Calculator>

    所以.Calculator是我们的活动

  2. 如果第二部分与Package名称完全不同,并且看起来不包含输出之前/内的pkg名称,则整个第二部分可以用作主要活动。

从Android 7.0开始,您可以使用adb shell cmd package resolve-activity命令获取已安装应用程序的默认活动,如下所示:

 adb shell "cmd package resolve-activity --brief com.google.android.calculator | tail -n 1" com.google.android.calculator/com.android.calculator2.Calculator 

这是另一种查找应用程序包名称和启动器活动的方法。

第一步:在命令提示符下启动“adb logcat”。

第二步:打开应用程序(在仿真器或真实设备) 在这里输入图像说明

1)启动Appium客户端。 下面提到的窗口将会显示,一旦你启动了Appium客户端。 2)点击上面标记的android图标打开configuration设置。

3)检查应用程序pathcheckbox。

4)点击selectbutton来定位你的apk文件,在这种情况下,我已经给它的亚马逊apk。 在这里输入图像说明 在这里输入图像说明

您也可以使用ddms作为logcat日志,只需要search应用程序名称即可查看所有信息,但必须select“信息”而不是“详细”或其他选项。 检查下面的图像。

在这里输入图像说明