███████╗ █████╗ ███████╗
██╔════╝██╔══██╗██╔════╝
█████╗ ███████║███████╗
██╔══╝ ██╔══██║╚════██║
██║ ██║ ██║███████║
╚═╝ ╚═╝ ╚═╝╚══════╝
Fast Android System
Build & run Android apps without Android Studio. One binary. Zero config.
Android Studio is a 2+ GB IDE that consumes 2–8 GB of RAM just sitting idle. If you're a backend developer adding a small feature, a student learning Android, or a CI pipeline compiling an APK, you don't need a full-blown IDE — you need a compiler and a device connection.
Today, the alternatives are:
- Manual shell scripts — fragile, per-project, break across machines.
- Gradle CLI directly — requires you to know task names, manage
local.properties, install the SDK yourself, and wrangle ADB flags by hand. - Docker-based emulators — powerful but require significant Docker knowledge and manual wiring.
Every one of these paths demands tribal knowledge. FAS eliminates all of it.
FAS is a single ~11 MB binary that replaces the entire "build → install → launch → debug" pipeline of Android Studio. It is not an IDE. It is not a plugin. It is a purpose-built CLI that does exactly one job and does it with zero configuration:
| Capability | Android Studio | Manual Scripts | FAS |
|---|---|---|---|
| No IDE required | ✗ | ✓ | ✓ |
| Auto-detect package ID | ✓ | ✗ | ✓ |
| Works on any project without config | ✓ | ✗ | ✓ |
| Auto-install ADB + SDK | ✓ | ✗ | ✓ |
| Wireless debugging (QR + mDNS) | ✓ | ✗ | ✓ |
| File-watch hot-rebuild | ✓ | ✗ | ✓ |
| Built-in emulator orchestration | ✓ | ✗ | ✓ |
| Share APK over local network | ✗ | ✗ | ✓ |
| Remote device tunneling | ✗ | ✗ | ✓ |
| Team build cache server | ✗ | ✗ | ✓ |
| RAM at idle | 2–8 GB | 0 MB | 0 MB |
| Disk footprint | 2+ GB | N/A | ~11 MB |
Key improvements over the status quo:
- Zero-dependency bootstrapping —
fas setup --globaldownloads ADB, detects Java, and configures the SDK. A fresh machine goes from nothing to compiling in one command. - Self-healing projects — Missing
gradlew? FAS injects it from embedded bytes. Wronglocal.properties? FAS rewrites it. You never touch boilerplate again. - Smart file-watch rebuilds — FAS classifies changed files (source vs. resource vs. config) and picks the fastest Gradle task automatically, with an 800ms debounce that absorbs IDE save cascades.
- Emulator without Android Studio — FAS provisions AVD emulators on Windows, Waydroid containers on Linux, or Docker-based emulators on any platform — all behind a single
fas emulator startcommand. - Team collaboration built-in — Share APKs over the LAN, tunnel devices to remote teammates, and run a shared Gradle build cache server — features that don't exist anywhere else in a single tool.
# 1. Bootstrap your environment (downloads ADB, detects JDK & SDK)
fas setup --global
# 2. Initialize your Android project
cd your-android-project
fas setup
# 3. Plug in a device and go
fas runThat's it. No editing config files. No learning Gradle task names. No manual ADB.
Download the latest binary for your platform from Releases and add it to your PATH.
| Platform | Binary |
|---|---|
| Windows (x64) | fas-windows-amd64.exe |
| Windows (ARM) | fas-windows-arm64.exe |
| macOS (Intel) | fas-darwin-amd64 |
| macOS (Apple Silicon) | fas-darwin-arm64 |
| Linux (x64) | fas-linux-amd64 |
| Linux (ARM) | fas-linux-arm64 |
git clone https://github.com/Adarsh-codesOP/FAS.git
cd FAS
go build -o fas .go install github.com/Adarsh-codesOP/fas@latestFAS ships with 15 commands. Every command is documented with --help. Here is the full overview:
| Command | What it does |
|---|---|
fas setup |
Bootstrap environment (--global) or initialize a project |
fas doctor |
Full health check — Java, ADB, SDK, project, devices, emulator |
fas run |
Build → Install → Launch in one command |
fas watch |
File-watching hot-rebuild with smart debouncing |
fas logs |
Stream color-coded, app-filtered logcat |
fas emulator |
Install, start, stop, and manage emulators (AVD / Waydroid / Docker) |
fas wifi |
Wireless ADB setup — QR code, mDNS auto-discovery, or manual |
fas cap |
Screenshot or screen recording from device |
fas info |
App metadata, permissions, SDK versions |
fas open |
Test deep links on a connected device |
fas share |
Build and share APK over the local network |
fas cache |
Start a local HTTP Gradle build cache server |
fas tunnel |
Expose a local device to the network for remote testing |
fas update |
Self-update to the latest release |
fas version |
Print version, commit, and build timestamp |
Full command documentation with all flags and examples: docs/COMMANDS.md
FAS can provision and run Android emulators without Android Studio on any platform:
| Platform | Backend | How it works |
|---|---|---|
| Windows | AVD (default) | Downloads system images via sdkmanager, creates an AVD, tunes WHPX/Hyper-V acceleration |
| Linux | Waydroid (default) | Provisions a lightweight containerized Android system with bare-metal performance |
| Any (Docker) | Docker (opt-in) | Pulls budtmo/docker-android images, boots in a container, auto-connects ADB |
# Install and boot (uses platform default backend)
fas emulator install
fas emulator start
# Explicitly choose Docker backend
fas emulator install --backend docker --android-api 34
fas emulator start --backend dockerFull emulator documentation: docs/EMULATOR.md
Created automatically by fas setup --global. You rarely need to edit this by hand.
adb_path: "C:\\Android\\Sdk\\platform-tools\\adb.exe"
sdk_path: "C:\\Android\\Sdk"
java_home: "C:\\Program Files\\Microsoft\\jdk-21.0.10.7-hotspot"
auto_launch: true
log_level: infoDrop this in your project root to override defaults:
package_id: "com.example.myapp"
build_variant: "debug"
module: "app"
watch:
debounce_ms: 500
ignore:
- "*.md"
- "docs/"FAS is written in Go and compiles to a single static binary with no runtime dependencies.
fas/
├── cmd/ # CLI commands (Cobra)
├── internal/
│ ├── bootstrap/ # ADB/JDK/SDK auto-detection and download
│ ├── cache/ # HTTP build cache server implementation
│ ├── emulator/ # Emulator manager interface
│ │ ├── avd/ # Windows AVD backend
│ │ ├── waydroid/ # Linux Waydroid backend
│ │ └── dockeremu/ # Cross-platform Docker backend
│ └── tunnel/ # TCP device tunneling
├── pkg/
│ ├── adb/ # ADB client (raw TCP to port 5037)
│ ├── config/ # Global + project config loading
│ ├── gradle/ # Gradle wrapper detection, task runner, APK finder
│ ├── network/ # Local IP detection, file server
│ └── ui/ # Terminal styling (lipgloss)
├── embedded/ # Gradle wrapper JAR + scripts (compiled into binary)
└── main.go # Entry point with ldflags version injection
Full architecture deep-dive: docs/ARCHITECTURE.md
FAS includes a production-ready GitHub Actions workflow that builds cross-platform binaries and creates GitHub Releases with AI-generated release notes (via Gemini).
Releases are triggered by pushing a version tag:
git tag v1.2.5
git push origin v1.2.5Full CI/CD documentation: docs/CI-CD.md
We welcome contributions of all sizes. See CONTRIBUTING.md for guidelines on:
- Setting up a development environment
- Code style and conventions
- Submitting pull requests
- Reporting bugs
FAS is released under the MIT License. Use it, fork it, ship it.
Built with ❤️ by Adarsh-codesOP
If FAS saved you time, consider giving it a ⭐