Find a file
xixiha5230 d7328953ba
Use CMake string(TIMESTAMP) for portable compile timestamp
The previous usage of the date command is not portable across different platforms. date is not guaranteed to be available and the format varies.

Replace it with CMake's built-in string(TIMESTAMP) command which generates a string with the given timestamp format independent of the platform. This commit changes it to use "%y%m%d" format for a YYMMDD timestamp commonly used for compilation.
2024-02-24 17:57:12 +08:00
.github update dependency (#180) 2024-02-14 18:56:48 +08:00
.idea/codeStyles feat: show subscription 2022-12-10 10:17:58 +08:00
app Update Dependencies (#1) 2024-01-18 09:54:32 +00:00
common feat: add intent filters for tasker automation (#119) 2023-11-01 12:00:37 +08:00
core Use CMake string(TIMESTAMP) for portable compile timestamp 2024-02-24 17:57:12 +08:00
design feat: add some override options about sniffing 2023-11-02 18:57:55 +08:00
fastlane/metadata/android fastlane: fix a typo 2022-07-06 19:39:07 +08:00
gradle/wrapper update dependency (#180) 2024-02-14 18:56:48 +08:00
hideapi Refactor: refactor project structure & update clash core (#1174) 2021-09-11 14:53:09 +08:00
service feat: show toast after profile updated 2023-10-31 23:04:26 +08:00
.gitattributes Chore: add .gitattributes (#1191) 2021-09-13 18:34:34 +08:00
.gitignore Squashed commit of the following: 2023-10-29 21:38:36 +08:00
.gitmodules 更换核心地址 2024-01-17 05:59:44 +00:00
build.gradle.kts Bump version to 2.10.1 (210001) 2024-02-08 07:47:39 +00:00
CONTRIBUTING.md Chore: update CONTRIBUTING.md 2021-05-15 02:01:38 +08:00
gradle.properties Chore: remove unused dependencies & improve gradle properties & code style (#1189) 2021-09-13 17:49:23 +08:00
gradlew update dependency (#180) 2024-02-14 18:56:48 +08:00
gradlew.bat update dependency (#180) 2024-02-14 18:56:48 +08:00
LICENSE Initial: initial commit 2021-05-15 00:51:08 +08:00
NOTICE Initial: initial commit 2021-05-15 00:51:08 +08:00
PRIVACY_POLICY.md Initial: initial commit 2021-05-15 00:51:08 +08:00
README.md action: better release action 2023-11-03 01:53:59 +08:00
release.keystore Add files via upload 2022-06-18 07:22:07 +07:00
renovate.json Update dependency (#174) 2024-01-18 09:54:42 +00:00
settings.gradle.kts Update dependency (#174) 2024-01-18 09:54:42 +00:00

Clash Meta for Android

A Graphical user interface of Clash.Meta for Android

Feature

Feature of Clash.Meta

Get it on F-Droid

Requirement

  • Android 5.0+ (minimum)
  • Android 7.0+ (recommend)
  • armeabi-v7a , arm64-v8a, x86 or x86_64 Architecture

Build

  1. Update submodules

    git submodule update --init --recursive
    
  2. Install OpenJDK 11, Android SDK, CMake and Golang

  3. Create local.properties in project root with

    sdk.dir=/path/to/android-sdk
    
  4. 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>
    
  5. Build

    ./gradlew app:assembleMeta-AlphaRelease
    

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 Maintainance

Meta Kernel

  • 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.

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 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.