## Clash Meta for Android A Graphical user interface of [Clash.Meta](https://github.com/MetaCubeX/Clash.Meta) for Android ### Feature Feature of [Clash.Meta](https://github.com/MetaCubeX/Clash.Meta) [Get it on F-Droid](https://f-droid.org/packages/com.github.metacubex.clash.meta/) ### Requirement - Android 5.0+ (minimum) - Android 7.0+ (recommend) - `armeabi-v7a` , `arm64-v8a`, `x86` or `x86_64` Architecture ### Build 1. Update submodules ```bash git submodule update --init --recursive ``` 2. Install **OpenJDK 11**, **Android SDK**, **CMake** and **Golang** 3. Create `local.properties` in project root with ```properties sdk.dir=/path/to/android-sdk ``` 4. Create `signing.properties` in project root with ```properties keystore.path=/path/to/keystore/file keystore.password= key.alias= key.password= ``` 5. Build ```bash ./gradlew app:assembleMeta-AlphaRelease ``` ### Automation APP package name is `com.github.metacubex.clash.meta` - Toggle Clash.Meta service status - Send intent to `com.github.kr328.clash.ExternalControlActivity` with action `com.github.metacubex.clash.meta.action.TOGGLE_CLASH` - Start Clash.Meta service - Send intent to `com.github.kr328.clash.ExternalControlActivity` with action `com.github.metacubex.clash.meta.action.START_CLASH` - Stop Clash.Meta service - Send intent to `com.github.kr328.clash.ExternalControlActivity` with action `com.github.metacubex.clash.meta.action.STOP_CLASH` - Import a profile - URL Scheme `clash://install-config?url=` or `clashmeta://install-config?url=` ### Kernel Contribution - 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. ### Project Maintainance - 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 automatically compile and publish a `PreRelease` version. - Manually triggering `Build Release` actions will automatically compile, tag and publish a `Release` version. - There is an option `Auto bump project version` in trigger widget. If this option is checked and triggered, the `versionName` and `versionCode` in `build.gradle.kts` will be bumped first, then do the common build release process. - This option is intended for quickly update and release a new version online, without pulling the repository locally and work around by manual.