执行app自动化测试之前,必须要获取所测试App的appPackage(包名)和appActivity(启动名),之后将这两个值填写到脚本指定参数里,来告诉要执行的是哪个App。appPackage(包名):决定程序的唯一性(不是应用的名字)。app的包名是看不到的,需要执行命令才能查看得到的。appActivity(启动名):目前可以理解为一个启动名对应一个页面。
App的包名和启动名获取方式有很多(任选其一即可):
方式一:
先在设备里打开要获取的App。
输入命令 adb shell dumpsys window windows | findstr mFocusedApp
例如:淘宝App,如下所示:
- # 链接逍遥模拟器
- C:\Users\L>adb connect 127.0.0.1:21503
- adb server version (31) doesn't match this client (41); killing...
- * daemon started successfully
- connected to 127.0.0.1:21503
-
- # 获取淘宝App首页的包名和启动名
- C:\Users\L>adb shell dumpsys window windows | findstr mFocusedApp
- mFocusedApp=AppWindowToken{1554db9 token=Token{a292380 ActivityRecord{9c92803 u0 com.taobao.taobao/com.taobao.tao.TBMainActivity t16}}}
-
- C:\Users\L>
我们从上面可以看出,淘宝App的:
appPackage为:com.taobao.taobao
appActivity为:com.taobao.tao.TBMainActivity
当我们点击淘宝App淘宝首页中的天猫国际,再次获取淘宝App的包名和启动名
- C:\Users\L>adb shell dumpsys window windows | findstr mFocusedApp
- mFocusedApp=AppWindowToken{f99dcd9 token=Token{8b7fb20 ActivityRecord{ab41a23 u0 com.taobao.taobao/com.taobao.browser.BrowserActivity t16}}}
-
- C:\Users\L>
我们从上面可以看出,淘宝App的:
appPackage为:com.taobao.taobao
appActivity为:com.taobao.browser.BrowserActivity
提示:斜杠前面的内容是包名,斜杠后面的内容是启动名。
方式二:
通过.apk程序文件来获取appPackage和appActivity。
也就是获取在电脑上的apk的包名/启动名,此时还没有安装在设备上。
步骤1:
命令行进入Android SDK目录下aapt.exe程序所在的目录里。
如图所示:

步骤2:
输入命令 aapt dump badging <path_to_apk>
示例:
进入aapt.exe程序所在的目录,在地址栏中输入cmd,按下回车,进入命令行终端。

回车后进入命令行终端,如下图。

输入aapt dump badging + apk路径命令
F:\DevInstall\envs\android-sdk-windows\build-tools\25.0.3>aapt dump badging C:\Users\L\Desktop\com.taobao.taobao_V9.15.0.apk
执行该命令会有很多内容,其中
package: name='com.taobao.taobao'为该app的包名信息。launchable-activity: name='com.taobao.tao.welcome.Welcome'为该app的启动页的信息。(和上边一种方式是有区别的)提示:
app的启动名和启动页的区别
启动名指的是当前启动页面的名字,启动页是一个app的欢迎页面被启动,
所以说启动名包含启动页。
adb命令:adb shell am start -W 包名/启动名
示例:
- # 链接逍遥模拟器
- C:\Users\L>adb connect 127.0.0.1:21503
- adb server version (31) doesn't match this client (41); killing...
- * daemon started successfully
- connected to 127.0.0.1:21503
-
- C:\Users\L>
-
-
- # 获取淘宝App首页的包名和启动名
- C:\Users\L>adb shell dumpsys window windows | findstr mFocusedApp
- mFocusedApp=AppWindowToken{48d0f7f token=Token{a1f589e ActivityRecord{f5ca6d9 u0 com.taobao.taobao/com.taobao.tao.TBMainActivity t17}}}
-
- C:\Users\L>
-
-
- # 获取淘宝app启动时间
- # 包名:com.taobao.taobao
- # 启动名:com.taobao.tao.TBMainActivity
- C:\Users\L>adb shell am start -W com.taobao.taobao/com.taobao.tao.TBMainActivity
- Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.taobao.taobao/com.taobao.tao.TBMainActivity }
- Warning: Activity not started, its current task has been brought to the front
- Status: ok
- Activity: com.taobao.taobao/com.taobao.tao.TBMainActivity
- ThisTime: 0
- TotalTime: 0
- WaitTime: 3
- Complete
-
- C:\Users\L>
解释:这里有三个时间
三者之间的关系:WaitTime = TotalTime + ThisTime
adb命令:adb shell dumpsys meminfo <package_name>
其中,package_name 也可以换成程序的pid,pid可以通过 adb shell top | grep app_name命令来查找.
演示命令:
- C:\Users\L>adb shell dumpsys meminfo com.taobao.taobao
- Applications Memory Usage (in Kilobytes):
- Uptime: 904975 Realtime: 904975
-
- ** MEMINFO in pid 1413 [com.taobao.taobao] **
- Pss Private Private Swap Heap Heap Heap
- Total Dirty Clean Dirty Size Alloc Free
- ------ ------ ------ ------ ------ ------ ------
- Native Heap 0 0 0 0 80384 65337 15046
- Dalvik Heap 56525 56392 0 0 63014 46630 16384
- Dalvik Other 9119 9116 0 0
- Stack 2680 2680 0 0
- Ashmem 344 4 0 0
- Other dev 26 0 24 0
- .so mmap 21428 3644 9028 0
- .apk mmap 2090 0 704 0
- .ttf mmap 176 0 24 0
- .dex mmap 46945 16 18444 0
- .oat mmap 6123 0 848 0
- .art mmap 2685 2252 0 0
- Other mmap 4808 16 2288 0
- Unknown 77191 77120 0 0
- TOTAL 230140 151240 31360 0 143398 111967 31430
-
- ...省略后边内容...
提示:
在命令行窗口运行上述命令,得到程序的内存情况信息如下说明:
主要看
Native/Dalvik 的 Heap 信息那么在这里我也精心准备了上述大纲的详细资料在下方链接如下

