Android is an Open Source operating system which encourages developers to get their hands dirty by providing the source code and required tools for tinkering. It’s already 6 years from the inception of Android and still few users are not aware of some of the hidden features of Android. Do you know that Android has a hidden menu containing many useful developer tools was concealed deep into the settings? Have you ever heard of the Developer Options on Android?

Developer Options menu contains settings which are used for debugging and application development purpose. Google has hidden this menu at the time of Android 4.2 Jellybean release and henceforth remained hidden from the plain sight of the users. The reason behind hiding such useful menu is to avoid novice users from fiddling with some of the options that might cause unexpected results while usage. Most of us have poked our nose into the Developer Options to enable USB debugging or switching to ART runtime, but you might have noticed a lot of fuzzy options in there.

While it’s unlikely that most of us would use all the options in there, but it is always nice to know a nickel about the hidden settings on our device. So, let’s see what the crazy options in the hidden Developer Options menu actually mean. But before diving into the details, first enable the Developer Options on your Android device running 4.2 jellybean or above. If you’re not aware of the simple trick to enable the menu, you can follow the below link to learn how to do it.

Enable USB Debugging

Let’s start with the most important of all the options in the Developer Options menu and it’s probably the only option which is of concern to all the Android users. Enabling USB Debugging on your device allows your device to communicate over the USB port on your PC via the Android Debug Bridge (ADB) which is a software bundle used to do advanced operations on your device from the PC using ADB commands.

Once you’ve enabled USB Debugging on your device, you can be able to root your device, unlock bootloader, taking backups and bug reports, installing apps when you can’t access your device because of SystemUI failures and the list goes on further. This little option will allow users to take backups of the device to bypass Android Lockscreen security, everything at the reach of a few commands. However, we recommend to enable it on demand because your device can be vulnerable and prone to backdoor attacks when connected to a booby-trapped PC.

Desktop Backup Password

As we have already mentioned that you can take backups of the device using ADB commands, this options force enables a password on those backup files. So, you will have encrypted backups at your hand and you need to enter the password whenever you want to restore the backups.It’s better to have a layer of security to your backups but don’t even think of forgetting your password, else you have to say goodbyes to your backup files.

Take Bug Report

As the name itself reveals, this option allows you to collect a bug report of your device. Just a tap on this option, the system will collect log files from different section of your device and packages them for sending to anyone in the form of an E-mail. It takes a minute or two before a notification appears that the report is ready, so be patient and don’t tap the option repeatedly as this will further delay the process. This option is very useful to test custom ROMs and Kernels and send those logs to developers for debugging.

Stay Awake

This option is as simple as it sounds like, it will force your screen to stay ON whenever you plug-in your device to a charging port. It is a great way to ensure that the firmware flashing is ongoing when you’re burning images to the device. However, use this on demand as the screen will be ON even when you plug it to a wall charger.

Select Runtime

This option is only for the KitKat users as Google switched to ART by default in Android Lollipop. KitKat users can test ride the latest ART runtime by using this option to switch between ART and Dalvik runtime. This option is experimental and might destabilize your device, so kindly revert back to Dalvik if you’re facing issues with ART.

Enable Bluetooth HCI Snoop Log

A network security analyst often needs to capture and analyze Bluetooth HCI (Host Controller Interface) packets to audit what’s going on with the software end of the Bluetooth connection. This option will give them useful information without the need of a sniffing device. The log will be placed in the device storage (SDcard/btsnoop_hci.log) which can be retrieved to analyze it with software like Wireshark. So, you can fairly say that this is a pro-level option.

Process Stats

Process stats brings all the details about running process under one roof and it remains operating even with the Developer Options disabled. For a layman, it’s just some random stats but for the app developer, it’s a magic wand to get things done in a simpler way.

Revoke USB debugging authorizations

When you use a PC to debug your device over USB for the first time, you have to authorize the connections using RSA Key fingerprint. By tapping on this option, all those authorizations will be revoked and you have to re-authorize the connection for the next time you debug on a PC.

Allow Mock Locations

This might be something interesting for novice users as they can write the location information manually on their device which makes the services think you’re located somewhere else where you actually aren’t. For an app that uses location information, this option might be very useful for debugging.

Select Debug app

This options lets you choose an app to debug and as you can see, it’s also a pro-option for developer only. So, you might want to step back on this option unless you’re planning on stepping into app development. For developers, this option will let them make sure that their app runs as intended.

Wait for Debugger

Unless and until you have chosen a debug app, this option will be grayed out. This option prevents the selected app from running until the debugger is attached to it. If you didn’t understand what this means, you probably don’t have to worry about it.

Verify apps over USB

Android users can install apps over USB using the ADB commands once the USB debugging is enabled. Since side-loading the apps using ADB commands is a developer feature, Google won’t scan the packages for malicious content by default. Once this option is enabled, Google scans the app whenever you try to install using the ADB commands. We recommend to enable this option as this would add more security to the ADB connection.

Show touches

This option will enable a visible cue on the screen when and where a touch is registered. You can use this option whenever you’re using a Screen cast app to record the screen or using a mirror app to project your screen live on your PC.

Pointer Location

Enabling this option will overlay a graph plot on your screen with the information bar containing the coordinates of the touch registered. So, whenever you touch or swipe on the screen, you can see visual arcs of the locus of touches. For layman, it will allow you to detect places where the is insensitive or not working but for developers it will provide the information about touch screen mapping.

Show Surface Updates

Never even dare to enable this option as this will annoy you as hell and we have no idea why this option is available in the Developers menu, kindly enlighten us on this aspect. In few devices, enabling this option will make the edges of screen flash but on some device it will bring down the rain of flash lights which is really annoying.

Show Layout Bounds

Enabling this option will mark the edges of all the UI elements on the screen providing a kind of blueprint of the elements on the screen. This option might help developers to get an idea of the area of each element where they will respond to the touch inputs. Well, this option is also not of any use for normal users.

Force RTL Layout Direction

Forces the screen orientation from Right to Left for RTL language support. You may enable this option for a while and quickly shut it off unless you’re used to the RTL format.

Window animation scale

Allows you to the set the speed of the window animations. The lower the value of the scaling, the lesser is the time allocated to that particular animation and hence the animation will be faster.

Transition animation scale

It is the same as the window animation scale but for the transitions between two apps or windows in the system. Similar as the above, the lower value is faster. So, you have to set the lowest possible value for quick system transitions.

Simulate secondary displays

Enables a secondary display alongside your primary display so that the developers can test on different screen sizes without have to purchase different devices. Try this, it’s kind of cool.

Force GPU rendering

This forces applications to use hardware 2D rendering using the GPU rather than using the system libraries for rendering. In some cases, this options works flawlessly but sometimes you’ll regret after enabling option and face severe instability.

Show GPU view updates

Enabling this setting will show a red overlay on the screen whenever the GPU is used for an a view. Again, not for normal users.

Show hardware layer updates

Enabling this option will show the updates to the hardware layers rendered by GPU in a green light for the duration of the frame for the update occurs. Developers can optimize the performance of the app by ensuring the hardware layer updates are not abnormal.

Debug GPU overdraw

Overdraw happens when an application ask the system to draw something on top on another element. Enabling this options will let the developer know when and where the overlay is happening so that he can judge if it’s any problem to the performance.

Force 4x MSAA

MSAA refers to Multi-Sample Anti-Aliasing which is a factor responsible for better graphic reproduction on the screen, so forcing 4x MSAA would make things look better on your screen but performance might degrade proportionally.

Show CPU usage

This is another option that will bug you after enabling as it overlays CPU usage information on the top right corner of the screen. However, it is a very useful option for developers to check how the CPU is used by various processes in the system.

Profile GPU rendering

This option can be enabled in two modes, one displays a graph on the screen while the other dumps it into a file via ADB. The graph is a visual rendering of how the GPU is working under the hood.

Enable OpenGL traces

Enabling this option will look for OpenGL error and dumps them into a log file you chose at the start-up. This is yet another option which will be of no use for most of the users.

Don’t keep activities

You might have heard about this option before as most people believe that enabling this option will improve the performance of the device but we seriously doubt it. If you enable this option, it will force close every app in the background, so the user experience will take a severe hit. Better don’t enable it as there are many other ways to improve the performance of the device.

Background process limit

It will allow you to set how many processes can run in the background simultaneously. Similar as the above option, better not use it as this will interfere with the normal functionality of the Android system.

Show all ANRs

Enabling this option will make every process appear in the form App no responding dialog whenever a process gets hung. It won’t even spare the background process which user didn’t start, so enable it only to debug the compatibility of your app with the existing modules.

Phew! a lot to type about his hidden menu. Clearly you can see that most of the options are not meant to be fiddled with, few are fun to use and very few actually mean something to normal users. However, it’s always good to know about something new which might come to your service someday.

We are sure that we have covered most of the options in the developers menu, kindly enlighten us with any further info to be added or any mistakes in this b