Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Android Control (androidctl)

Description

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 Development

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

Concept

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.

Getting started

Requirements

  • Java 17+ — required by the Android command-line tools.
  • Go 1.24+ — required to build Androidctl from source.

Downloading

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:

androidctl

Build from source

Make sure you have Go installed.

Clone the repository:

git clone https://github.com/IamPierrot/android-control.git
cd androidctl

Build the project:

go build -o androidctl ./cmd/androidctl

On Windows:

go build -o androidctl.exe ./cmd/androidctl

You can then run:

./androidctl

How to use

1. Launching Androidctl

Simply run the executable in your terminal:

# Linux / macOS
./androidctl

# Windows
.\androidctl.exe

2. First-Time Setup Wizard

If androidctl detects that the Android SDK or official Android CLI suite is not configured on your machine, it automatically launches an Interactive Setup Wizard:

  1. Host Environment Detection: Automatically identifies your OS, architecture (x86_64, arm64), and checks for existing environment variables (ANDROID_HOME, ANDROID_SDK_ROOT).
  2. Installation Directory: Choose where you want to store your Android SDK (e.g. ~/Android/Sdk on Linux/macOS or %LOCALAPPDATA%\Android\Sdk on Windows).
  3. Installation Scope: Select between Local (User) or Global install.
  4. 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 system PATH.

3. TUI Dashboard Layout

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 Enter or i to one-click install all missing SDK packages and automatically configure recommended AVDs!

4. Keybindings & Shortcuts Reference

General & Navigation

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

[2] SDK Manager Controls

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.

[3] Virtual Devices & Emulators Controls

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.

[4] Development Presets Controls

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.

5. Common Workflows

A. One-Click Setup with Presets, Custom Presets & Backup Export/Import

  1. Press 4 to focus on the [4] Development Presets pane.
  2. Use / to choose a built-in stack or press + / n to create your own custom stack (e.g. Unity 2024, Godot 4, Unreal Engine, or your company's custom SDK setup).
  3. Inspect the required packages, installation status (✓ 3/8 installed), recommended AVD configuration, and persistent storage path (📁 File: ~/.android/androidctl_presets.json).
  4. Press e to Export your presets to a shared JSON file, or m to Import presets from your team.
  5. Press Enter or i to start automated installation of all missing tools and AVD setup.

B. Searching & Installing SDK Components

  1. Press 2 to focus on the [2] SDK Manager pane.
  2. Press / or f and type (e.g. ndk, platforms;android-35, or build-tools).
  3. Press Enter to confirm your search.
  4. Press i to open the SDK Installer Modal. You can choose from recommended categories (Platforms, Build Tools, System Images, Essentials) or type any custom package string.
  5. Press Enter to start the download and installation.

C. Running & Managing Virtual Devices

  1. In Pane [3], select your virtual device.
  2. Press s to boot the emulator.
  3. The device status updates in real-time (🟢 RUN:emulator-5554).
  4. To stop the running emulator, press k. To create a new AVD, press c. To delete, press d.

Contributing

Contributions are welcome! If you have an idea, find a bug, or want to improve Androidctl, feel free to contribute.

Bug Reports

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

Feature Requests

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

Pull Requests

Before submitting a pull request:

  1. Fork the repository.
  2. Create a new branch for your changes.
  3. Make your changes.
  4. Run the tests and build checks.
  5. 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.

License

Androidctl is MIT licensed.

About

A lightweight Cli/Tui tool android sdk/emulator manager

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages