Standalone scripts to run Android Emulator independently from droidot.
This kit is for personal use cases:
- launch emulator with GUI or headless
- check root behavior
- keep reusable commands in one place
It does not depend on project Python modules.
- Android Studio SDK installed
- Android Command-line Tools (latest) installed in SDK Manager
adb,emulator,sdkmanager,avdmanageravailable (scripts try to auto-detect)
scripts/env.sh: common environment setupscripts/setup_sdk.sh: install required SDK packagesscripts/create_avd.sh: create AVDscripts/launch_gui.sh: launch emulator with UIscripts/launch_headless.sh: launch emulator without UIscripts/wait_boot.sh: wait until Android boot completesscripts/root_check.sh: verify root/su behaviorscripts/stop_emulator.sh: stop emulator by serialscripts/setup_frida_server.sh: detect ABI, install and start Frida serverscripts/setup_termux.sh: install Termux and bootstrap toolchain packagesscripts/termux_check.sh: verify Termux bootstrap/toolchain paths
- Install SDK components:
./scripts/setup_sdk.sh
- Create AVD:
./scripts/create_avd.sh
- Launch:
- GUI:
./scripts/launch_gui.sh - Headless:
./scripts/launch_headless.sh
- GUI:
- Check root:
./scripts/root_check.sh
- Optional Termux setup (for droidot-style on-device compile flows):
./scripts/setup_termux.sh emulator-5554./scripts/termux_check.sh emulator-5554
scripts/env.sh resolves SDK path in this order:
$ANDROID_HOMEif already set~/Library/Android/sdk(macOS Android Studio default)~/Android/Sdk(Linux Android Studio default)- fallback
~/android-sdk
If setup_sdk.sh says sdkmanager not found, install Android Command-line Tools from Android Studio SDK Manager.
Install and start Frida server on a running emulator/device:
./scripts/setup_frida_server.sh emulator-5554Defaults:
FRIDA_VERSION=16.7.11- server is copied to
/data/local/tmp/frida-server
Override version:
FRIDA_VERSION=16.7.11 ./scripts/setup_frida_server.sh emulator-5554Install Termux and bootstrap compiler/runtime packages on emulator/device:
./scripts/setup_termux.sh emulator-5554What this script does:
- installs
com.termuxAPK (auto-discovers latest arm64 release unless you override) - launches Termux once to complete bootstrap
- installs packages (
TERMUX_PACKAGES) as the Termux app user (not root) - verifies:
/data/data/com.termux/files/usr/bin/g++/data/data/com.termux/files/usr/bin/clang
Override APK source:
TERMUX_APK_URL="https://..." ./scripts/setup_termux.sh emulator-5554or:
TERMUX_APK_PATH="/path/to/termux.apk" ./scripts/setup_termux.sh emulator-5554Skip package install (install app/bootstrap only):
SKIP_TERMUX_PACKAGES=1 ./scripts/setup_termux.sh emulator-5554Frida auto-start is enabled by default when launching GUI/headless scripts.
Behavior:
- launch emulator
- wait for boot completion
- install/start frida-server automatically
If you want to launch emulator without Frida auto-start, disable it explicitly:
DISABLE_FRIDA_AUTOSTART=1 ./scripts/launch_gui.shor
DISABLE_FRIDA_AUTOSTART=1 ./scripts/launch_headless.shTermux auto-setup is disabled by default. Enable it on launch only when needed:
ENABLE_TERMUX_AUTOSTART=1 ./scripts/launch_gui.shor
ENABLE_TERMUX_AUTOSTART=1 ./scripts/launch_headless.shAfter launch, verify from host:
adb -s emulator-5554 shell 'ps -A | grep frida-server || true'
frida-ps -U
frida-ps -UaiIf Frida CLI shows need Gadget to attach on jailed Android, frida-server is not running with root on device. Re-run:
./scripts/setup_frida_server.sh emulator-5554Root behavior depends on emulator build/image type.
Typical options:
adb rootworks directly (best case)- only
su 0/su rootworks - neither works on stricter images
This kit reports what is available on your current target.
su -c can fail on some emulator images (invalid uid/gid '-c'); this is expected. Scripts automatically try working wrappers (adb root, su 0, su root, then su -c).
If GUI boots but looks minimal/blank, you are likely using the aosp_atd image, which is optimized for testing and may not look like a normal phone UX.
For a more normal launcher/app experience, create an AVD with google_apis image (for example: system-images;android-34;google_apis;arm64-v8a).
ANDROID_HOMEauto-detected (see SDK Path Detection)- AVD name:
pixel_personal - System image:
system-images;android-30;aosp_atd;arm64-v8a - Device profile:
pixel_2_xl ENABLE_TERMUX_AUTOSTART=0TERMUX_PACKAGES="clang lld make binutils patchelf python git"
Override with environment variables, for example:
export ANDROID_HOME="$HOME/Library/Android/sdk"
export AVD_NAME="my_avd"
export SYS_IMG="system-images;android-34;google_apis;arm64-v8a"