android list targets | 显示系统中全部Android平台 |
android list avd | 显示系统中全部AVD(模拟器) |
android create avd --name 名称 --target 平台编号 | 创建AVD(模拟器) |
emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800) | 启动模拟器 |
android delete avd --name 名称 | 删除AVD(模拟器) |
mksdcard 1024M ~/名称.img | 创建SDCard |
Linux(~/.android/avd) Windows(C:\Documents and Settings\Administrator\.android\avd) | AVD(模拟器)所在位置 |
ddms | 启动DDMS |
adb devices | 显示当前运行的全部模拟器 |
adb -s 模拟器编号 命令 | 对某一模拟器执行命令 |
adb install -r 应用程序.apk -r:覆盖安装 | 安装应用程序 |
adb pull <remote> <local> adb pull /addroid/lib/libwebcore.so . | 获取模拟器中的文件 |
adb push <local> <remote> | 向模拟器中写文件 |
adb shell | 进入模拟器的shell模式 |
android | 启动SDK,文档,实例下载管理器 |
adb shell cd data/app rm apk包 exit adb uninstall apk包的主包名 adb install -r apk包 | 缷载apk包 |
adb help | 查看adb命令帮助信息 |
adb logcat -s 标签名 | 在命令行中查看LOG信息 |
源码\system\core\toolbox目录和源码\frameworks\base\cmds目录 | adb shell后面跟的命令主要来自 |
adb remount (重新挂载系统分区,使系统分区重新可写)。 adb shell cd system/app rm *.apk | 删除系统应用 |
adb root | 获取管理员权限 |
adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。 | 启动Activity |
adb forward tcp:5555 tcp:8000 | 发布端口 |
adb push <source> <destination></destination></source> 如:adb push test.txt /tmp/test.txt adb pull <source> <destination></destination></source> 如:adb pull /addroid/lib/libwebcore.so . | 复制文件 |
adb bugreport | 查看bug报告 |
adb shell logcat -b radio | 记录无线通讯日志 |
adb get-product adb get-serialno | 获取设备的ID和序列号 |
adb shell sqlite3 #cd system/sd/data //进入系统内指定文件夹 #ls //列表显示当前文件夹内容 #rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件 #rm xxx //删除文件xxx #rmdir xxx //删除xxx的文件夹 | 访问数据库SQLite3 |
kill/start -server netstart -ano | find “5037”端口号 Tasklist |finder “5408”进程号 Taskkill /f/t/im .......exe esc可以退出手机虚拟机页面 | 关掉/开启服务器 |
exit() | 退出shell命令 |
shell: dumpsys cpuinfo dumpsys cupuinfo|grep 包名 dumpsys meminfo com.esbook.reader dumpsys window display|grep init dumpsys power | grep mScreenOffTimeoutSetting dumpsys power | grep mScreenBrightnessSetting ps | grep{package-name} getprop或者cat/system/build.prop | grep heap cat /system/build.prop | grep vm
"cat /system/build.prop | grep product"
初始化:heapstartsize——最小值:会影响使用应用时的流程程度
最大内存:heapgrowthlimit———最大值:超出汇报oom
超限内存:heapsize——单个进程可用最大内存,若存在limit以limit为准
getprop| grep heapgrowthlimit
dumpsys package<app.package.name>
| 获取CPU信息 获取占用内存信息 屏幕分辨率 屏幕超市时间获取 屏幕亮度相关设置 获取AUT的pid 内存设定值 进行outofmemory测vm值 获取主板相关的信息 获取测试关注的清单文件信息
|
adb shell “dumpsys package com.subject.zhongchou” > d:\log.txt 尖括号的是管道符 | log日志保存本地 |
adb shell“ am force-stop com.esbook.reader”包名 am start -n 包名/页面名 am kill all am kill [options]<package> --user<USER_ID>|all|current monitor [options] screen-compat [on|off] <PACKAGE> display-size [reset|<WxH>] display-density <dpi> to-uri <INTENT> to-intent-uri <INTENT> | am命令activity manager 强行关闭app 启动一个app 杀死所有进程 清空之前用set-debug-app设置的应用 |
echo "写入的内容" > test.txt | 建立并写入文件信息 |
adb shell screencap <path_to_save_screen.png> | 截图 |
adb shell monkey -p com.subject.zhongchou -throttle 100 -v -v 1000 > d:\monkey.txt |
|
adb shell monkey -p com.UCMobilex86 100 100 100 -s 5 100 -throttle 500 100 -throttle 500 --randomize-throttle -ignore-timeouts -v 100 -v --ignore-native-crashes
1:滑动事件百分比,即参数--pct-motion 2:缩放事件百分比,即参数--pct-pinchzoom 3:轨迹球事件百分比,即参数--pct-trackball 4:屏幕旋转事件百分比,即参数--pct-rotation 5:基本导航事件百分比,即参数--pct-nav 6:主要导航事件百分比,即参数--pct-majornav 7:系统事件百分比,即参数--pct-syskeys 8:Activity启动事件百分比,即参数--pct-appswitch 9:键盘翻转事件百分比,即参数--pct-flip 10:其他事件百分比,即参数--pct-anyevent | 设置包名 设置执行次数 设置随机时间间隔 设置日志级别如果-v-v最多三个 忽略monkey本身的异常,直到事件执行完毕
adb shell monkey --pct-touch 20 -v 100 |
adb shell pm disable--user<USER_ID> [options] <PACKAGE_OR_COMPONENT> grant<PACKAGE_PERMISSION> | pm命令package manager |
adb shell am instrument [options]<COMPONENT> 参数[options]: -e <key> <value> // -e选项需要放在-w选项之前 作用:提供了以键值对形式存在的测试选项。Android中提供了多种键值对,具体参见下表。 举例:-e class com.android.phone.FIncomingCallTests#testRejectCall -r 作用:以原始形式输出测试结果。该选项通常是在性能测试时与-e perf true一起使用。 参数 <COMPONENT>: -w <test_package_name>/<runner_class> //<test_package_name>和<runner_class>在测试工程的AndroidManifest.xml中查找 作用:保持adb shell打开直至测试完成 举例:-w com.android.phone.tests/com.android.phone.runners.FunctionalTestRunner | KEY VALUE |
|
|
monkey日志分析
1.Monkey: seed=1470511671524 count=100
monkey执行的seed值和随机事件次数
2.AllowPackage: com.UCMobile.x86
可以运行的包名
3.// Event percentages:
// 0: 15.0%
// 1: 10.0%
// 2: 2.0%
// 3: 15.0%
// 4: -0.0%
// 5: -0.0%
// 6: 25.0%
// 7: 15.0%
// 8: 2.0%
// 9: 2.0%
// 10: 1.0%
// 11: 13.0%
分配事件的百分比,事件号可以参考第二部分
4.事件0:触摸事件
Sending Touch (ACTION_DOWN): 0:(572.0,1105.0)
Sending Touch (ACTION_UP): 0:(576.20734,1105.024)
5. 事件1:滑动事件
Sending Touch (ACTION_DOWN): 0:(233.0,761.0)
Sending Touch (ACTION_MOVE): 0:(208.49568,736.34766)
Sending Touch (ACTION_MOVE): 0:(202.7063,729.8338)
Sending Touch (ACTION_MOVE): 0:(183.89723,722.677)
Sending Touch (ACTION_UP): 0:(174.83568,721.8229)
6.事件2:缩放事件
Sending Touch (ACTION_DOWN): 0:(107.0,242.0)
Sending Touch (ACTION_POINTER_DOWN 1): 0:(108.14705,248.53061) 1:(270.0,262.0)
Sending Touch (ACTION_MOVE): 0:(110.117355,252.96329) 1:(267.9937,262.25485)
Sending Touch (ACTION_MOVE): 0:(111.30056,261.88846) 1:(261.90106,262.58475)
Sending Touch (ACTION_MOVE): 0:(113.11743,265.60138) 1:(253.92662,263.13382)
Sending Touch (ACTION_POINTER_UP 1): 0:(113.29031,267.4419) 1:(248.60628,263.23257)
7.事件3:轨迹球事件
Sending Trackball (ACTION_MOVE): 0:(3.0,-2.0)
Sending Trackball (ACTION_MOVE): 0:(1.0,-1.0)
8.事件4:屏幕旋转事件(隐藏事件)
Sending rotation degree=0,persist=true
9.事件5:导航事件(上下左右)
Sending Key (ACTION_DOWN): 21 // KEYCODE_DPAD_LEF
10.事件6:主要导航事件(menu等)
Sending Key (ACTION_DOWN): 23 // KEYCODE_DPAD_CENTER
11.事件7:系统按键事件(音量,home,返回按键等)
Sending Key (ACTION_UP): 25 // KEYCODE_VOLUME_DOWN
12.事件8:启动应用事件
Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.UCMobile.x86/com.UCMobile.main.UCMobile;end
13.事件9:键盘事件(隐藏显示键盘)
Sending Flip keyboardOpen=true
14.事件10:其他按键
Sending Key (ACTION_DOWN): 66 // KEYCODE_ENTER
Sending Key (ACTION_UP): 66 // KEYCODE_ENTER
15.延时
Sleeping for 300 milliseconds
16、异常情况
Monkey测试出现错误后,一般的分析步骤
看Monkey的日志(注意第一个swith以及异常信息等)
1. 程序无响应的问题:在日志中搜索 “ANR”
2. 崩溃问题:在日志中搜索“Exception” (如果出现空指针, NullPointerException) 肯定是有bug
Monkey 执行中断,在log最后也能看到当前执行次数
键盘KEYCODE:
0 --> "KEYCODE_UNKNOWN"
1 --> "KEYCODE_MENU"
2 --> "KEYCODE_SOFT_RIGHT"
3 --> "KEYCODE_HOME"
4 --> "KEYCODE_BACK"
5 --> "KEYCODE_CALL"
6 --> "KEYCODE_ENDCALL"
7 --> "KEYCODE_0"
8 --> "KEYCODE_1"
9 --> "KEYCODE_2"
10 --> "KEYCODE_3"
11 --> "KEYCODE_4"
12 --> "KEYCODE_5"
13 --> "KEYCODE_6"
14 --> "KEYCODE_7"
15 --> "KEYCODE_8"
16 --> "KEYCODE_9"
17 --> "KEYCODE_STAR"
18 --> "KEYCODE_POUND"
19 --> "KEYCODE_DPAD_UP"
20 --> "KEYCODE_DPAD_DOWN"
21 --> "KEYCODE_DPAD_LEFT"
22 --> "KEYCODE_DPAD_RIGHT"
23 --> "KEYCODE_DPAD_CENTER"
24 --> "KEYCODE_VOLUME_UP"
25 --> "KEYCODE_VOLUME_DOWN"
26 --> "KEYCODE_POWER"
27 --> "KEYCODE_CAMERA"
28 --> "KEYCODE_CLEAR"
29 --> "KEYCODE_A"
30 --> "KEYCODE_B"
31 --> "KEYCODE_C"
32 --> "KEYCODE_D"
33 --> "KEYCODE_E"
34 --> "KEYCODE_F"
35 --> "KEYCODE_G"
36 --> "KEYCODE_H"
37 --> "KEYCODE_I"
38 --> "KEYCODE_J"
39 --> "KEYCODE_K"
40 --> "KEYCODE_L"
41 --> "KEYCODE_M"
42 --> "KEYCODE_N"
43 --> "KEYCODE_O"
44 --> "KEYCODE_P"
45 --> "KEYCODE_Q"
46 --> "KEYCODE_R"
47 --> "KEYCODE_S"
48 --> "KEYCODE_T"
49 --> "KEYCODE_U"
50 --> "KEYCODE_V"
51 --> "KEYCODE_W"
52 --> "KEYCODE_X"
53 --> "KEYCODE_Y"
54 --> "KEYCODE_Z"
55 --> "KEYCODE_COMMA"
56 --> "KEYCODE_PERIOD"
57 --> "KEYCODE_ALT_LEFT"
58 --> "KEYCODE_ALT_RIGHT"
59 --> "KEYCODE_SHIFT_LEFT"
60 --> "KEYCODE_SHIFT_RIGHT"
61 --> "KEYCODE_TAB"
62 --> "KEYCODE_SPACE"
63 --> "KEYCODE_SYM"
64 --> "KEYCODE_EXPLORER"
65 --> "KEYCODE_ENVELOPE"
66 --> "KEYCODE_ENTER"
67 --> "KEYCODE_DEL"
68 --> "KEYCODE_GRAVE"
69 --> "KEYCODE_MINUS"
70 --> "KEYCODE_EQUALS"
71 --> "KEYCODE_LEFT_BRACKET"
72 --> "KEYCODE_RIGHT_BRACKET"
73 --> "KEYCODE_BACKSLASH"
74 --> "KEYCODE_SEMICOLON"
75 --> "KEYCODE_APOSTROPHE"
76 --> "KEYCODE_SLASH"
77 --> "KEYCODE_AT"
78 --> "KEYCODE_NUM"
79 --> "KEYCODE_HEADSETHOOK"
80 --> "KEYCODE_FOCUS"
81 --> "KEYCODE_PLUS"
82 --> "KEYCODE_MENU"
83 --> "KEYCODE_NOTIFICATION"
84 --> "KEYCODE_SEARCH"
85 --> "TAG_LAST_KEYCODE"