Root Access

Rooting allows Android mobile operating system users to reach privileged control (known as root access) over various Android subsystems. Android uses the Linux kernel. Rooting an Android device gives similar access to administrative (superuser) permissions as on Linux or any other Unix-like operating systems such as FreeBSD or macOS.

Un-Rooted images

Genymotion Desktop offers several unrooted Android images which can be rooted dynamically.

| 16.0 - API 36 | Unrooted | | |---|---|---| | 15.0 - API 35 | Unrooted | | | 14.0 - API 34 | Unrooted | | | 13.0 - API 33 | Unrooted | | | 12.1 - API 32 | Unrooted | | | 12.0 - API 31 | Unrooted | | | 11.0 - API 30 | Rooted | | | 10.0 - API 29 | Rooted | | | 9.0 - API 28 | Rooted | | | 8.1 - API 27 | Rooted | | | 8.0 - API 26 | Rooted | | | 7.1 - API 25 | Rooted | | | 7.0 - API 24 | Rooted | | | 6.0 - API 23 | Rooted | | | 5.1 - API 22 | Rooted | | | 5.0 - API 21 | Rooted | |

Our most recent Android images are not rooted by default. The most recent Android images can be rooted dynamically.

| 16.0 - API 36 | Unrooted | | |---|---|---| | 15.0 - API 35 | Unrooted | | | Automotive 14.0 - API 34 | Unrooted | | | 14.0 - API 34 | Unrooted | | | 13.0 - API 33 | Unrooted | | | 12.1 - API 32 | Unrooted | | | 12.0 - API 31 | Unrooted | | | 11.0 - API 30 | Unrooted | | | 10.0 - API 29 | Unrooted | | | 9.0 - API 28 | Rooted | |

> Warning: x86/x86_64 images have been deprecated and are no longer supported.

| 14.0 - API 34 | Unrooted | | |---|---|---| | 13.0 - API 33 | Rooted | | | 12.1 - API 32 | Rooted | | | 12.0 - API 31 | Rooted | | | 11.0 - API 30 | Rooted | | | 10.0 - API 29 | Rooted | | | 9.0 - API 28 | Rooted | | | 8.1 - API 27 | Rooted | | | 8.0 - API 26 | Rooted | | | 7.0 - API 24 | Rooted | | | 6.0 - API 23 | Rooted | | | 5.1 - API 22 | Rooted | | | 5.0 - API 21 | Rooted | |

Some of our images are un-rooted images and can be dynamically rooted.

| 16.0 - API 36 | Unrooted | | |---|---|---| | 15.0 - API 35 | Unrooted | | | Automotive 14.0 - API 34 | Unrooted | | | 14.0 - API 34 | Unrooted | | | 13.0 - API 33 | Unrooted | | | 12.1 - API 32 | Unrooted | | | 12.0 - API 31 | Unrooted | | | 11.0 - API 30 | Unrooted | | | 10.0 - API 29 | Unrooted | | | 9.0 - API 28 | Rooted | | | 8.1 - API 27 | Rooted | | | 8.0 - API 26 | Rooted | | | 7.0 - API 24 | Rooted | | | 6.0 - API 23 | Rooted | | | 5.1 - API 22 | Rooted | | | 5.0 - API 21 | Rooted | |

Root and Un-root a device

Rooting and unrooting the device is controlled via the device property persist.sys.root_access. The property can be changed from the when creating or editing a device from the launchpad.

> Warning: This feature is not available on rooted Android images ( 11.0 and below).

When creating a device

When creating a device, check the "Root Access" option in the virtual device installation wizard. Root access will then be enabled by default. Then proceed to create the device.

From launchpad

Edit a virtual device settings and go to the System tab. There, toggle Root access by checking the "Root Access" option.

In Advanced Developer Tools

Open the Tools Widget. Toggle "Root Access".

Root toggling is controlled via the device property persist.sys.root_access. Root toggling can be changed only by command line, with adb, for the moment.

To toggle root: 1. Run the following ADB command:

To disable root, run the ADB command:

Root toggling is controlled via the device property persist.sys.root_access. Root toggling can be changed either from the user interface, by command line or with the .

Web UI

Navigate to the Configuration left-bar menu in the Web UI. In the Root Access card, click to toggle root access.

> Note: This feature is only available with Android 10.0 and above for the moment. With lower versions, the toggle switch will be disabled:

Command line

To root the device, set the persist.sys.root_access property value to "3" with the setprop command:

To revert back and unroot the device, set the property value to "0":

The current value of the property can be retrieved with the getprop command.

HTTP API

Device properties can be changed using the HTTP API endpoint /configuration/properties.

To root the device, set the persist.sys.root_access property value to "3" with the POST method. To revert and unroot the device, set the property value to "0" with the POST method. The current value of the property can be retrieved with the GET method.

Once the device is rooted, root access is granted. Root access is available for applications and from command line interfaces.

Root access for applications

If you are using a un-rooted device, Superuser will only be available once .

Superuser is already installed on rooted virtual devices. When an application requests root access, it prompts a pop-up asking whether root access should be authorized or denied.

The default policy can be changed using the Superuser application.

Root access by command line (adb)

> Warning: Connecting as a root user may damage your instance or jeopardize your data. USE AT YOUR OWN RISK!

> Warning: Android 10.0 and above images are no longer rooted by default: root access is only accessible after .

Android 9.0 and below images are always rooted. When logging with adb shell, the device will already be logged as root.

Use the adb root command to switch directly to root.

Use adb unroot to switch back to standard user.

How to sign your system app

Android 10 images and above are user build types. Older versions are userdebug build types.

Android 10 and above images are signed with release keys. You can use the keys provided in to sign your system apps.

Other versions are signed with the default AOSP test keys.