Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Personal Android Emulator Kit

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.

Prerequisites

  • Android Studio SDK installed
  • Android Command-line Tools (latest) installed in SDK Manager
  • adb, emulator, sdkmanager, avdmanager available (scripts try to auto-detect)

Folder Layout

  • scripts/env.sh: common environment setup
  • scripts/setup_sdk.sh: install required SDK packages
  • scripts/create_avd.sh: create AVD
  • scripts/launch_gui.sh: launch emulator with UI
  • scripts/launch_headless.sh: launch emulator without UI
  • scripts/wait_boot.sh: wait until Android boot completes
  • scripts/root_check.sh: verify root/su behavior
  • scripts/stop_emulator.sh: stop emulator by serial
  • scripts/setup_frida_server.sh: detect ABI, install and start Frida server
  • scripts/setup_termux.sh: install Termux and bootstrap toolchain packages
  • scripts/termux_check.sh: verify Termux bootstrap/toolchain paths

Quick Start

  1. Install SDK components:
    • ./scripts/setup_sdk.sh
  2. Create AVD:
    • ./scripts/create_avd.sh
  3. Launch:
    • GUI: ./scripts/launch_gui.sh
    • Headless: ./scripts/launch_headless.sh
  4. Check root:
    • ./scripts/root_check.sh
  5. Optional Termux setup (for droidot-style on-device compile flows):
    • ./scripts/setup_termux.sh emulator-5554
    • ./scripts/termux_check.sh emulator-5554

SDK Path Detection

scripts/env.sh resolves SDK path in this order:

  1. $ANDROID_HOME if already set
  2. ~/Library/Android/sdk (macOS Android Studio default)
  3. ~/Android/Sdk (Linux Android Studio default)
  4. fallback ~/android-sdk

If setup_sdk.sh says sdkmanager not found, install Android Command-line Tools from Android Studio SDK Manager.

Frida Server

Install and start Frida server on a running emulator/device:

./scripts/setup_frida_server.sh emulator-5554

Defaults:

  • 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-5554

Termux Support

Install Termux and bootstrap compiler/runtime packages on emulator/device:

./scripts/setup_termux.sh emulator-5554

What this script does:

  • installs com.termux APK (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-5554

or:

TERMUX_APK_PATH="/path/to/termux.apk" ./scripts/setup_termux.sh emulator-5554

Skip package install (install app/bootstrap only):

SKIP_TERMUX_PACKAGES=1 ./scripts/setup_termux.sh emulator-5554

Auto-start Frida on Emulator Launch

Frida 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.sh

or

DISABLE_FRIDA_AUTOSTART=1 ./scripts/launch_headless.sh

Termux auto-setup is disabled by default. Enable it on launch only when needed:

ENABLE_TERMUX_AUTOSTART=1 ./scripts/launch_gui.sh

or

ENABLE_TERMUX_AUTOSTART=1 ./scripts/launch_headless.sh

Frida Quick Verify

After launch, verify from host:

adb -s emulator-5554 shell 'ps -A | grep frida-server || true'
frida-ps -U
frida-ps -Uai

If 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-5554

Notes About Root

Root behavior depends on emulator build/image type.

Typical options:

  • adb root works directly (best case)
  • only su 0/su root works
  • 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).

GUI Note (Blank Home Screen)

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).

Defaults

  • ANDROID_HOME auto-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=0
  • TERMUX_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"

About

No description, website, or topics provided.

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages