# Mobile Deployment - Android & HarmonyOS
Deploy General Bots as the primary interface on Android and HarmonyOS devices, transforming them into dedicated AI assistants.
## Overview
BotOS transforms any Android or HarmonyOS device into a dedicated General Bots system, removing manufacturer bloatware and installing GB as the default launcher.
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ BotOS Architecture │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ BotOS App (Tauri) │ │
│ ├──────────────────────────────────────────────────────────────────┤ │
│ │ botui/ui/suite │ Tauri Android │ src/lib.rs (Rust) │ │
│ │ (Web Interface) │ (WebView + NDK) │ (Backend + Hardware) │ │
│ └──────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ┌─────────────────────────┴────────────────────────────┐ │
│ │ Android/HarmonyOS System │ │
│ │ ┌─────────┐ ┌──────────┐ ┌────────┐ ┌─────────┐ │ │
│ │ │ Camera │ │ GPS │ │ WiFi │ │ Storage │ │ │
│ │ └─────────┘ └──────────┘ └────────┘ └─────────┘ │ │
│ └───────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
```
## Supported Platforms
### Android
- **AOSP** - Pure Android
- **Samsung One UI** - Galaxy devices
- **Xiaomi MIUI** - Mi, Redmi, Poco
- **OPPO ColorOS** - OPPO, OnePlus, Realme
- **Vivo Funtouch/OriginOS**
- **Google Pixel**
### HarmonyOS
- **Huawei** - P series, Mate series, Nova
- **Honor** - Magic series, X series
## Installation Levels
| Level | Requirements | What It Does |
|-------|-------------|--------------|
| **Level 1** | ADB only | Removes bloatware, installs BotOS as app |
| **Level 2** | Root + Magisk | GB boot animation, BotOS as system app |
| **Level 3** | Unlocked bootloader | Full Android replacement with BotOS |
## Quick Installation
### Level 1: Debloat + App (No Root)
```bash
# Clone botos repository
git clone https://github.com/GeneralBots/botos.git
cd botos/rom
# Connect device via USB (enable USB debugging first)
./install.sh
```
The interactive installer will:
1. Detect your device and manufacturer
2. Remove bloatware automatically
3. Install BotOS APK
4. Optionally set as default launcher
### Level 2: Magisk Module (Root Required)
```bash
# Generate Magisk module
cd botos/rom/scripts
./build-magisk-module.sh
# Copy to device
adb push botos-magisk-v1.0.zip /sdcard/
# Install via Magisk app
# Magisk → Modules → + → Select ZIP → Reboot
```
This adds:
- Custom boot animation
- BotOS as system app (privileged permissions)
- Debloat via overlay
### Level 3: GSI (Full Replacement)
For advanced users with unlocked bootloader. See `botos/rom/gsi/README.md`.
## Bloatware Removed
### Samsung One UI
- Bixby, Samsung Pay, Samsung Pass
- Duplicate apps (Email, Calendar, Browser)
- AR Zone, Game Launcher
- Samsung Free, Samsung Global Goals
### Huawei EMUI/HarmonyOS
- AppGallery, HiCloud, HiCar
- Huawei Browser, Music, Video
- Petal Maps, Petal Search
- AI Life, HiSuite
### Honor MagicOS
- Honor Store, MagicRing
- Honor Browser, Music
### Xiaomi MIUI
- MSA (analytics), Mi Apps
- GetApps, Mi Cloud
- Mi Browser, Mi Music
### Universal (All Devices)
- Pre-installed Facebook, Instagram
- Pre-installed Netflix, Spotify
- Games like Candy Crush
- Carrier bloatware
## Building from Source
### Prerequisites
```bash
# Install Rust and Android targets
rustup target add aarch64-linux-android armv7-linux-androideabi
# Set up Android SDK/NDK
export ANDROID_HOME=$HOME/Android/Sdk
export NDK_HOME=$ANDROID_HOME/ndk/25.2.9519653
# Install Tauri CLI
cargo install tauri-cli
# For icons/boot animation
sudo apt install librsvg2-bin imagemagick
```
### Build APK
```bash
cd botos
# Generate icons from SVG
./scripts/generate-icons.sh
# Initialize Android project
cargo tauri android init
# Build release APK
cargo tauri android build --release
```
Output: `gen/android/app/build/outputs/apk/release/app-release.apk`
### Development Mode
```bash
# Connect device and run
cargo tauri android dev
# Watch logs
adb logcat -s BotOS:*
```
## Configuration
### AndroidManifest.xml
BotOS is configured as a launcher:
```xml
```
### Permissions
Default capabilities in `capabilities/default.json`:
- Internet access
- Camera (for QR codes, photos)
- Location (GPS)
- Storage (files)
- Notifications
### Connecting to Server
Edit the embedded URL in `tauri.conf.json`:
```json
{
"build": {
"frontendDist": "../botui/ui/suite"
}
}
```
Or configure botserver URL at runtime:
```javascript
window.BOTSERVER_URL = "https://your-server.com";
```
## Boot Animation
Create custom boot animation with GB branding:
```bash
# Generate animation
cd botos/scripts
./create-bootanimation.sh
# Install (requires root)
adb root
adb remount
adb push bootanimation.zip /system/media/
adb reboot
```
## Project Structure
```
botos/
├── Cargo.toml # Rust/Tauri dependencies
├── tauri.conf.json # Tauri config → botui/ui/suite
├── build.rs # Build script
├── src/lib.rs # Android entry point
│
├── icons/
│ ├── gb-bot.svg # Source icon
│ ├── icon.png # Main icon (512x512)
│ └── */ic_launcher.png # Icons by density
│
├── scripts/
│ ├── generate-icons.sh # Generate PNGs from SVG
│ └── create-bootanimation.sh
│
├── capabilities/
│ └── default.json # Tauri permissions
│
├── gen/android/ # Generated Android project
│ └── app/src/main/
│ ├── AndroidManifest.xml
│ └── res/values/themes.xml
│
└── rom/ # Installation tools
├── install.sh # Interactive installer
├── scripts/
│ ├── debloat.sh # Remove bloatware
│ └── build-magisk-module.sh
└── gsi/
└── README.md # GSI instructions
```
## Offline Mode
BotOS can work offline with local LLM:
1. Install botserver on the device (see [Local LLM](./local-llm.md))
2. Configure to use localhost:
```javascript
window.BOTSERVER_URL = "http://127.0.0.1:8088";
```
3. Run llama.cpp with small model (TinyLlama on 4GB+ devices)
## Use Cases
### Dedicated Kiosk
- Retail product information
- Hotel check-in
- Restaurant ordering
- Museum guides
### Enterprise Device
- Field service assistant
- Warehouse scanner with AI
- Delivery driver companion
- Healthcare bedside terminal
### Consumer Device
- Elder-friendly phone
- Child-safe device
- Single-purpose assistant
- Smart home controller
## Troubleshooting
### App Won't Install
```bash
# Enable installation from unknown sources
# Settings → Security → Unknown Sources
# Or use ADB
adb install -r botos.apk
```
### Debloat Not Working
```bash
# Some packages require root
# Use Level 2 (Magisk) for complete removal
# Check which packages failed
adb shell pm list packages | grep
```
### Boot Loop After GSI
```bash
# Boot into recovery
# Wipe data/factory reset
# Reflash stock ROM
```
### WebView Crashes
```bash
# Update Android System WebView
adb shell pm enable com.google.android.webview