Android development requires tons of disconnected approaches for the 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 the normal state. To see the overdraw 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

pip3 install adb-enhanced # Use "pip" for python2. Both are supported. 1 pip3 install adb - enhanced # Use "pip" for python2. Both are supported.

Now, let’s look at the about use-cases again with this tool: To test a runtime permission :

# Use grant instead of revoke to grant the permission adbe permission revoke com.example camera # See all possible such permissions via "adbe -h" 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 install –

# 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 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 –

# As you would guess, use "off" to turn the battery saver off adbe battery saver on 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 –

# For a more aggressive kill, try adbe force-stop com.example adbe stop com.example 1 2 # For a more aggressive kill, try adbe force-stop com.example adbe stop com .example To test your app under doze mode

adbe doze on # Use "off" to turn the doze mode off 1 adbe doze on # Use "off" to turn the doze mode off To see the overdraw of the app

adbe overdraw on 1 adbe overdraw on Now, let’s look at the about use-cases again with this tool:

I open-sourced the code at https://github.com/ashishb/adb-enhanced . See the GitHub repository for what all this tool can do. Feedbacks and pull requests are welcome.

Like this: Like Loading...