Related Stories
Whenever I search for guides to root an Android device, it asks me to unlock hidden developer options and enable USB debugging and OEM unlocking. But what about the remaining options? Android's settings menu needs to provide a clear explanation for this.
I would like to explain it today. Here's a quick overview of all the settings in the Developer Options menu and how they can make or break your phone.
We've tried to be as comprehensive as possible, but some options may vary by phone. So if your phone has developer options that aren't listed for this device, please put them in the comments for my investigation.
Main Options
- Take bug report: This button retrieves the current log file on the device and is ready to send it to the specified recipients, like an email address.
- Desktop backup password: This will apply a password to all backups you create via ADB. Without the password, these backups cannot be restored to your phone.
- Stay awake: This keeps the screen always awake while charging. This extends the life of the screen and burns images into it.
- OEM unlocking – This allows you to unlock the bootloader, but if your carrier or manufacturer has boot locked your device, it's not as easy as toggling this switch.
- Enable Bluetooth HCI snoop log: This is intended for developers and security professionals who need to analyse Bluetooth HCI (Host Controller Interface) packets. The log is in a directory (/sdcard/btsnoop_hci.log) for search and inspection.
- Select USB Configuration: This option appears to provide a way to set "Standard" USB mode but is overridden by the Standard USB option in the Settings menu. However, there is a confusing option here called "Audio Source". Some people wonder if this will turn your Android device into an audio source for your computer. The USB Configuration: The audio source setting actually allows your phone to communicate with USB audio peripherals such as USB DACs over USB. It is not designed to pass audio from Android to PC via USB.
Debugging Options
- USB debugging: It allows your Android device to connect to your computer's USB port using the Android Debugging Bridge. This is in addition to the USB connection; of course, your device will still be recognised as a storage device or whatever USB mode you have enabled on the device, but without USB debugging enabled, you won't be able to push ADB commands from your device to your Android computer.
- Revoke USB debugging authorisations: This will invalidate all key pairs on your device that match the Android device and computer used for ADB debugging. This is similar to removing the Wi-Fi password
- Power menu bug reports: this will enable an option in the channel's menu to collect and send error reports.
- 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 option 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 behaviour. This is good if you send APK files from your computer to your Android device.
- Show touches: Self-explanatory, but it gives you a visual indication of where you're typing on the screen. Helpful in diagnosing faulty touch screens.
- Pointer location: This option places an info bar at the top of the screen that tells you the screen coordinates for the last touch on the screen.
- Show surface updates: Flashes app window borders when its content is updated.
- Show layout bounds: This will select all graph edges to show where touch is detected; if you had a widget that wasn't visible on the screen, it would be highlighted.
- Force RTL layout direction: Enforce right-to-left screen orientation to support languages.
- Window Animation Scale: Specify the speed at which the window animation plays. The smaller the number, the higher the speed. Some of the settings in the "display" model and the following are too low in the phone store to make the phone very snappy and fast.
- Transition Animation Scale: Specify the playback speed of the transition animation. Again, the lower it goes, the faster it goes.
- Simulate secondary displays: This option allows developers to simulate different screen sizes. It's a bit buggy.
- Force GPU rendering: Forces programs to use 2D hardware rendering, which is not used by default if written. This can be good or bad, depending on the application.
- Show GPU view updates: With this option, all views drawn with GPU hardware have a red overlay.
- Show hardware layer updates: This option tells you when layers are updated in the application view of the supported device.
- Debug GPU Overrides: Overrides occur when an application asks the system to draw something over another. This setting lets you know when and where it happened, so you know if it's a problem.
- Force 4x MSAA: This will force 4x multi-sampling anti-aliasing, which will smooth out “jaggies” on 3D graphics but reduces overall performance.
- Strict mode enabled: This setting causes the screen to flicker when the application uses the main thread to perform long and intensive operations.
- The shows CPU usage: This just puts a small window in the top right corner of the screen with information about the CPU and how it's being used.
- Profile GPU Rendering: This option draws graphics to the screen or writes them to a file. This chart is a visual representation of GPU workloads. This is another very cool attempt.
- Enable OpenGL traces: This option monitors OpenGL errors and places them in a log file of your choice at startup. Most users don't need to touch anything.
- Don’t keep activities: This will destroy all activities once you exit the main window, closing everything related to this application. This is not good and will shorten the overall battery life. This is the same reason why "RAM cleaners" and apps that force background services are harmful in the long run. The next you launch these apps, your phone will have to work harder to open them.
- Background Process Limit: Allows the user to configure the number of processes that can run simultaneously in the background. You shouldn't mess with this; just leave it as the default.
- Show All ANR Errors: This option causes all processes to crash with "Application Not Responding", even background processes not started by the user. Useful if one app interferes with another app.
Networking Options
- Aggressive Wi_Fi to Cellular handover: When this option is turned on, your device will activate your mobile data connection faster when it detects a weak Wi-Fi signal.
- Always allow Wi_Fi Roam Scans: Enabling this option tells your device to always search for open Wi-Fi networks, even if your device is in a "sleep" state. This is useful if you're driving down a street full of available Wi-Fi connections and downloading music files and want your device to switch between Wi-Fi connections.
- Cellular data always active: It does exactly what it says, always keeps mobile data even if you turn on Wi-Fi. Best used with the "Aggressive Wi-Fi to cellular handover" option.
Media Options
- Disable USB audio routing: Enabling this option will disable auto-routing for USB audio devices, such as a USB DAC.