Anytime you search for a root guide for an Android device, invariably you’re told to unlock the hidden Developer Options, and then enable USB Debugging and/or OEM Unlocking. But what about the rest of the options? The Android settings menu offers no clear explanation of them – that’s what I want to address today. This will be a comprehensive overview of all the settings in the Developer Options menu in layman’s terms, and how they can enhance or break your phone.
I have attempted to be as comprehensive as possible, but some options may vary between phones. So if you have any Developer Options on your phone not listed in this device, put it in the comments for my research.
- Take bug report: Pressing this will grab the current log files on your device and packages them for sending to a recipient you provide, like an email address.
- Desktop backup password: This will force a password onto any backups you create via ADB. Without the password, those backups cannot be restored onto your phone.
- Stay awake: This will force your screen to always stay awake while charging, which is great for reducing your screen’s lifespan and burning images into it.
- OEM unlocking – This will allow your bootloader to be unlocked, but it isn’t quite as simple as flipping this switch if your carrier or manufacturer has bootlocked your device. But usually, it’s the first step in the right direction.
- Enable Bluetooth HCI snoop log: This is intended for developers and security specialists who need to analyze Bluetooth HCI (Host Controller Interface) packets. The log will be found in a directory like (/sdcard/btsnoop_hci.log) for retrieval and inspection.
- Select USB Configuration: This option seems to offer a way of setting the “default” USB mode, but its overridden by the standard USB option in the settings menu. There is one option here though that may be confusing, called “Audio Source”. Some people wonder if that turns your Android device into an audio source for your computer. What setting “USB Configuration: Audio Source” actually does is enable your phone to communicate via USB with USB audio peripherals, like a USB DAC. It’s not for routing audio from your Android to your PC over USB.
- USB debugging: This basically allows your Android device to communicate with your PC’s USB ports via the Android Debug Bridge. It’s an extra functionality of USB communication – of course your device will always be recognized as a storage device or whatever USB mode you have enabled on your device, but without USB debugging enabled, you cannot push ADB commands to Android from your computer.
- Revoke USB debugging authorizations: This will revoke all keypairs on your device that match an Android device to the computer/s used for ADB debugging. It’s basically like deleting a WiFi password.
- Power menu bug reports: This will enable an option in the power menu to collect and send a bug report.
- Allow mock locations: This setting allows you to set a fake location for your device, which can trick most apps that use location gathering – it isn’t foolproof though, as for example some apps like Google Play can get your approximate location based on your SIM carrier, if you’re using mobile data without a VPN.
- Select mock location app: You may have this option instead of “Allow mock locations”, and it will basically ask you to choose a 3rd party app installed on your phone for displaying mock locations to location requests from apps.
- Select debug app: In layman’s terms, this lets you choose an application to debug, and is intended for tools application developers to make sure their app runs fine on Android.
- Wait for debugger: This options becomes available once you’ve selected an app to debug with the previous option – it will prevent the app from running until the debugger is attached.
- Verify apps over USB: This will allow Google to scan applications you install over ADB for malicious behavior. It’s a good thing if you’re pushing .APK files from your computer to your Android device.
- Show touches: Self-explanatory, but it literally just shows you a visual indicator where the screen is pressed. Good for diagnosing a malfunctioning touch screen.
- Pointer location: This setting places an information bar at the top of your screen telling you the screen coordinates of the last place the screen was touched.
- Show surface updates: Makes the edge of an app window flash when its contents are updated.
- Show layout bounds: This will mark all the edges of a layout to show you where touches are registered – like if there’s an invisible widget on your screen, this would highlight it.
- Force RTL layout direction: Forces screen orientation for right to left language support.
- Window animation scale: Sets the speed for window animation playback. A lower number is faster. Some “display” models set option, along with the one below it, super low in cellphone stores, to make the phones appear ultra-snappy and fast.
- Transition animation scale: Sets the speed for transition animation playback. Again, lower is faster.
- Simulate secondary displays: This setting allows developers to simulate different screen sizes. It’s a bit buggy.
- Force GPU rendering: Forces applications to use hardware 2D rendering if they were written to not use it by default. This can be a good or a bad thing, depending on the application.
- Show GPU view updates: With this setting, any view that is drawn with the GPU hardware gets a red overlay.
- Show hardware layer updates: This setting will tell you when layers update in hardware-backed application views.
- Debug GPU overdraw: Overdraw happens every time the application asks the system to draw something on top of something else. This setting lets you see when and where this is happening so you know if it is a problem.
- Force 4x MSAA: This will force 4x multisampling anti-aliasing, which will smooth out “jaggies” on 3D graphics, but reduces overall performance.
- Strict mode enabled: This setting flashes the screen when an application uses the main thread to perform long, intensive operations.
- Show CPU usage: This simply places a tiny window in the upper right of your screen with information about the CPU and how it is being used.
- Profile GPU rendering: This setting can either draw a graph on the screen, or write it to a file. The graph is a visual rendering of how hard the GPU is working. This is another really neat one to try.
- Enable OpenGL traces: This setting watches for OpenGL errors, and places them in the log file you chose when you started it up. Nothing that most users will ever need to touch.
- Don’t keep activities: This will literally destroy any activity as soon as you exit the main window, forcing everything associated with that app to close. This is not a good thing, and will reduce overall battery life. It’s pretty much the same reason why “RAM cleaners” and apps that force-close background services are bad in the long run. Your phone has to work harder to open those apps the next time you launch them.
- Background process limit: Allows a custom setting of how many process can run in the background at once. You really shouldn’t play with this, just leave it on the default.
- Show all ANRs: This setting makes every process show an “App Not Responding” dialog if it gets hung — even background processes that the user did not start. Useful if one application is interfering with another.
- Aggressive Wi_Fi to Cellular handover: With this enabled, your device will be much quicker about enabling the mobile data connection when it detects a weak wifi signal.
- Always allow Wi_Fi Roam Scans: Enabling this will tell your device to always scan for open wifi networks, even when your device is “sleeping”. This is useful if you’re driving down a street full of open wifi connections and you’re downloading music files and want your device to hop between the wifi connections.
- Cellular data always active: This does exactly what it says, it keeps the mobile data always turned on, even if you enable the wifi. It’s best paired with the “Aggressive wi_fi to cellular handover” option.
- Disable USB audio routing: Enabling this will disable automatic routing to USB audio peripherals, like a USB DAC.