从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
-
<PKg name>.<activity name>
=<com.android.calculator2>.<Calculator>
所以
.Calculator
是我们的活动 -
如果第二部分与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“信息”而不是“详细”或其他选项。 检查下面的图像。
- Android / Java – 简单的文本发布到Facebook墙?
- 如何删除文本文件的内容而不删除自己
- 如何在android imageview上显示静态谷歌地图?
- 当debugging代码块完成时,Android应用程序closures
- Android Studio如何手动运行gradle同步?
- ListView重用视图时,我不希望它
- managedQuery()vs context.getContentResolver.query()vs android.provider.something.query()
- IndexNotReadyException – Android Studio
- 在SurfaceView上的肖像的Android相机