Android development requires tons of disconnected approaches for development and testing. Consider some scenarios
- To test runtime permission - Go to Settings -> Applications -> Application info of the app you are looking for and disable that permission.
- To test a fresh install -
adb shell pm clear-data com.example
- To test your app under the battery-saver mode - turn on the battery saver mode by expanding the notification bar
- To stop the execution of an app - kill it via activity manager,
adb shell am kill com.example
- To test your app under doze mode - first, make the device believe that it is unplugged via
adb shell dumpsys battery unplug
, then, make it think that it is discharging via
adb shell dumpsys battery set status 3
, and then enable doze mode via
adb shell dumpsys deviceidle force-idle
.
And don’t forget to execute a set of unrelated complementary commands once you are done to bring
the device back to its normal state. - To see the over draw of the app - Go to the developer options and enable/disable it there.
Over time, this became a significant mental burden that I first wrote some of these flows in a text file and then converted them to automated shell scripts. But when even that felt insufficient, I created a tool for myself called adb-enhanced.
How it works:
First, install the tool. I wrote this in Python, so, if the following command does not work, install
Python
1
| pip3 install adb-enhanced # Python2 is no longer supported since 2021
|
Now, let’s look at the about use-cases again with this tool:
- To test runtime permission :
1
2
| # Use grant instead of revoke to grant the permission
adbe permission revoke com.example camera # See all possible such permissions via "adbe -h"
|
- To test a fresh installation -
1
2
3
4
| # Unlike adb shell pm clear-data com.example, this command will
# produce an error if com.example is not installed
# which is good for catching typos
adbe clear-data com.example
|
- To test your app under the battery saver mode -
1
2
| # As you would guess, use "off" to turn the battery saver off
adbe battery saver on
|
- To stop the execution of an app -
1
2
| # For a more aggressive kill, try adbe force-stop com.example
adbe stop com.example
|
- To test your app under doze mode
1
| adbe doze on # Use "off" to turn the doze mode off
|
- To see to overdraw of the app
I open-sourced the code at
ashishb/adb-enhanced
.
See the GitHub repository for what all this tool can do.
Feedbacks and pull requests are welcome.