A Script to...
- root your Android Studio Virtual Device (AVD), with Magisk (Stable or Canary)
- patch its fstab
- download and install the USB HOST Permissions Module for Magisk
- install custom build Kernel and its Modules
- download and install AOSP prebuilt Kernel and its Modules
...within seconds.
- the AVD is running
- a working Internet connection for the Menu
- a command prompt / terminal is opened
adb shell
will connect to the running AVD
rootAVD A Script to root AVD by NewBit XDA
Usage: rootAVD [DIR/ramdisk.img] [OPTIONS] | [EXTRA_CMDS]
or: rootAVD [ARGUMENTS]
Arguments:
ListAllAVDs Lists Command Examples for ALL installed AVDs
EnvFixTask Requires Additional Setup fix
- construct Magisk Environment manual
- only works with an already Magisk patched ramdisk.img
- without [DIR/ramdisk.img] [OPTIONS] [PATCHFSTAB]
- needed since Android 12 (S) rev.1
- Grant Shell Su Permissions will pop up a few times
- the AVD will reboot automatically
InstallApps Just install all APKs placed in the Apps folder
Main operation mode:
DIR a path to an AVD system-image
- must always be the 1st Argument after rootAVD
ADB Path | Ramdisk DIR:
[M]ac/Darwin: export PATH=~/Library/Android/sdk/platform-tools:$PATH
~/Library/Android/sdk/system-images/android-$API/google_apis_playstore/x86_64/
[L]inux: export PATH=~/Android/Sdk/platform-tools:$PATH
~/Android/Sdk/system-images/android-$API/google_apis_playstore/x86_64/
[W]indows: set PATH=%LOCALAPPDATA%\Android\Sdk\platform-tools;%PATH%
%LOCALAPPDATA%\Android\Sdk\system-images\android-$API\google_apis_playstore\x86_64\
$API: 25,29,30,S,etc.
Except for EnvFixTask, ramdisk.img must be untouched (stock).
Options:
restore restore all existing .backup files, but doesn't delete them
- the AVD doesn't need to be running
- no other Argument after will be processed
InstallKernelModules install custom build kernel and its modules into ramdisk.img
- kernel (bzImage) and its modules (initramfs.img) are inside rootAVD
- both files will be deleted after installation
InstallPrebuiltKernelModules download and install an AOSP prebuilt kernel and its modules into ramdisk.img
- similar to InstallKernelModules, but the AVD needs to be online
Options are exclusive, only one at the time will be processed.
Extra Commands:
DEBUG Debugging Mode, prevents rootAVD to pull back any patched file
PATCHFSTAB fstab.ranchu will get patched to automount Block Devices like /dev/block/sda1
- other entries can be added in the script as well
- a custom build Kernel might be necessary
GetUSBHPmodZ The USB HOST Permissions Module Zip will be downloaded into /sdcard/Download
Extra Commands can be combined, there is no particular order.
Notes: rootAVD will
- always create .backup files of ramdisk.img and kernel-ranchu
- replace both when done patching
- show a Menu, to choose the Magisk Version (Stable || Canary), if the AVD is online
- make the choosen Magisk Version to its local
- install all APKs placed in the Apps folder
Command Examples:
./rootAVD.sh
./rootAVD.sh ListAllAVDs
./rootAVD.sh EnvFixTask
./rootAVD.sh InstallApps
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img DEBUG PATCHFSTAB GetUSBHPmodZ
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img restore
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img InstallKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img InstallPrebuiltKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img InstallPrebuiltKernelModules GetUSBHPmodZ PATCHFSTAB DEBUG
Command Examples: for ALL installed AVDs
./rootAVD.sh
./rootAVD.sh ListAllAVDs
./rootAVD.sh EnvFixTask
./rootAVD.sh InstallApps
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/android-automotive-playstore/x86/ramdisk.img
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/android-automotive-playstore/x86/ramdisk.img DEBUG PATCHFSTAB GetUSBHPmodZ
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/android-automotive-playstore/x86/ramdisk.img restore
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/android-automotive-playstore/x86/ramdisk.img InstallKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/android-automotive-playstore/x86/ramdisk.img InstallPrebuiltKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/android-automotive-playstore/x86/ramdisk.img InstallPrebuiltKernelModules GetUSBHPmodZ PATCHFSTAB DEBUG
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/google_apis_playstore/x86_64/ramdisk.img
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/google_apis_playstore/x86_64/ramdisk.img DEBUG PATCHFSTAB GetUSBHPmodZ
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/google_apis_playstore/x86_64/ramdisk.img restore
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/google_apis_playstore/x86_64/ramdisk.img InstallKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/google_apis_playstore/x86_64/ramdisk.img InstallPrebuiltKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-29/google_apis_playstore/x86_64/ramdisk.img InstallPrebuiltKernelModules GetUSBHPmodZ PATCHFSTAB DEBUG
./rootAVD.sh ~/Library/Android/sdk/system-images/android-30/google_apis_playstore/x86_64/ramdisk.img
./rootAVD.sh ~/Library/Android/sdk/system-images/android-30/google_apis_playstore/x86_64/ramdisk.img DEBUG PATCHFSTAB GetUSBHPmodZ
./rootAVD.sh ~/Library/Android/sdk/system-images/android-30/google_apis_playstore/x86_64/ramdisk.img restore
./rootAVD.sh ~/Library/Android/sdk/system-images/android-30/google_apis_playstore/x86_64/ramdisk.img InstallKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-30/google_apis_playstore/x86_64/ramdisk.img InstallPrebuiltKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-30/google_apis_playstore/x86_64/ramdisk.img InstallPrebuiltKernelModules GetUSBHPmodZ PATCHFSTAB DEBUG
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img DEBUG PATCHFSTAB GetUSBHPmodZ
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img restore
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img InstallKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img InstallPrebuiltKernelModules
./rootAVD.sh ~/Library/Android/sdk/system-images/android-S/google_apis_playstore/x86_64/ramdisk.img InstallPrebuiltKernelModules GetUSBHPmodZ PATCHFSTAB DEBUG
- Android 12 (S) rev.2+ needs Magisk v22.1+ or Canary
- With the new Menu, you can choose between the newest Magisk, Canary and Stable, Version.
- Once choosen, the script will make that Version to your local one.
- Prebuilt Kernel and Modules will be pulled from AOSP
- 1st Way - If the AVD still boots normal:
- Tap and Hold the Power Button until the 3 Options appear
- Tap and Hold the Power Off Button until Reboot to safe mode appears
- 2nd Way - If the AVD stuck while booting (black screen):
- Tap and Hold the Volume Down Button
- The Time Window is between the Launching Emulator Bar is approx half way until the Google Boot Screen appears
- Confirmation
- On the Bottom Left Corner reads: Safe mode
- After patching the ramdisk.img and cycle power, switch to user 0 via
adb shell am switch-user 0
- open the Magisk App and the Requires Additional Setup pops up -> reboot AVD
- switch again to user 0
- open the Magisk App -> Settings -> Multiuser Mode -> User-Independent -> reboot AVD
- Every time you want to Grant Su Permissions, switch to user 0 and then back to 10
adb shell am switch-user 10
- Alternative, you can install the Module magisk-single-user
- and remove all user higher than 0 i.e.
adb shell pm remove-user 13
oradb shell pm remove-user 10
- and remove all user higher than 0 i.e.
- XDA [GUIDE] Build / Mod AVD Kernel Android 10 / 11 rootAVD [Magisk] [USB passthrough Linux] [Google Play Store API]
- Inject Android Hardware USB HOST Permissions
- XDA [SCRIPT] rootAVD - root your Android Studio Virtual Device emulator with Magisk [Android 11][Linux][Darwin/MacOS][WIN][Google Play Store APIs]
- rootCROS - A Script to root your Google Chrome OS installed on a non Chromebook Device
- Video - Android Studio Emulator (AVD) Rooting with Magisk using rootAVD
- [Oct. 2021] - Android 11 (R) API 30 Google Apis Play Store x86 r09 Darwin/MacOS Production Build
- [Oct. 2021] - Android 10 (Q) API 29 Google Apis Play Store x86 r08 Darwin/MacOS Production Build
- [June 2021] - Android 12 (S) API 30 Google Apis Play Store x86_64 r05 Darwin/MacOS Production Build
- [Apr. 2021] - Android 12 (S) API 30 Google Apis Play Store x86_64 r04 Darwin/MacOS Production Build
- [May. 2021] - Android Wear 8 (Oreo) API 26 Google Apis Play Store x86 r04 Darwin/MacOS Production Build
- [May. 2021] - Android TV 11 (R) API 30 Google Apis Play Store x86 r03 Windows Production Build
- [May. 2021] - Android TV 10 (Q) API 29 Google Apis Play Store x86 r03 Windows Production Build
- [May. 2021] - Android 10 (Q) API 29 Google Apis Play Store x86 r01 Darwin/MacOS Production Build
- [Apr. 2021] - Android 12 (S) API 30 Google Apis Play Store x86_64 r03 Windows Production Build
- [Apr. 2021] - Android 12 (S) API 30 Google Apis Play Store x86_64 r03 Darwin/MacOS Production Build
- [Mar. 2021] - Android 12 (S) API 30 Google Apis Play Store x86_64 r02 Darwin/MacOS Production Build
- [Mar. 2021] - Android 12 (S) API 30 Google Apis Play Store x86_64 r01 Darwin/MacOS Production Build
- [Mar. 2021] - Android 12 (S) API 30 Google Apis Play Store x86_64 r02 Windows Production Build
- [Mar. 2021] - Android 12 (S) API 30 Google Apis Play Store x86_64 r01 Windows Production Build
- [Mar. 2021] - Android 12 (S) API 30 Google Apis Play Store x86_64 r01 Darwin/MacOS User Debug Build
- [Mar. 2021] - Android 11 (R) API 30 Google Apis Play Store x86_64 r10 Darwin/MacOS Production Build
- [Mar. 2021] - Android 11 (R) API 30 Google Apis Play Store x86_64 r10 Windows Production Build
- [Mar. 2021] - Android 10 (Q) API 29 Google Apis Play Store x86_64 r08 Darwin/MacOS Production Build
- [Mar. 2021] - Android 10 (Q) API 29 Google Apis Play Store x86_64 r08 Windows Production Build
- [rootAVD.bat] - Added Shut Down Feature
- [rootAVD.sh] - Added Shut Down Feature
- [General] - Added Android 12 (S) API 31 Status
- [General] - Added Link to Android AppSecs Video about rootAVD
Archive
- [rootAVD.bat] - Changed TestADB
- [General] - Added rootCROS Project to Links
- [General] - Android 12 (S) r05
- [General] - Updated to Magisk App v23.0
- [rootAVD.sh] - Added "AddRCscripts" Argument that *install all custom .rc scripts, placed in the rootAVD folder, into ramdisk.img/overlay.d/sbin
- [rootAVD.sh] - Added BusyBox Binary after the rootAVD script
- [rootAVD.bat] - Added ListAllAVDs and InstallApps as Arguments
- [rootAVD.sh] - Added "ListAllAVDs" Argument that Lists Command Examples for ALL installed AVDs
- [rootAVD.sh] - Added "InstallApps" Argument to Just install all APKs placed in the Apps folder
- [rootAVD.bat] - Added comprehensive Help Menu
- [General] - Added comprehensive Help Menu
- [rootAVD.sh] - Changed "DEBUG" "PATCHFSTAB" "GetUSBHPmodZ" to Arguments
- [General] - Fixed some typos and functions
- [rootAVD.sh] - Add a Menu to choose the prebuilt Kernel and Modules Version to install
- [General] - Added "InstallPrebuiltKernelModules" download/update/install prebuilt kernel and modules
- [General] - Added 2 Ways to boot the AVD into Safe Mode
- [rootAVD.sh] - Added Android S rev 3 support
- [General] - Added "InstallKernelModules" update/install custom build kernel and modules
- [rootAVD.sh] - Added update_lib_modules function
- [General] - Added "restore" to put back your backup files
- [General] - Updated local Magisk App v22.1
- [rootAVD.sh] - Added Option to Download the USB HOST Permissions Module
- [General] - Add a Download Manager Function for bad TLS record using wget
- [rootAVD.bat] - Adjustments to run with the updated rootAVD.sh
- [General] - Add a Menu to choose the Magisk Version to install
- [rootAVD.sh] - Added EnvFixTask Argument to fix Requires Additional Setup in Android S
- [General] - Changed to BusyBox (D)ASH Standalone
- [General] - Re-Structured Script
- [rootAVD.sh] - Added "Additional Setup Required" manually for Android S
- [rootAVD.sh] - Updated shakalaca's Ramdisk Repack Routine
- [rootAVD.sh] - Added Compression Detection for LZ4 and GZ
- [General] - Fixed some bugs and typos
- [General] - Updated to Magisk App v22.0
- [Jan. 2021] - Android 11 (R) API 30 Google Apis Play Store x86_64 r10 Darwin/MacOS Production Build
- [Jan. 2021] - Android 11 (R) API 30 Google Apis Play Store x86_64 r10 Windows Production Build
- [Jan. 2021] - Android 11 (R) API 30 Google Apis Play Store x86_64 r10 Linux Production Build
- [Jan. 2021] - Android 11 (R) API 30 Google Apis Play Store x86 r09 Linux Production Build
- [Dec. 2019] - Android 10 (Q) API 29 Google Apis Play Store x86_64 r09 Linux Production Build
- [Dec. 2019] - Android 10 (Q) API 29 Google Apis x86_64 r11 User Debug Build
- [Jan. 2021] - Android 7 (Nougat) API 24 Google Apis Play Store x86 r19 Production Build
- topjohnwu @ xda-developers
- topjohnwu Magisk File Host
- topjohnwu Magisk App
- topjohnwu Magisk v21.4
- topjohnwu Magisk Manager v8.0.7
- shakalaca @ xda-developers
- shakalaca MagiskOnEmulator
- Akianonymus _json_value
- Tad Fisher Android Nixpkgs
- SĂ©bastien Corne magisk-single-user
- remote-android Native Bridge Support in ReDroid
- Android AppSec - for his wonderful little video about this script