A Graphical user interface of Clash.Meta for Android
Feature
Feature of Clash.Meta

Requirement
- Android 5.0+ (minimum)
- Android 7.0+ (recommend)
armeabi-v7a , arm64-v8a, x86 or x86_64 Architecture
Build
Update submodules
git submodule update --init --recursive
Install OpenJDK 11, Android SDK, CMake and Golang
Create local.properties in project root with
sdk.dir=/path/to/android-sdk
(Optional) Custom app package name. Add the following configuration to local.properties.
# config your ownn applicationId, or it will be 'com.github.metacubex.clash'
custom.application.id=com.my.compile.clash
# remove application id suffix, or the applicaion id will be 'com.github.metacubex.clash.alpha'
remove.suffix=true
Create signing.properties in project root with
keystore.path=/path/to/keystore/file
keystore.password=<key store password>
key.alias=<key alias>
key.password=<key password>
Build
./gradlew app:assembleAlphaRelease
Automation
APP package name is com.github.metacubex.clash.meta
- Toggle Clash.Meta service status
- Send intent to activity
com.github.kr328.clash.ExternalControlActivity with action com.github.metacubex.clash.meta.action.TOGGLE_CLASH
- Start Clash.Meta service
- Send intent to activity
com.github.kr328.clash.ExternalControlActivity with action com.github.metacubex.clash.meta.action.START_CLASH
- Stop Clash.Meta service
- Send intent to activity
com.github.kr328.clash.ExternalControlActivity with action com.github.metacubex.clash.meta.action.STOP_CLASH
- Import a profile
- URL Scheme
clash://install-config?url=<encoded URI> or clashmeta://install-config?url=<encoded URI>
Contribution and Project Maintenance
- CMFA uses the kernel from
android-real branch under MetaCubeX/Clash.Meta, which is a merge of the main Alpha branch and android-open.
- If you want to contribute to the kernel, make PRs to
Alpha branch of the Meta kernel repository.
- If you want to contribute Android-specific patches to the kernel, make PRs to
android-open branch of the Meta kernel repository.
Maintenance
- When
MetaCubeX/Clash.Meta kernel is updated to a new version, the Update Dependencies actions in this repo will be triggered automatically.
- It will pull the new version of the meta kernel, update all the golang dependencies, and create a PR without manual intervention.
- If there is any compile error in PR, you need to fix it before merging. Alternatively, you may merge the PR directly.
- Manually triggering
Build Pre-Release actions will compile and publish a PreRelease version.
- Manually triggering
Build Release actions will compile, tag and publish a Release version.
- You must fill the blank
Release Tag with the tag you want to release in the format of v1.2.3.
versionName and versionCode in build.gradle.kts will be automatically bumped to the tag you filled above.