Android 快速获取App的包名和 Activity名字

1. 已安装的 APP

假设这个app是安装到Android 设备上了, 以diskinfo这个app为例

查找包名

adb shell pm list packages

这样会列出一大堆,检索一下会更清晰,一般包名都会包含app的名字

adb shell pm list packages | grep diskinfo
结果如下
package:me.kuder.diskinfo

查找 Main Activity

通常我们想要通过adb shell am start 来启动

  • 方法 1 'pm dump [package_name]'
adb shell pm dump me.kuder.diskinfo | grep -A 1 MAIN
结果如下
      android.intent.action.MAIN:
        81106aa me.kuder.diskinfo/.ItemListActivity filter 9a607dd
  • 方法 2 'cmd package resolve-activity’
adb shell "cmd package resolve-activity --brief  me.kuder.diskinfo | tail -n 1"
结果如下
me.kuder.diskinfo/.ItemListActivity
  • 方法 3 ‘logcat’ 适合已经启动的app

对于启动了的app,logcat也可以很快看出 package 和 Activity

logcat | grep cmp= 
结果里面包含
ActivityManager: START u0 {flg=0x10000000 cmp=me.kuder.diskinfo/.ItemListActivity} from uid 10014
  • 方法 4 'dumpsys package’
dumpsys package me.kuder.diskinfo
结果如下
Activity Resolver Table:
  Non-Data Actions:
      android.intent.action.MAIN:
        81106aa me.kuder.diskinfo/.ItemListActivity filter 9a607dd
          Action: "android.intent.action.MAIN"
          Category: "android.intent.category.LAUNCHER"

  • 方法 5 'dumpsys window’
dumpsys  window windows | grep -E 'mCurrentFocus'
结果如下
mCurrentFocus=Window{dd34d27 u0 me.kuder.diskinfo/me.kuder.diskinfo.ItemListActivity}

从设备获取APK

安装过的app原文件在设备上可以pull下来, 通过pm list packages -f

adb shell pm list packages -f | grep diskinfo
结果如下
/data/app/me.kuder.diskinfo-lYCrL1uUxrZz3BIEufaGMA==/base.apk

就可以通过adb pull 这个apk到主机了,这个apk和安装的apk是一样的

2. 未安装APK文件

假设apk名字就是 diskinfo.apk

aapt dump

aapt 工具位于 Sdk/build-tools/xxxx/ 路径下
ubuntu也可以通过apt install 安装

  • 方法1
aapt dump badging base.apk
其中结果包含
package: name='me.kuder.diskinfo' versionCode='49910' versionName='4.9.9 (build 10)' platformBuildVersionName='4.9.9 (build 10)'
...
launchable-activity: name='me.kuder.diskinfo.ItemListActivity'  label='DiskInfo' icon=''

当然这样比较粗糙,可以在下命令的时候加上filter
获取包名

aapt dump badging diskinfo.apk | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g

获取Activity

aapt dump badging diskinfo.apk | grep Activity | awk '{print $2}' | sed s/name=//g | sed s/\'//g
  • 方法2

解析 AndroidManifest.xml

aapt dump xmltree diskinfo.apk AndroidManifest.xml
其中结果包含
A: package="me.kuder.diskinfo" (Raw: "me.kuder.diskinfo")
A: android:name(0x01010003)="me.kuder.diskinfo.ItemListActivity"

apktool等

非常规手段,就不做记录了

发布了23 篇原创文章 · 获赞 31 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/memory01/article/details/100564390