On this page
Whether the APK installs depends on its source, Android version, and architecture
Many similarly named Clash clients exist on Android, and search results may show old projects, repackaged editions, and actively maintained projects together. Obtain the APK from the project repository's Release or an explicitly linked download page, then read which Android versions the release supports.
If assets distinguish arm64-v8a, armeabi-v7a, x86_64, and universal, most recent physical phones use arm64-v8a, while an emulator may use x86_64. If you cannot determine the architecture, use the project's universal package; it is simply larger.
If “there was a problem parsing the package” appears, do not disable all system protections. First verify the architecture, download completeness, and system version.
Labels shown before installation
| Label | Meaning |
|---|---|
| arm64-v8a | Most recent 64-bit ARM phones and tablets |
| armeabi-v7a | Older 32-bit ARM devices |
| x86_64 | Some emulators or a small number of x86 devices |
| universal | Contains several architectures and is suitable when you cannot determine which one |
Grant “Install unknown apps” only to the current file source
When you open an APK in a browser or file manager, Android asks to allow that app to install software from unknown sources. Open the corresponding system setting and temporarily authorize only the current browser or file manager; disable the permission after installation.
If the system reports a signature mismatch, another source's app with the same package name is probably installed. Back up local configuration and identify the old app before deciding to uninstall it; do not overwrite a package with a completely different signature. If Play Protect or a vendor security warning appears, recheck the Release and file instead of permanently disabling protection.
Update the subscription into a configuration, then make the configuration active
Subscription workflow on Android
Add a remote subscription
Paste the Clash- or Mihomo-compatible HTTPS address supplied by the provider.
Update immediately
Observe the status code, parsing errors, and update time.
Enable this configuration
Ensure that the current Profile is not a sample file or old subscription.
Expand the primary policy group
Pin one node and use Rule mode first.
Some apps can import from the clipboard, a QR code, or URL Scheme. Regardless of entry point, the result must show a new update time, policy groups, and nodes. If the list contains only a subscription name and no nodes, downloading or parsing is incomplete.
If the update button spins indefinitely, do not keep adding duplicate entries. Switch once between Wi-Fi and mobile data, then inspect whether the log says timeout, TLS, 401/403, or parse error. A lack of response points to the network; an existing status code points to the account or format.
The subscription link contains a token. After sending it to the phone through a chat app, promptly delete any public message containing the complete URL. If it was posted in a group, reset the address in the service panel.
After selecting the configuration, Android confirms the system VPN connection
Return to the client and start the service. Android shows a “connection request” or similar VPN confirmation, then a key or VPN icon appears in the status bar. This system prompt means only that the app may create a VPN entry; it does not prove the selected node works.
A phone can normally have only one active VPN at a time. If another VPN, ad blocker, or firewall also occupies the system VPN, the new client may fail to start or replace the existing connection. Stop the other VPN-based app before testing.
Signs that the system entry point is ready
- The VPN confirmation comes from the currently installed client
- A system VPN icon appears in the status bar
- The notification shade shows the client's foreground service
- Other VPN-based apps have stopped
Complete the first real access test while the app remains in the foreground
Keep the client in the foreground, start the system VPN, and visit a familiar site in the browser. Return to the client's connections or log screen and find the target domain, matched rule, and node. A green latency number alone does not prove that the browser request used the configuration.
The VPN icon appears, but connection records are empty
Check whether per-app proxying excludes the browser and whether another VPN has taken over.
The connection shows DIRECT
The current rule selected direct access; determine whether that matches the intended configuration.
The connection uses a node and then shows timeout
Pin another node and compare Wi-Fi with mobile data.
The subscription screen shows parse error
Address response format or core compatibility; VPN permission cannot fix it.
If it disconnects after several minutes with the screen locked, address battery and background restrictions
If it works in the foreground but stops after the screen has been locked for a while, the system probably terminated the background process. Under Android “App info > Battery” or the vendor's equivalent, allow background operation or exempt the client from battery optimization. Also allow persistent notifications, because the foreground service relies on one to remain running.
Labels differ on Xiaomi, Huawei, OPPO, vivo, Samsung, and other systems. They may say autostart, background activity, sleeping apps, or unrestricted battery. Change only settings for the current proxy client; do not disable power saving across the whole phone. Afterward, lock the screen for five to ten minutes and retest with the same site.
- Notifications are blocked
- The foreground service may not remain stable; allow proxy-status notifications.
- Battery mode is restricted
- The system may terminate the process in the background; set it to allowed or unrestricted and retest.
- A cleanup tool terminates the app automatically
- Add the current client to its protected list so it is not cleared whenever the screen locks.
- It does not reconnect automatically after restarting the phone
- Check whether the client offers connect-at-startup and whether the system permits autostart.
When per-app proxying is enabled, make sure the list direction is not reversed
Android clients commonly offer two directions: “Proxy selected apps only” or “Bypass selected apps.” If the direction and list are reversed, browsers, games, or messaging apps never enter connection records and make the node look dead.
Disable per-app routing first for a global comparison, then reenable it and add only one or two target apps. Proxied apps should appear in connection records, while excluded apps should connect directly. This before-and-after result is more reliable than staring at checkmarks.
How to interpret per-app results
| Setting | Expected result |
|---|---|
| Proxy selected apps only | Only apps in the list enter Clash |
| Bypass selected apps | Apps in the list connect directly; all other apps enter Clash |
| Feature disabled | Scope is determined by system VPN capture and rules together |
Lock-screen and network-switch tests are two real checks of background operation
Keep a fixed node, unlock after several minutes with the screen locked, visit the same page, and inspect the new connection record. Then switch between Wi-Fi and mobile data and repeat. If the VPN icon remains, the foreground notification stays visible, and both requests match the expected outbound route, the client continues working under normal phone conditions.
If it stops only after switching networks, reconnect in the client so the VPN interface uses the current network. If every screen lock closes it, return to battery and autostart settings. If the service remains active but requests show timeout, address the node and DNS. These three outcomes have separate entry points and do not require reinstalling the APK.
