ADB root is not working on emulator (cannot run as root in production builds)

adb, android, android-emulator, root

Solution

To enable root access: Pick an emulator system image that is NOT labelled "Google Play". (The label text and other UI details vary by Android Studio version.)

Exception: As of 2020-10-08, the Release R "Android TV" system image will not run as root. Workaround: Use the Release Q (API level 29) Android TV system image instead.

Test it: Launch the emulator, then run `adb root`. It should say

- `restarting adbd as root`

or

- `adbd is already running as root`

not

- `adbd cannot run as root in production builds`

Alternate test: Run `adb shell`, and if the prompt ends with `$`, run `su`. It should show a `#` prompt.

Steps: To install and use an emulator image that can run as root:

- In Android Studio, use the menu command Tools > AVD Manager.

- Click the + Create Virtual Device... button.

- Select the virtual Hardware, and click Next.

- Select a System Image.

- Pick any image that does NOT say "(Google Play)" in the Target column.

- If you depend on Google APIs (Google Sign In, Google Fit, etc.), pick an image marked with "(Google APIs)".

- You might have to switch from the "Recommended" group to the "x86 Images" or "Other Images" group to find one.

- Click the Download button if needed.

- Finish creating your new AVD.

- Tip: Start the AVD Name with the API level number so the list of Virtual Devices will sort by API level.

- Launch your new AVD. (You can click the green "play" triangle in the AVD window.

[Credit belongs to @Merk but this should be posted as an answer rather than a comment.]

Problem

I have just updated emulator 26.0.3, now I cannot run `adb root` command for new created emulator. the error shown is below: `adbd cannot run as root in production builds` I have killed and restart `adbd` like: ``` adb kill-server adb devices ``` Nothing helps, any ideas? I am not sure what is the difference and how to select different build but, if following settings are enabled while creating, then it has root.

Original source