subwave-app-android

Installs and runs the SUB/WAVE Expo app on Android devices via adb and Metro.

1.3k|113|Updated May 11, 2026
One-click install
npx skills add https://github.com/perminder-klair/subwave --skill subwave-app-android
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: subwave-app-android
Source: https://github.com/perminder-klair/subwave/tree/main/.claude/skills/subwave-app-android
Command: npx skills add https://github.com/perminder-klair/subwave --skill subwave-app-android

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Getting a React Native Expo app onto a physical Android phone involves juggling adb, Metro tunnels, deep links, and JDK version quirks. This Skill automates the full workflow of installing, launching, and verifying the SUB/WAVE mobile app on a connected Android device, in both live-reload dev mode and standalone release mode.

Core Features & Use Cases

  • Dev mode over USB: Installs the debug dev-client APK, opens an adb reverse tunnel to Metro on port 8081, and launches the app via its deep link so code edits hot-reload on the phone.
  • Release mode: Builds a self-contained release APK with JDK 17 (avoiding the JDK 21 JVM-target build failure), installs it, and proves it runs unplugged over WiFi/cellular.
  • Screenshot verification: Captures the device screen after every launch to confirm the player UI actually rendered instead of trusting process status.
  • Use Case: You just edited the player UI and want to see it on your Pixel. The Skill checks adb, starts Metro if needed, opens the tunnel, launches the app, and shows you a screenshot of the result.

Quick Start

Run the SUB/WAVE app on my connected Android phone so I can see my code edits live with hot reload.

Frequently Asked Questions about subwave-app-android

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run an Expo app on a physical Android phone?

Connect the phone over USB, install the dev-client debug APK with adb, run adb reverse tcp:8081 tcp:8081 to tunnel Metro, then launch the app via its expo-development-client deep link. Code edits hot-reload on the device while Metro runs.

How to build a release APK for a React Native Expo app?

Run ./gradlew assembleRelease from the android directory with JAVA_HOME pointed at JDK 17. The output APK lands in android/app/build/outputs/apk/release/ and can be installed with adb install for standalone use without Metro.

Why does the Android release build fail with a JVM-target mismatch?

The build fails because Android Studio's bundled JDK 21 conflicts with the project's Java 17 compatibility setting, producing an inconsistent JVM-target error between compileReleaseJavaWithJavac and compileReleaseKotlin. Set JAVA_HOME to openjdk@17 before running gradlew.

Why does adb install fail with INSTALL_FAILED_UPDATE_INCOMPATIBLE?

This error occurs when the installed app was signed with a different key than the APK being installed, such as switching between debug and release builds. Uninstall the existing package with adb uninstall first, then install the new APK.

Does the app need a local backend server to run?

No. The app defaults to the public getsubwave.com station, so it plays audio without the local Docker radio stack running. Only Metro is needed in dev mode; the release build runs fully standalone over WiFi or cellular.