Androidctl is a lightweight tool for developers who do not want to deal with the bloated Java GUI of Android Studio or the limitations of the Android CLI.
Built with modern Golang, Androidctl provides a simple CLI and TUI experience for managing Android development environments directly from the terminal.
Under the hood, Androidctl makes use of the official Android CLI tools, while providing a more convenient interface and additional features such as proxy configuration, SDK management, emulator management, and environment setup.
The goal is simple: manage your Android SDK and emulators without installing Android Studio.
⚠️ Early DevelopmentThis project is currently in its early stage. The first releases may contain bugs, incomplete features, or unexpected behavior.
Androidctl is not considered stable yet. If you encounter an issue, please report it through GitHub Issues.
Thanks to AI, the demand for computing resources has grown significantly, driving up the cost of hardware such as RAM and storage.
At the same time, many Android developers still need only a small set of tools to build, test, and run their applications. Installing Android Studio for these tasks can feel unnecessarily heavy, especially when the official Android command-line tools already provide the core functionality needed to manage SDKs and emulators.
Androidctl aims to provide a lightweight alternative: a simple CLI/TUI that gives developers the tools they need without requiring the full Android Studio environment.
- Java 17+ — required by the Android command-line tools.
- Go 1.24+ — required to build Androidctl from source.
The easiest way to get Androidctl is to download a pre-built binary from the latest release.
Choose the binary that matches your operating system and CPU architecture:
- Linux:
amd64,arm64 - Windows:
amd64,arm64 - macOS:
amd64,arm64
After downloading, place the binary somewhere in your PATH and run:
androidctlMake sure you have Go installed.
Clone the repository:
git clone https://github.com/IamPierrot/android-control.git
cd androidctlBuild the project:
go build -o androidctl ./cmd/androidctlOn Windows:
go build -o androidctl.exe ./cmd/androidctlYou can then run:
./androidctlSimply run the executable in your terminal:
# Linux / macOS
./androidctl
# Windows
.\androidctl.exeIf androidctl detects that the Android SDK or official Android CLI suite is not configured on your machine, it automatically launches an Interactive Setup Wizard:
- Host Environment Detection: Automatically identifies your OS, architecture (x86_64, arm64), and checks for existing environment variables (
ANDROID_HOME,ANDROID_SDK_ROOT). - Installation Directory: Choose where you want to store your Android SDK (e.g.
~/Android/Sdkon Linux/macOS or%LOCALAPPDATA%\Android\Sdkon Windows). - Installation Scope: Select between Local (User) or Global install.
- Automated Stream Download: Automatically streams and extracts the official Android CLI suite, configures
ANDROID_HOME,ANDROID_AVD_HOME,ANDROID_SDK_ROOT,ANDROID_SDK_HOME, and registers binaries into your systemPATH.
Once initialized, androidctl opens an interactive 4-pane control center:
- [1] Info & Environment: Real-time metrics including detected OS,
ANDROID_HOME,ANDROID_AVD_HOME, Java runtime, CLI status, and SDK disk space consumption. - [2] SDK Manager: Browse, search, install, update, and remove Android SDK packages (platforms, build-tools, system-images, platform-tools, emulator, cmdline-tools, NDK, CMake).
- [3] Virtual Devices & Emulators: Unified device management quadrant. Lists running emulator instances (
RUN:emulator-5554) alongside configured virtual devices (STOPPED). Start (s), stop (k), create (c), delete (d), and cold-boot (w). - [4] Recommended Presets & Quick Install: Curated development presets for React Native, C++ Native (NDK & CMake), .NET MAUI, Flutter, and Android Native (Kotlin/Compose). Press
Enterorito one-click install all missing SDK packages and automatically configure recommended AVDs!
| Key | Action |
|---|---|
Tab / Shift+Tab |
Cycle focus between panes ([1] → [2] → [3] → [4]) |
1, 2, 3, 4 |
Jump directly to Pane 1, 2, 3, or 4 |
↑ / ↓ |
Navigate through items in the active pane |
PgUp / PgDn |
Fast-scroll lists |
r |
Refresh all data from Android CLI and filesystem |
? |
Open Keybindings Reference Modal |
q / Ctrl+C |
Quit androidctl |
| Key | Action |
|---|---|
/ or f |
Live Search / Filter: Type to filter packages in real time by name, category, or API version. Press Enter to confirm, Esc to clear. |
i |
Install Component: Open the interactive SDK installer modal. Automatically points to the selected package, excludes already-installed components, and allows custom package names. |
u |
Update Component: Update the selected SDK package to the latest version via android.exe sdk update. |
d |
Remove Component: Safely uninstall and clean up the selected SDK package from disk. |
| Key | Action |
|---|---|
s |
Start / Launch AVD: Launch the selected virtual device in the Android Emulator. |
k |
Stop / Kill Emulator: Safely stop and terminate the selected active emulator process. |
c |
Create New AVD: Open the interactive AVD Creator modal using installed system images. |
d |
Delete AVD: Safely delete the selected virtual device and its disk files using avdmanager. |
w |
Wipe Data & Cold Boot: Reset user data and cold boot the selected AVD. |
| Key | Action |
|---|---|
↑ / ↓ |
Select a curated or custom development stack. |
Enter or i |
One-Click Install Preset: Check missing SDK packages and automatically install the complete toolchain & configure the recommended AVD. |
+ or n |
Add Custom Preset: Open the interactive form to define a new reusable preset (Title, Tag, Description, SDK packages, AVD name, System Image). |
e |
Export Presets: Export all presets to a portable JSON backup file and display the target file path. |
m or o |
Import Presets: Import and merge external presets from a JSON file into your local library. |
d |
Delete Custom Preset: Delete the selected user-defined preset. |
- Press
4to focus on the [4] Development Presets pane. - Use
↑/↓to choose a built-in stack or press+/nto create your own custom stack (e.g.Unity 2024,Godot 4,Unreal Engine, or your company's custom SDK setup). - Inspect the required packages, installation status (
✓ 3/8 installed), recommended AVD configuration, and persistent storage path (📁 File: ~/.android/androidctl_presets.json). - Press
eto Export your presets to a shared JSON file, ormto Import presets from your team. - Press
Enterorito start automated installation of all missing tools and AVD setup.
- Press
2to focus on the [2] SDK Manager pane. - Press
/orfand type (e.g.ndk,platforms;android-35, orbuild-tools). - Press
Enterto confirm your search. - Press
ito open the SDK Installer Modal. You can choose from recommended categories (Platforms, Build Tools, System Images, Essentials) or type any custom package string. - Press
Enterto start the download and installation.
- In Pane
[3], select your virtual device. - Press
sto boot the emulator. - The device status updates in real-time (
🟢 RUN:emulator-5554). - To stop the running emulator, press
k. To create a new AVD, pressc. To delete, pressd.
Contributions are welcome! If you have an idea, find a bug, or want to improve Androidctl, feel free to contribute.
If you encounter a bug, please open an issue and include:
- Operating system and architecture
- Androidctl version
- Steps to reproduce the issue
- Relevant logs or error messages
Have an idea for a new feature? Open an issue and describe:
- What problem the feature would solve
- How you expect it to work
- Any additional context or examples
Before submitting a pull request:
- Fork the repository.
- Create a new branch for your changes.
- Make your changes.
- Run the tests and build checks.
- Open a pull request with a clear description of your changes.
Please keep changes focused and follow the existing Go code style.
All contributions, including bug reports, documentation improvements, and code changes, are appreciated.
Androidctl is MIT licensed.