跳到正文

Kindness-Kismet

stelliberty_android

A modern network client for android.

README 已保存到本站,可直接阅读

Documentation snapshot

README 快照

这篇是英文原文

下面正文是项目自己的英文 README。想读全文就用浏览器自带的整页翻译: Chrome / Edge 点地址栏右侧的翻译图标,或用右键菜单里的「翻译成中文」; 手机浏览器一般在菜单里。

本页保存的是公开项目资料快照,阅读过程不需要连接 GitHub。

Stelliberty Android

图片:English   图片:简体中文

图片:Android 图片:Kotlin 图片:License

Stelliberty is a native Android proxy client based on Mishka, powered by mihomo, with a Jetpack Compose interface built on miuix.

Use Android VPN without root, or choose ROOT TUN and ROOT TPROXY for privileged traffic capture. Manage subscriptions, proxy groups, connections, and routing from one app.


  • Installation
  • Quick Start
  • Features
  • FAQ
  • Development Guide
  • Release Workflow
  • Contributing
  • License and Credits

📦 Installation

↑ Back to Navigation

Download an APK from the Releases page.

ChannelWhere to find itIntended use
StableLatest stable releaseRegular use
BetaReleases marked Pre-release, with a -betaN versionTry upcoming changes

Android 12 or later is required. Choose arm64-v8a for current phones or x86_64 for devices and emulators with that architecture.

Stable and beta packages share the same application ID and signing key. Android checks the version code when installing an update; a beta of the next version may be newer than the current stable release.


🚀 Quick Start

↑ Back to Navigation

  1. Import a subscription URL, scan a QR code, or select a local configuration file.
  2. Select the active subscription and choose nodes on the proxy page.
  3. Choose Rule, Global, or Direct mode on the home page.
  4. Start the proxy and approve the Android VPN permission. ROOT modes require root access instead.

For configuration options, see the mihomo documentation.


✨ Features

↑ Back to Navigation

AreaCapabilities
Traffic captureVPN, ROOT TUN, ROOT TPROXY, per-app allowlists and blocklists, ROOT hotspot handling
SubscriptionsURL, file, and QR import; age-encrypted configurations; scheduled updates; per-subscription User-Agent
Proxy managementGroup selection, latency tests, provider refresh, configuration editing
DiagnosticsLive traffic, connections, logs, and DNS queries
AutomationQuick Settings tile, start on boot, and Wi-Fi policies
AppearanceLight and dark themes, dynamic colors, blur effects, and wide-screen layouts
DataBackup, restore, and WebDAV support

❓ FAQ

↑ Back to Navigation

Do I need root?

VPN mode works without root. ROOT TUN and ROOT TPROXY need root permission; TPROXY also requires support from the device kernel.

How do the tunnel modes differ?

ModeTraffic capture
VPNAndroid creates and manages the VPN interface
ROOT TUNThe core creates a TUN interface and configures routing
ROOT TPROXYFirewall rules and policy routing redirect traffic to the core

Why does a configuration change require a restart?

Configuration changes currently take effect by restarting the core. Rule, Global, and Direct describe routing behavior; they are separate from the tunnel mode.

Does the app provide a subscription?

No. Import your own subscription or configuration. The project supplies the client and its proxy core.


🛠 Development Guide

↑ Back to Navigation

Prerequisites

ToolRequirement
Python3.10 or later
GitRequired for submodules
Android SDKInstall command-line tools and accept SDK licenses; SDK settings are in ProjectConfig.kt
GoThe prebuild script downloads the latest stable release into build/go/; no system installation is needed
JDK and Gradle launcherDownloaded by the prebuild script

Android Gradle Plugin resolves the NDK and CMake used for native compilation. Android dependency coordinates and tool versions are maintained in libs.versions.toml.

Local builds and CI use the same portable Go setup, with archives verified against the official SHA256 checksums. Regular builds reuse the downloaded toolchain without checking the network. Run python scripts/prebuild.py --refresh-go to check for and install the latest stable release; a compiler version change also rebuilds the native core.

Architecture

android/app/src/main/kotlin/com/stelliberty/android/
├── ui/           Compose screens, components, navigation, and themes
├── viewmodel/    Screen state and user actions
├── domain/       Models and repository interfaces
├── data/         Repositories, JSON stores, core API clients, and backup
├── platform/     Android integration and service control
└── service/      VPN, ROOT, subscriptions, and background services
android/app/src/main/cpp/                        JNI and process helpers
android/app/src/main/native/stelliberty_core/     Go core integration
third_party/                                    mihomo and scripta submodules
scripts/                                        Prebuild and build entry points

Screens receive dependencies through parameters. ViewModels depend on repository interfaces, and platform code owns Android-specific behavior. See AGENTS.md for project conventions.

Build and Verify

git clone --recurse-submodules https://github.com/Kindness-Kismet/stelliberty_android.git
cd stelliberty_android
python scripts/prebuild.py
python scripts/build.py --dev
CommandResult
python scripts/build.py compile --devCompile debug Kotlin without rebuilding the native core
python scripts/build.py --devBuild a debug APK
python scripts/build.pyBuild a release APK
python scripts/build.py --abi x86_64Build for a selected architecture
python scripts/build.py --version 1.0.1-beta1Override the packaged version without editing source metadata
python scripts/prebuild.py --refresh-geoRefresh bundled GeoIP resources
python scripts/prebuild.py --refresh-goUpdate portable Go to the latest stable release

APKs are collected in build/apk/. Release signing uses KEYSTORE_PATH, KEYSTORE_PASS, KEY_ALIAS, and KEY_PASSWORD environment variables. An unsigned local release build must be signed before installation.

The repository uses a directory and extension allowlist. CI also rejects tracked files outside that allowlist, including files added with force. Downloaded launchers, JDKs, Go toolchains, GeoIP data, native binaries, caches, and temporary files stay outside Git. Collected Baseline Profiles remain tracked because a download cannot recreate them.


🔖 Release Workflow

↑ Back to Navigation

WorkflowTriggerOutput
Stable BuildVersion change on main, or manual dispatch from mainvX.Y.Z, marked as the latest stable release
Beta BuildProduct changes on beta excluding pushes that change the application version or changelog, or manual dispatch from betaNext patch version with an increasing -betaN suffix, marked as a pre-release
Verify Pull RequestPull requests targeting beta or mainKotlin compilation without release credentials or publishing

Both release channels build signed release APKs for all two supported 64-bit architectures. The local --dev flag selects a debug build and does not select the beta release channel.

Configure these repository Actions secrets before publishing:

SecretValue
KEYSTORE_BASE64Release keystore encoded as Base64 without line wrapping
KEYSTORE_PASSKeystore password
KEY_ALIASSigning key alias
KEY_PASSWORDSigning key password

Use the same key for both channels. APK uploads finish before a release becomes public. Stable releases use .github/CHANGELOG.md; beta releases list commits since the previous release baseline. The first beta uses the current changelog if no baseline exists.

The version-bump skill updates ProjectConfig.VERSION_NAME and rewrites the current changelog: English bullets first, a separator, then matching Simplified Chinese bullets. It does not raise dependency versions or publish releases on its own.


📋 Contributing

↑ Back to Navigation

Submit changes to beta. Promote reviewed changes from beta to main for a stable release.

  • Keep each change focused and preserve existing user data and configuration behavior.
  • Maintain English, Simplified Chinese, and Traditional Chinese app strings together.
  • Register new interactive controls in the debug test ID system.
  • Run git diff --check and the relevant compile or package command.
  • Read the matching project skill before changing UI, services, subscriptions, core APIs, or native builds.

📄 License and Credits

↑ Back to Navigation

This project is licensed under GPL-3.0. Third-party projects retain their own licenses.

  • Mishka — direct upstream
  • mihomo — proxy core; integrated through the mihomo submodule
  • miuix — Compose UI components
  • scripta — configuration editor submodule

Official distribution

获取与安装

暂未发现可确认的官方软件包地址

当前 README 快照没有出现 npm、PyPI、Crates.io、pub.dev 等官方包页链接。本站不会根据仓库名称猜测下载地址。

本站不托管项目文件;需要安装时,请以项目维护者发布的官方文档为准。

使用前核验

本站保存公开资料用于阅读,不代表安全审计或功能背书。安装前请核对许可证、依赖来源和发布签名,不要直接运行来源不明的二进制文件或高权限脚本。