Skip to content

Adarsh-codesOP/FAS

Repository files navigation


███████╗ █████╗ ███████╗ ██╔════╝██╔══██╗██╔════╝ █████╗ ███████║███████╗ ██╔══╝ ██╔══██║╚════██║ ██║ ██║ ██║███████║ ╚═╝ ╚═╝ ╚═╝╚══════╝
Fast Android System
Build & run Android apps without Android Studio. One binary. Zero config.

Release License Go PRs Welcome


The Problem

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.

What FAS Does Differently

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:

  1. Zero-dependency bootstrappingfas setup --global downloads ADB, detects Java, and configures the SDK. A fresh machine goes from nothing to compiling in one command.
  2. Self-healing projects — Missing gradlew? FAS injects it from embedded bytes. Wrong local.properties? FAS rewrites it. You never touch boilerplate again.
  3. 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.
  4. 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 start command.
  5. 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.

Quick Start

# 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 run

That's it. No editing config files. No learning Gradle task names. No manual ADB.


Installation

Pre-built Binary (Recommended)

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

From Source

git clone https://github.com/Adarsh-codesOP/FAS.git
cd FAS
go build -o fas .

Via go install

go install github.com/Adarsh-codesOP/fas@latest

Command Reference

FAS 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


Emulator Management

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 docker

Full emulator documentation: docs/EMULATOR.md


Configuration

Global Config (~/.fas/config.yaml)

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: info

Per-Project Config (.fas.yaml — optional)

Drop 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/"

Architecture

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


CI/CD

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

Full CI/CD documentation: docs/CI-CD.md


Contributing

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

License

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 ⭐

About

Build, install & run Android apps from the terminal — no Android Studio needed. A single ~11 MB Go binary that auto-detects your SDK, manages ADB, hot-rebuilds on file changes, and supports wireless debugging, emulators, and team build caching.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors