命令如下:
adb shell monkey --help
** Error: Unknown option: --help
usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[--ignore-security-exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct-touch PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct-appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE]
[--wait-dbg] [--dbg-no-events]
[--setup scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
運行monkey可以採用兩種方式:系統默認方式和script方式
一、默認運行方式:
adb shell monkey -p package.name -v 30
其中: 可以繼續添加一個或者兩個 -v 參數, -v參數越多,輸出的日誌越詳細
最後的數字表示,觸發的事件次數
爲了更好的查看日誌,可以將輸出的日誌信息重定向到文件中
如:adb shell monkey -p package.name -v 30 > log.txt
二、腳本方式
Android 的monkey test 工具提供了 -f scriptfile 參數,可以指定 test 腳本。在 monkey 的源碼 MonkeySourceScript.java 中有一小段註釋,裏面給了一個不到 10 行例子:
/**
* monkey event queue. It takes a script to produce events
*
* sample script format:
* type= raw events
* count= 10
* speed= 1.0
* start data >>
* captureDispatchPointer(5109520,5109520,0,784314,
* 0.06666667,0,0.0,0.0,65539,0)
* captureDispatchKey(5113146,5113146,0,20,0,0,0,0)
* captureDispatchFlip(true)
* ...
*/
monkey中提供的函數如下:
DispatchPointer(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)
DispatchTrackball(long downTime, long eventTime, int action, float x, float y, float pressure, float size, int metaState, float xPrecision, float yPrecision, int device, int edgeFlags)
DispatchKey(long downTime, long eventTime, int action, int code, int repeat, int metaState, int device, int scancode)
DispatchFlip(boolean keyboardOpen)
DispatchPress(int keyCode)
LaunchActivity(String pkg_name, String cl_name)
UserWait(long sleeptime)
LongPress(int keyCode)
如: adb push lujing/monkey.script /sdcard/
然後執行腳本:
adb shell monkey -v -f /sdcard/monkey.script
附 Example:
type= user
count= 49
speed= 1.0
start data >>
LaunchActivity(com.example.android.notepad, com.example.android.notepad.NotesList)
DispatchPress(KEYCODE_DPAD_DOWN)
LongPress(KEYCODE_DOWN)
DispatchPress(KEYCODE_BACK)
其中 type值可以任意,源碼中沒有對該值做任何處理。
count值,在此無效,還是需要在命令行輸入需要執行的次數。因爲命令行的count值是必填項
另外,如何通過LaunchActivity啓動帶參數的activity,還需要繼續研究。