Skip to content

Repository files navigation

Lumine for Android

English | 简体中文

Android License GitHub Release GitHub Downloads GitHub last commit CI

Lumine is a Clash-style local proxy / VPN client for Android built on the enimul Go core (formerly lumine). It runs as an Android VPNService (TUN) tunnel and forwards traffic locally with configurable splitting rules.

The UI is natively built with Kotlin + Jetpack Compose, following Material Design 3 with dynamic color support. The Go core is compiled by gomobile into a single AAR, so the app keeps a pure native interface with no embedded WebView. Lumine is the mobile-side companion of the SniShaper proxy project.

Looking for the desktop version? See SniShaper — a Windows / Linux proxy client with the same enimul-based routing ideas, plus a headless CLI variant.


Features

  • One-tap local proxy (TUN): Android VPNService tunnel, start / stop from the home screen with a single switch.
  • Subscription management: import configs from a subscription URL, refresh them, and switch among Clash-style configs on the fly.
  • Rule engine: dedicated pages to view, create and edit domain and IP / CIDR rules with multiple proxy modes.
  • Intelligent splitting: blacklist-driven routing based on GFWList, inherited from the enimul core, plus a flexible Fake-IP implementation.
  • Real-time logs: level filtering (all / info / error / debug / other), auto-scroll tail, capture toggle and one-tap export.
  • Global settings: upstream DNS address and core log level.
  • Background keep-alive: guided setup for accessibility service, auto-start, battery optimization and more on common OEM ROMs.
  • Material Design 3 UI: dynamic color from the system wallpaper on Android 12+ with a full baseline fallback, light / dark both supported.

Quick Start

Install from GitHub Releases

Download the latest release APK that matches your device ABI, then install it (allow "install from unknown sources" when prompted):

ABI Typical device
arm64-v8a Most phones and tablets since ~2017 (recommended)
armeabi-v7a Older 32-bit devices
x86_64 x86_64 emulators such as MuMu / LDPlayer
x86 Legacy x86 emulators

Install from F-Droid

Get it on F-Droid

Package id: com.moi.lumine.

Configure and Start

  1. Open the app and go to 配置订阅 / Subscription.
  2. Add a subscription name and its URL, wait for the import to finish, then tap the config to apply it.
  3. Return to the home screen and flip the switch to start the proxy — the tunnel icon appears once VPNService is running.
  4. Fine-tune behavior on the Rules page, and check Keep-alive on OEM ROMs if the process gets killed after swiping the app away.

Install on an Emulator or via adb

adb install -r app-arm64-v8a-debug.apk   # or any ABI split that matches
adb shell am start -n com.moi.lumine/.MainActivity

Documentation


Build & Development

The repository is split into an Android application and a Go core module. The Go core is bound to Android via gomobile and shipped as an AAR under android/app/libs/.

android/            Android app (Kotlin + Jetpack Compose, Material 3)
  app/src/main/       application code, screens and theme
  app/libs/           LumineCore.aar (Go core, generated)
enimul/             Go core: proxying & routing (gomobile bind entry: ./mobile)
tun2socks/          Go modules for tunnel / forwarding support
scripts/            build-android.ps1, gomobile-bind.ps1
fastlane/           store metadata (F-Droid / Play)
Makefile            make android -> android/app/libs/LumineCore.aar

Build artifact matrix

Type Output Notes
Debug APK android/app/build/outputs/apk/debug/app-arm64-v8a-debug.apk arm64 only, for daily development
Release APKs android/app/build/outputs/apk/release/app-<abi>-release[(-unsigned)].apk 4 ABI splits: arm64-v8a / armeabi-v7a / x86 / x86_64
Go core AAR android/app/libs/LumineCore.aar gomobile bind output, rebuilt on release CI

Build the Android APK

git clone https://github.com/SniShaper/lumine-for-android
cd lumine-for-android/android

# Debug build
./gradlew assembleDebug

# Release build (signed when ANDROID_KEYSTORE_* env vars are provided)
./gradlew assembleRelease

On Windows use gradlew.bat instead of ./gradlew.

Build the Go core AAR

Requires a Go toolchain, gomobile, the Android SDK and an NDK:

go install golang.org/x/mobile/cmd/gomobile@latest
gomobile init

# Repository root
make android

make android wraps scripts/gomobile-bind.ps1 (bind enimul/mobile with -target=android -androidapi 24 and write LumineCore.aar).

Development environment

  • JDK 17+ (CI uses Temurin 21)
  • Android SDK: compileSdk 36, targetSdk 36, minSdk 24 (Android 7.0+)
  • Android NDK (release CI pins 30.0.14904198) and Build Tools 36.0.0
  • Go toolchain (version pinned by enimul/go.mod, currently Go 1.26) + golang.org/x/mobile/cmd/gomobile

Continuous Integration

  • android-release.yml — triggered on pushes to main / version tags and manual dispatch. It sets up Go + Android SDK + NDK, rebuilds LumineCore.aar with gomobile, runs assembleRelease, uploads the four ABI APKs as workflow artifacts, and on tag pushes creates / updates a GitHub Release with assets renamed as lumine-<tag>-app-<abi>-release.apk.
  • fastlane.yml — validates the fastlane/ supply metadata on push / PR touching it.

Platform Notes

  • The Android app targets Android 7.0 (API 24) and above; release builds are split per ABI to keep each APK small.
  • Debug builds ship arm64-v8a only; install a matching split (or rebuild for your emulator's ABI).
  • The repository is not the official upstream enimul repository — it is an Android-focused adaptation. Some modes may behave unstably on certain sites; feedback is welcome.

Acknowledgements

This project benefits from the following open-source projects:

  • enimul — Go proxying / routing core (upstream)
  • lumine — the original project enimul was forked from
  • SniShaper — desktop counterpart sharing the same design ideas

Contributors

Lumine is developed as part of the SniShaper project family (SniShaperTeam). Thanks to everyone who contributed to this repository:

Star History

Star History Chart

Project Activity

GitHub contributors GitHub commit activity GitHub last commit


License

GNU Affero General Public License v3.0 (AGPL-3.0).

About

lumine在Android平台的clash风格实现

Resources

Contributing

Security policy

Stars

52 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages