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

- Android 5.0+ (minimum)
- Android 7.0+ (recommend)
- armeabi-v7a , arm64-v8a, x86 or x86_64 Architecture
-
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
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.
- 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.