有没有办法从使用中获取包的可启动活动adb
?对于 unroot 电话(即没有从/data/app
目录中提取 apk 并使用检查appt
)。
我尝试了 dumpsys,但它不包含有关默认可启动活动的信息。
谢谢
您无需 root 即可从中提取 apk 文件/data/app
。当然,您可能没有权限列出该目录的内容,但您可以通过以下方式找到 APK 的文件位置:
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
从 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
#!/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
我没有发现它列出所以更新列表。
对于此解决方案,您需要在手机前面安装并运行 apk:
Windows CMD 行:
adb shell dumpsys window windows | findstr <any unique string from your pkg Name>
Linux终端:
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
我们的活动也是如此
如果第二部分与包名称完全不同,并且似乎不包含/
在输出输出之前的 pkg 名称,那么整个第二部分都可以用作主要活动。
这是另一种查找应用程序包名称和启动器活动的方法。
Step1:在命令提示符下启动“adb logcat”。
Step2:打开应用程序(在模拟器或真机中)
启动您的应用程序并将其保持在前台。
运行以下命令:
adb shell dumpsys 窗口窗口| 找到“mcurrentfocus”