Skip to content

Root Access

Rooting allows Android mobile operating system users to reach privileged control (known as root access) over various Android subsystems. As 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.

Only Android 10.0-13.0 images can be dynamically rooted or unrooted since Genymotion Device image ver. 13.2. Other images are all rooted and cannot be unrooted yet.

Note

If you wish to use ADB and/or SSH, make sure to read the following first:

Root and Unroot a device

13.2.0 · 10.0-13.0

Rooting and unrooting the device is controlled via the device property persist.sys.root_access which can be changed either by command line or with the HTTP API.

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

root access

Note

This feature is only available with Android 10.0-13.0 for the moment. With other versions, the toggle switch will be disabled:

no root access

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

adb shell setprop persist.sys.root_access 3
To revert back and unroot the device, set the property value to "0":

adb shell setprop persist.sys.root_access 0
The current value of the property can be retrieved with the getprop command:

adb shell getprop persist.sys.root_access

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

setprop persist.sys.root_access 3
To revert back and unroot the device, set the property value to "0":

setprop persist.sys.root_access 0
The current value of the property can be retrieved with the getprop command:

getprop persist.sys.root_access

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.

Example

curl -u <username>:<password> -X 'POST' \
'https://34.247.73.220/api/v1/configuration/properties/persist.sys.root_access' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"value": "3"
}'

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

Example

curl -u <username>:<password> -X 'POST' \
'https://34.247.73.220/api/v1/configuration/properties/persist.sys.root_access' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"value": "0"
}'

The current value of the property can be retrieved with the GET method.

Example

curl -u <username>:<password> -X 'GET' \
'https://34.247.73.220/api/v1/configuration/properties/persist.sys.root_access' \
-H 'accept: application/json'

Response:

{
    "key": "persist.sys.root_access",
    "value": "0"
}

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

Root access for applications

Android 10.0-13.0 images are no longer rooted by default: Superuser will only be available once the device has been manually rooted.

Superuser is already installed on rooted Genymotion Device image 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

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

Android 10.0-13.0 images are no longer rooted by default: root access is only accessible after the device has been manually rooted.

Other images than Android 10.0-13.0 are always rooted: when logging with adb shell, you will already be logged as root.

Run the command adb shell to login to the instance console as root and use the su command to switch to root user:

adb shell
cloud_arm:/ $ su
:/ #

You can also use the adb root command to switch directly to root user:

adb root # Switch to root user
adb shell # Access the device shell
:/ #

Then, use adb unroot to switch back to standard user.

Run su command to switch to root user:

:/ $ su
:/ #

How to sign your system app

Android 10 and above are user build types, whereas older versions are are userdebug build types.

Android 10 and above images are signed with release keys: you can use the keys provided in this public repository to sign your system apps.

Other versions are signed with the default AOSP test keys.

Back to top