I built AndroMiner, an open-source Android app that runs XMRig on your phone's CPU.
GitHub: https://github.com/Stawa/AndroMiner
What it does
- Set up a coin, wallet, worker and pool (plain TCP or TLS)
- Pick a CPU profile, or set threads, priority and core affinity yourself
- Shows live hashrate, accepted/rejected shares and raw miner output
- Stops mining when battery temperature hits your limit, Android reports severe thermal throttling, or required sensor readings go missing
- Session timer that Android enforces even when the app is in the background
- Local session history with JSON export
- Pool connection test that checks DNS/TCP/TLS without sending your wallet
Stack
- Vue 3 + TypeScript + Vite + Tailwind for the UI
- Capacitor 8 to bridge into native Android code
- XMRig compiled from source for arm64-v8a with the Android NDK
The UI is a web app, but mining and device monitoring run natively. That's why the timer and the protection checks keep working when the UI is closed.
Three APKs
-
tls: bundled miner with TLS support (most people want this one) -
notls: bundled miner, plain TCP pools only -
download: no bundled miner. It asks before downloading one and verifies the SHA-256 hash against the value built into the APK
Every release ships with a SHA256SUMS file.
Requirements
- Android 7.0+
- ARM64 device
- Notifications enabled (each run shows an ongoing notification with a Stop button)
Being honest
Phone mining won't make you money. It heats up your phone and wears down the battery. Use a spare device and watch it while it runs. The app doesn't estimate earnings, on purpose.
I built this to see how far a Capacitor app can go with a native process underneath. It turned out to be a good test case.
Try it
APKs: https://github.com/Stawa/AndroMiner/releases
Issues, bug reports and translations are welcome. Include your device model and Android version if something breaks.
Top comments (1)
Treating device health as the optimization target is the right inversion. I would expose the thermal and battery constraints as a visible budget, with the reason for each throttle event, so users can see that the miner is honoring the policy rather than simply underperforming.