FlClash is a graphical client for Android with mihomo underneath, so subscriptions and configs carry over from the desktop side largely unchanged. The install itself is short. Trouble concentrates at the two ends: the wrong APK at the start, and the system reclaiming the app as an ordinary background process at the end.
Pick the right APK first
- Architecture. Anything shipped after 2019 is almost certainly
arm64-v8a, so take that one. Release pages usually also carry a universal build with several architectures bundled together — noticeably larger, but you do not have to choose. If in doubt, take it. - Getting it wrong looks like one of two things: the system refuses to install at all, or it installs and the icon flashes and closes when tapped. The second is routinely misread as the app being broken.
- If you are not sure what your phone is, install anything that shows device information and look at the CPU ABI field. Or skip the research and take universal; it costs a few tens of megabytes.
- Only the project's own release page counts as a source. Third-party APK sites frequently re-sign the packages, and once the signature differs, Android will refuse to install the build from the project itself over it later — you have to uninstall first, taking your config with it.
Check the hash before installing. Release pages generally publish checksums alongside the builds, and comparing them is covered separately. This step is worth more on a phone than on a desktop: you have almost no way to watch where an app on a phone actually sends its data, so one extra check before installation is the cheapest safeguard available.
SponsoredWhere does the subscription link come from?Our partner provider gives you 1 GB of high-speed Hong Kong data at signup — import it in one click.Get high-speed nodesThe unknown-sources permission goes to a different app
Older Android had one global switch labelled something like allow installation from unknown sources. That is no longer how it works. The permission is granted per source app now: whichever app you tapped the package from is the app that needs it. Download in a browser and tap the notification, and it is the browser that must be allowed. Save the file first and open it from a file manager, and it is the file manager. The system normally raises the prompt with a shortcut to the right settings screen when you tap install, so just follow it. You can revoke it afterwards; it will simply ask again next time.
That connection request dialog on first launch
The first time you tap connect, the system shows a dialog with a key icon asking whether to allow a VPN connection. It is worth being precise about what is being requested: this is Android's VpnService interface, and it hands the device's traffic to this app on the phone rather than to some VPN provider. Where the traffic goes after that is decided entirely by the config you imported. There is also a hard limit: only one app may hold that interface at a time, so other VPN-style apps, some on-device ad blockers and packet capture tools have to be stopped first. Otherwise either this one fails to start or it evicts the other.
- Open the app, create an entry on the profiles or subscription page, paste the subscription URL and wait for the fetch to finish. If a computer is nearby, scanning a QR code beats typing a long URL on a phone.
- Go back to the main screen and pick a node in the policy group. If the group is empty right after import, the subscription did not fetch — that is a subscription problem, not a connection problem, so fix it first.
- Flip the connect switch, then approve the system dialog. A small key icon takes up permanent residence in the status bar afterwards; the system draws that one, and it means the VPN interface is in use.
- Verify with a page in the phone's browser. If it fails, go back to the log screen in the app before reaching for uninstall and reinstall.
Once connected, a persistent notification you cannot swipe away sits in the shade. Android requires it for foreground services — without that notification the system is free to treat the process as ordinary background work and reclaim it. If it bothers you, set that notification to silent or lowest priority in the system notification settings so it sinks to the bottom, but do not switch the whole thing off; on some builds that affects whether the service survives.
Keeping the system from killing it
- Battery optimisation. Find the app's battery entry in system settings and set it to unrestricted. Treat this as mandatory: the default adaptive policy cuts background network access once the screen has been off for a while.
- Chinese OEM ROMs add another layer. MIUI, ColorOS, EMUI, Flyme and the rest keep autostart management, background whitelists and power-saving policies in addition to battery optimisation, under different names and in different places. You have to find each one and allow the app individually — the system battery setting alone is not enough.
- Lock it in the recents list. Most ROMs let you long-press the card to lock it so a one-tap clear does not sweep it away.
- The tell-tale symptom: leave the phone locked for half an hour, unlock it, find no connectivity, bring the app to the foreground and everything works again. When you see that, stop suspecting nodes and configs — a background policy took it out.
Switches to think about before flipping them
- Per-app proxy. You can list which apps go through the proxy and which stay direct. Banking and payment apps, and anything that talks to the local network (screen casting, printing, smart home gear), are usually easier to exclude: they are sensitive to where traffic exits and tend to throw obscure errors through a proxy.
- Always-on VPN and block connections without VPN, both in the system VPN settings. The second genuinely stops plaintext leaking during the moment a client drops, at the price that a crashed client leaves you with no network at all — including no network to look up why.
- When the phone shares a hotspot, traffic from the connected devices does not necessarily follow the VPN. It depends on the implementation and the model, so do not assume it does. To get a laptop covered, use the LAN-sharing approach instead of relying on the hotspot to inherit it.