获取APP的Package和Activity

Posted by FanHao on 2020-11-07

环境说明

以下环境安装的系统平台为Windows,驱动安卓真机;脚本开发使用Python3

获取Package和Activity前,需要确保App自动化测试环境搭建成功

获取Package

下面以speedtest App为例,其他安卓App获取方式同理

方法一:通过adb命令获取

1
2
3
4
5
# 查看当前device中所有apk对应的package name和path
adb shell pm list package -f

# 仅查看第三方的apk package
adb shell pm list package -3 -f

注意:cmd terminal的查找命令在linux和mac操作系统中对应关键字时grep,在Windows操作系统中对应关键字是 findstr

1
2
# 过滤关键字,speedtest包
adb shell pm list package -3 -f | findstr speedtest

方法二:使用Airtest IDE软件定位

1、安装Airtest IDE软件,并连接安卓真机

2、手机上打开speedtest APP;Airtest IDE软件Poco辅助窗口选择Android

3、展开xml树结构,并选中。查看Log窗口的package字段的值即可获取该App的packageName

获取appActivity

方法一:adb命令获取

如果需要获取speedtest App的appActivity,首先在手机上打开Speedtest App,然后输入以下命令

1
2
# dumpsys命令
adb shell dumpsys window w | findstr mCurrent
1
2
3
# 对应定位到的appActivity就会自动被定位到并输出如下:
mCurrentFocus=Window{9c1afd u0 org.zwanoo.android.speedtest/com.ookla.mobile4.
screens.main.MainViewActivity}

注意:有时候通过上述adb命令得到appActivity并不完全正确。所以如果通过用上面获取到appActivity执行代码驱动app时,报activity错误时,请更换其他方式重新获取appActivity。

上面获取到的Speedtest App的appActivity并不正确,需要使用方法二获取。

方法二:log日志获取

首先在终端中执行下面命令,将日志写入log.txt

1
adb logcat >D:/log.txt

然后打开Speedtest App,操作几次,并在终端关闭日志写入。

打开log.txt文件,搜索Package Name:org.zwanoo.android.speedtest;以下为log.txt中的部分日志

1
2
3
4
5
6
7
8
11-10 17:50:37.731  3260 15780 D mali_winsys: EGLint new_window_surface(egl_winsys_display *, void *, EGLSurface, EGLConfig, egl_winsys_surface **, EGLBoolean) returns 0x3000
11-10 17:50:37.732 3625 13833 I AppLifeChangeSensor: CAWARENESS: activityResumed componentName = ComponentInfo{org.zwanoo.android.speedtest/com.ookla.mobile4.screens.main.MainActivity}
11-10 17:50:37.732 1252 5214 D HiData_HwAPPQoEActivityMonitor: handleActivityChange, curPackage:org.zwanoo.android.speedtest, curClass:com.ookla.mobile4.screens.main.MainActivity
11-10 17:50:37.733 31522 31522 I ViewRootImpl: jank_removeInvalidNode all the node in jank list is out of time
11-10 17:50:37.732 1252 1357 I StatusBarDisable: setFlags what=0 which=1 pkg=Window{d43dea6 u0 org.zwanoo.android.speedtest/com.ookla.mobile4.screens.welcome.WelcomeActivity}
11-10 17:50:37.733 1252 1354 W HwActivityManagerServiceEx: HwActivityNotifier end call for activityLifeState under user 0 cost 1
11-10 17:50:37.733 1252 5214 D HiData_HwAPPQoEResourceMangerImpl: checkIsMonitorAPKScence input :org.zwanoo.android.speedtest,com.ookla.mobile4.screens.main.MainActivity
11-10 17:50:37.733 1252 5214 D HiData_HwAPPQoEResourceMangerImpl: checkIsMonitorAPKScence input :org.zwanoo.android.speedtest,null

根据搜索结果,并排除不正确的Activity后,可得到下面正确的appActivity

1
org.zwanoo.android.speedtest/com.ookla.mobile4.screens.main.MainActivity