Skip to content
android-deploy-usb logo

Android USB Deploy

android-deploy-usb

Build and deploy Android app to connected device via USB. Fast deployment (~2-5 seconds) using Gradle and ADB. Use when deploying, installing, or building Android apps to physical devices.

SKILL.md

Full skill instructions

Android USB Deploy

Overview

Builds an Android app using Gradle and installs it directly to a USB-connected Android device via ADB (Android Debug Bridge). This is the fastest way to test on real hardware during development.

When to Use

Invoke this skill when the user:

  • Asks to "deploy to Android"
  • Wants to "install the app on device"
  • Says "build and deploy Android"
  • Mentions testing on physical Android device
  • Wants to "push to device"

Prerequisites

  • Android device connected via USB
  • USB Debugging enabled (Settings → System → Developer options → USB debugging)
  • Developer Mode enabled (Settings → About Phone → tap Build number 7 times)
  • ADB installed (brew install android-platform-tools on macOS)
  • Device authorized for debugging (RSA key accepted)
  • JAVA_HOME must be set: export JAVA_HOME="/​opt/​homebrew/​opt/​openjdk"

Instructions

  1. Navigate to the Android app directory (look for build.gradle.kts):

    cd path/​to/​android/​app
    
  2. Set JAVA_HOME environment variable:

    export JAVA_HOME="/​opt/​homebrew/​opt/​openjdk"
    
  3. Run the install-device.sh script:

    ./​install-device.sh
    
  4. The script will:

    • Check if device is connected via adb devices
    • Build the APK with ./​gradlew assembleDebug
    • Install with adb install -r app/​build/​outputs/​apk/​debug/​app-debug.apk
    • Launch the app with adb shell am start
  5. Inform the user:

    • Initial build may take longer (~10-30 seconds)
    • Subsequent builds are faster (~2-5 seconds)
    • App will launch automatically on device
    • Check device screen to see the app running

Expected Output

📱 Installing NoobTest to connected device...
✅ Found device: ABC123XYZ
🔨 Building...
✅ Build complete
📲 Installing...
✅ Installation complete
🚀 Launching app...
🎉 App installed and launched!

How It Works

The deployment process:

  1. Check device: adb devices confirms connection
  2. Build APK: ./​gradlew assembleDebug compiles the app
  3. Install: adb install -r (replace existing installation)
  4. Launch: adb shell am start -n com.miso.noobtest/​.MainActivity

Common Issues

"no devices found":

  • Enable USB debugging in Developer Options
  • Accept RSA authorization prompt on device
  • Try: adb kill-server && adb start-server
  • Check USB cable supports data (not just charging)

"Unable to locate a Java Runtime":

  • Set JAVA_HOME: export JAVA_HOME="/​opt/​homebrew/​opt/​openjdk"
  • Verify: echo $JAVA_HOME
  • Install OpenJDK if missing: brew install openjdk

"INSTALL_FAILED_UPDATE_INCOMPATIBLE":

  • App signatures don't match existing installation
  • Uninstall first: adb uninstall com.miso.noobtest
  • Try installation again

"device unauthorized":

  • Check device screen for RSA key authorization prompt
  • Accept the authorization
  • Replug device and try again

"adb: command not found":

  • Install Android platform tools: brew install android-platform-tools

Build Speed

  • First build: ~10-30 seconds (downloads dependencies)
  • Incremental builds: ~2-5 seconds
  • Much faster than iOS due to Gradle's incremental compilation

Package Name

The script is configured for the specific app's package name (e.g., com.miso.noobtest for Firefly/​NoobTest). Different apps have different package names configured in build.gradle.kts.

Gradle Note

Always set JAVA_HOME before running Gradle commands. This is a critical requirement on macOS with Homebrew-installed Java.