Clash for Android: importing a subscription, choosing a mode, proxying per app
Clash,Clash教程,Clash配置,Clash使用教程,Clash安卓版本
At a glance
- What is it?
- This repository is a Chinese walkthrough for the Clash for Android client rather than the client source, and it walks through subscription import, node switching, per-app proxying and the two config errors that trip up newcomers. The Android build it points at is version 2.5.12, and the repository itself holds only a README and an images folder.
- Who is it for?
- This repository suits a reader who already has a Clash subscription and wants the import and mode switching explained in Chinese step by step, and it is useful as a reference for the two error messages it documents. It is not a source repository for the client: the only files are the README and an images folder, and the download link points to an archived upstream release page for v2.5.12.
- Can I use it commercially?
- Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
- Is it still maintained?
- Yes. The repository last received commits 71 days ago.
- What is it written in?
- GitHub does not report a main language for this repository.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A documentation mirror, not the client source
The first thing to establish is what this repository is. The top level of the tree contains two entries: README.md and images/. There is no source directory, no build system and no manifest. The primary language is not even recorded.
What it contains is a Chinese tutorial. The title describes it as Clash, Clash tutorial, Clash configuration, Clash usage tutorial, Clash Android version, and VPN proxy. The body opens with a short introduction, then a preparation section, then a numbered tutorial that walks through configuration import, node switching, log capture, per-app proxying and proxy modes, and it closes with a troubleshooting section for two common configuration errors.
The client itself is a separate program. Clash is described as a Go language rule-based cross-platform proxy core, and Clash for Android is the Android client for that core. The download link in the preparation section points not to this repository but to an archived web snapshot of the upstream release page for v2.5.12, hosted under the Kr328 project.
That has two consequences for anyone evaluating this. You cannot build or modify the client from what is here. And the version this guide targets is fixed, because a documentation page cannot ship a new binary.
The supported protocol list is the fastest way to judge whether it fits your subscription
Before the tutorial starts, the introduction lists the protocols the client handles: Vmess, Shadowsocks, Snell, SOCKS5, and ShadowsocksR, with the ShadowsocksR support marked as starting from version 2.1.1.
That list is short and it is the right thing to check first, because a subscription that hands out protocols outside this set will not work no matter how carefully you follow the steps. The client speaks five protocol families, and the guide's own preparation section tells you to obtain a subscription proxy server first, pointing to a separate repository for readers who do not have one.
The feature list that follows is a summary of what the application does once it has a configuration. It says you can switch proxy mode and nodes at any time, that it supports batch latency testing across nodes, that a hosted link gives one-tap configuration, and that it provides rule hit analysis and log output.
Two of those are worth pausing on. Batch latency testing tells you which of your nodes is responsive before you commit traffic to it, which matters when the node list is long. Rule hit analysis shows which rule matched a given request, which is the fastest way to understand why a particular app or domain behaved unexpectedly. Those two features are what separate the client from a bare VPN toggle, and they are also the reason the troubleshooting section in this guide is worth reading to the end.
Two ways to load a config: a subscription URL or a local file
The configuration screen supports exactly two import routes, and the tutorial covers them in order.
The first is by URL, described in the guide as a subscription. You copy the Clash subscription address from your provider, open the app, tap the configuration section, tap new configuration, choose to import from a URL, paste the address and save. You then select that configuration so the client will use it, return to the home screen, and flip the switch. Android will ask whether you agree to create the VPN, and you allow it.
The second route is a local file. In the configuration section, new configuration, then import from file, and you pick the configuration document from local storage. The guide adds a practical warning here: some vendor ROMs report an error during this step, and the fix is to use a different file manager.
That warning is the kind of detail that usually only appears in a community guide, because it is about OEM Android builds rather than about the application. If you are on a heavily modified Android distribution, the file picker the app invokes may be the problem, not the config.
Once traffic is flowing, node switching happens in the middle proxy tab, which opens the policy group panel. The guide points out that the nodes shown under the foreign traffic tab are the nodes from that subscription, and that a direct connection entry exists by default, and selecting it means your phone's requests bypass the proxy servers entirely. The lightning icon runs a latency test and shows the result next to each node name.
Per-app proxying and the access control blacklist
The per-app feature lives under settings, then network, at the bottom of the screen, and it is configured in three steps.
The first is the access control mode, which toggles between a blacklist and a whitelist. The guide does not overexplain the difference and instead tells you to work it out, which is fair, since the two modes invert the meaning of the app list.
The second is the access control app package list, where you select the individual applications by package.
The third step is the one with a consequence worth thinking about: switching a single app onto or off the proxy is what people usually want from this feature, since it lets an app that needs a specific route use it while everything else on the phone stays direct.
Because the selection is by package name, the behaviour depends on how the app identifies itself on your device. On a system with work profiles, cloned apps or multiple installed copies of the same package, the list can contain entries you did not expect. The guide gives no troubleshooting for this, so it is one of the areas where you have to work from the app list yourself.
Log capture is the companion feature. In the logs panel you pick the Clash log capture tool to start recording. The documentation notes that logging is off by default, and the stated reason is to avoid memory exhaustion. That is a sensible default on a phone, but it means that if you want to diagnose a rule problem, you have to turn logging on before you reproduce it.
Four proxy modes, and the difference between them is what traffic goes where
The guide explains the proxy modes in a compact list, and it is the clearest part of the document.
Global sends all requests directly to the proxy server. Rule splits traffic according to the rules in the configuration file. Direct sends all requests straight to their destination. PAC mode decides per request whether to proxy, based on a PAC file.
The guide's own advice is that the default mode is generally fine, and Rule is the sensible starting point. That is the sensible starting point because Rule is the only mode where the configuration file's rule set actually matters, and the other three ignore it.
Two of these are not equivalent in a way that catches people out. Global does not mean all traffic goes through one server in the sense of a single node, it means all traffic is handled by the proxy and the proxy decides, whereas Rule means unmatched traffic typically goes direct depending on the ruleset. And PAC mode requires a PAC file that this guide never explains how to obtain or configure, so it is listed but not documented.
If you are switching modes to fix a specific problem, remember that switching to Global is a diagnostic move rather than a fix, since it removes the ruleset from the picture. The rule hit analysis feature exists precisely to let you stay in Rule mode and see which rule handled a request.
Two error messages that almost always mean a subscription problem, not a client problem
The troubleshooting section is short and useful, because it names the two errors that people actually hit and identifies their cause.
The first is a YAML unmarshal failure, reported as `Invalid Config:yaml:unmarshal errors: line 1:cannot unmarshal !!str c3M6Ly9...`.
The c3M6Ly9 prefix in the message is base64, which is the giveaway. The explanation given is that the wrong subscription link was used, so you should check whether you copied it wrongly or picked up extra spaces. The guide also mentions a conversion service for people who do not have a Clash-format subscription link, though that is a third-party service and worth treating with care since it handles your subscription URL.
The second error is an empty proxy value, reported as `Invalid Config:Value for 'Proxy' is invalid:Unexpected null or empty`.
This one is not a formatting problem. It means the subscription is empty, in practice because no plan has been purchased or the subscription has no nodes, and the advice is to contact the provider of the service.
Both errors are worth memorising because they arrive as a config parse failure, and the instinct is to blame the application. In both cases the client is reporting what the subscription told it to.
Where this repository is the wrong place to look
The obvious limitation is that this is not the project you build from. If you want to change how the client behaves, to add a protocol, or to fix a bug in the core, none of that is possible here. The upstream Clash core is the Go program, and the Android client is a separate codebase.
The second limitation is version staleness. The download link points to a web archive snapshot from November 2023 of the upstream release page for v2.5.12. The last push to this repository was on 2026-08-13, which is recent, but that push updated documentation, not the client. Whether v2.5.12 remains the newest available build is something the guide cannot tell you, and you have to check the upstream release page yourself.
The third limitation is coverage. There is no section on Android version compatibility beyond the requirement of Android 5.0 or higher, nothing about battery behaviour, nothing about how the VPN service interacts with Android's per-app VPN feature, and no explanation of where the configuration file lives on disk or how to edit it by hand. The per-app section tells you where the toggle is but not how the underlying routing works.
The licence is also not stated. There is no LICENSE file in the tree and no licence field next to the project files, so if you plan to redistribute or build on this documentation, you need to resolve that separately from the upstream client, whose terms are its own.
What the repository does give you is a clear Chinese-language path from nothing to a working configuration on an Android phone, with the error explanations that save the most time. For that specific purpose it is complete enough to be useful.
Editorial conclusion
This repository suits a reader who already has a Clash subscription and wants the import and mode switching explained in Chinese step by step, and it is useful as a reference for the two error messages it documents. It is not a source repository for the client: the only files are the README and an images folder, and the download link points to an archived upstream release page for v2.5.12. Before relying on it, open the linked release page and confirm that the version it serves still installs on your Android 5.0 or newer device, and check whether the upstream project has a newer build, because this repository does not ship one.
Frequently asked questions
How do I import a Clash subscription on Android using this guide?
Copy the Clash subscription address from your provider, then in the app open the configuration section, tap new configuration, choose import from a URL, paste the address and save. Select the new configuration, return to the home screen, flip the switch and allow the VPN permission prompt.
What does the Invalid Config yaml unmarshal error mean?
It means the wrong subscription link was used, usually a copy that is wrong or has extra spaces. The c3M6Ly9 fragment in the message is base64, which points at a subscription in the wrong format rather than a fault in the client.
What does Value for 'Proxy' is invalid: Unexpected null or empty mean?
The subscription is empty, which in practice means no subscription plan has been purchased or the subscription contains no nodes. The guide advises contacting the administrator of the service you subscribed to.
Which proxy protocols does Clash for Android support?
The introduction lists Vmess, Shadowsocks, Snell, SOCKS5 and ShadowsocksR, with ShadowsocksR support stated as starting from version 2.1.1. A subscription offering other protocols will not work with this client.
How do I set up per-app proxying in Clash for Android?
Go to settings, then network, and find the per-app proxy option at the bottom of the screen. There you switch the access control mode between blacklist and whitelist, then open the access control app package list and choose the applications by package.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/githubvpn007-clash-for-android)Was this useful?