本文档主要记录获取包名和 Activity 的方法, 用于自动化测试时启动 APP 以下方法主要来源于网络和社区同学的贡献, 特此感谢!
1. 方法一: pm list package 查看包名
adb shell pm list package -f
将获取手机内所有 apk 对应的包名和路径
adb shell pm list package -3 -f #获取第三方 apk 的包
2. 方法二: dumpsys window(本人最常用)
先打开需要查找的 apk 后, 再敲入以上命令
adb shell dumpsys window w | findstr \/ | findstr name=
或
adb shell dumpsys window |findstr mCurrent
或
adb shell "dumpsys window w|grep \/|grep name=|sed s/mSurface=Surface(name=//g|sed s/)//g|sed s/ //g"
注: 此处用 sed 将部分字符串替换为空, 格式为 sed s / 要被取代的字串 / 新的字串 / g
3. 方法三: logcat 日志抓取 LAUNCHER
adb shell logcat | grep android.intent.category.LAUNCHER "
或
adb logcat ActivityManager:I *:s
4. 方法四: dumpsys activity
先启动需要的查找的 apk, 再敲入以上命令
adb shell dumpsys activity | grep mFocusedActivity
5. 方法五: logcat 日志抓 START
- C:\Users\Administrator>adb shell
- root@msm8916_32_512:/ # logcat | grep START
先启动需要查找的 apk, 再敲入以上命令, 找到最后一个 ActivityManager
6. 方法六: aapt 工具 (推荐使用)
使用 aapt 工具 , 适合给程序自动获取 apk 的相关信息, 非常实用,
//aapt 是 sdk 自带的一个工具, 在 sdk\builds-tools \ 目录下
1. 以微信为例, 命令行中切换到 aapt.exe 目录执行输入以下命令
aapt dump badging D:\weixin658android1060.apk
2. 运行后的结果中以下两行分别是应用包名 package 和入口 activity 名称, 另外可看到应用使用的权限支持的语言等信息
7. 方法七: apktool 反编译 app 后查看 AndroidManifest.xml
1. 使用 apktool 反编译 app
java -jar D:\Tools\apktool_2.2.3.jar d D:\Tools\weixin658android1060.apk
2. 打开 AndroidManifest.xml 文件
manifest 节点的 package 属性值是应用的包名:
查找 android.intent.action.MAIN 和 android.intent.category.LAUNCHER 对应的 activity, 该 activity 对应的 android:name 属性既是入口 activity 名称, android.intent.action.MAIN 决定应用程序最先启动的 Activity,android.intent.category.LAUNCHER 决定应用程序是否显示在程序列表里
8. 方法八: 使用 monkey 命令查看 Activity
adb shell monkey -p com.tencent.mm -c android.intent.category.LAUNCHER -v -v 0|findstr Using
注:
1. findstr 和 grep 查找字符串说明
findstr:windows 平台查找字符串命令, 一般格式如下:
adb shell xxx | findstr xxx
grep:linux 平台查找字符串命令, 一般先 adb shell 进入 shell 命令行再使用, 也可直接使用, 把 shell 后面带 grep 的命令加双引号即可:
adb shell "xxx | grep xxx"
来源: http://www.bubuko.com/infodetail-2523341.html