Home » Android » android – How do I stop the monkey madness?

android – How do I stop the monkey madness?

Posted by: admin April 23, 2020 Leave a comment

Questions:

I’m using the monkey tool to run a test of my Android application. For example, I might do a run like the following:

adb shell monkey -p com.myapp -v 10000

However, if I change my mind and need to cancel the test, there doesn’t seem to be a way to do so that doesn’t involve waiting multiple minutes for the damned monkey to finish most or all of its run.

Killing the adb shell process on my mac doesn’t solve the problem. Killing the com.myapp process on my phone using ddms doesn’t work. Unplugging my phone doesn’t work.

How do I cancel the monkey madness?

How to&Answers:

You can kill the monkey process just doing this:

$ adb shell ps | awk '/com\.android\.commands\.monkey/ { system("adb shell kill " $2) }'

Answer:

[Nitpick] You’re confusing monkeyrunner with monkey.

The monkeyrunner tool is not related to the UI/Application Exerciser
Monkey, also known as the monkey tool. The monkey tool runs in an adb
shell directly on the device or emulator and generates pseudo-random
streams of user and system events. In comparison, the monkeyrunner
tool controls devices and emulators from a workstation by sending
specific commands and events from an API.

[/Nitpick]

On my Android 2.2 device when I start monkey, I see a process started in DDMS by the name “?” (just a question mark). When I killed that process, the monkey madness stopped.

Answer:

adb shell
ps | grep monkey
kill process_id

Answer:

For what it’s worth, I use Android Studio 3.1.4 on a Mac in 2018 and I had to alter the accepted answer like so:

./adb shell ps | awk '/com\.android\.commands\.monkey/ { system("./adb shell kill " $2) }'

Hope that help prevent some hair-pulling and pencil snapping out there!

Also… when it comes to the monkey, always be sure to pin your app!!! Otherwise you might accidentally send all your selfies to a random email in China like I did. ¯\_(ツ)_/¯

Answer:

adb shell kill $(adb shell pgrep monkey)

kudo to @deadfish