On the download page you will see the same app listed several times:
xxx-arm64-v8a.apkxxx-armeabi-v7a.apkxxx-universal.apk
They are functionally identical. The only difference is which CPU they were compiled for. Pick wrong and the app either will not install or runs with a penalty.
What the three are
arm64-v8a: the mainstream. Phones and tablets released after 2015 are essentially all this.
armeabi-v7a: a relic of the 32-bit era. Only very old or a few low-end devices still use it.
universal: both sets of code in one package, roughly 1.8× the size of a single-architecture build, but it runs anywhere.
Finding out what your phone is
Method 1: system settings (fastest, not always available)
Settings → About phone → Processor / Chip
If you see "64-bit" anywhere, it is arm64-v8a.
Plenty of manufacturer skins hide this, in which case use one of the methods below.
Method 2: a device info app
Install something like CPU-Z or Device Info and look for Instruction sets / ABI under the SOC or System tab:
- Lists
arm64-v8a→ take arm64-v8a - Lists only
armeabi-v7a→ take armeabi-v7a
Method 3: judge from the chip model (no installs)
Method 4: just take the universal build
Do not want to check? Download universal.apk. It costs you a few dozen MB of storage and behaves identically.
What happens if you pick wrong
So the practical advice is: try arm64-v8a first, fall back to universal if it will not install, and only use armeabi-v7a if you have confirmed you have an old device.
What we host for each app
| Software | arm64-v8a | armeabi-v7a | universal |
|---|---|---|---|
| FlClash | ✅ | ✅ | — |
| Clash Meta for Android | ✅ | ✅ | ✅ |
| v2rayNG | ✅ | — | — |
| NekoBox | ✅ | — | — |
v2rayNG and NekoBox are arm64-v8a only here, because the number of people still running 32-bit Android is now very small.
Problems when installing an APK
"Install blocked — unknown sources"
Since Android 8.0 this permission is granted per source app:
"There was a problem parsing the package"
Three possibilities:
- Architecture mismatch — a 32-bit phone with an arm64 build; use armeabi-v7a or universal
- Incomplete download — download again, and avoid tools that resume partial transfers
- Android version too low — the app requires a newer Android than you have
"App not installed"
Usually a signature conflict: you previously installed an app with the same package name from a different source, and the signatures do not match.
Fix: uninstall the old version first. Note that uninstalling clears the configuration, so save your subscription URL beforehand.
It installs but crashes on launch
Confirm the architecture first. If you are on the universal build and it still crashes, it may be your Android version or WebView — try updating the system "Android System WebView" component.
One thing worth saying: do not download APKs from random search results
Android APKs can be repackaged. Someone can add code to the original, re-sign it with their own key, and the result looks identical.
Proxy apps are particularly sensitive, since they see all of your network traffic. So:
If you want to verify a file yourself, see how to check what you downloaded.
In short
Architecture is a forgiving decision — the worst case is that it will not install and you try another. Where you download from is the part that deserves care.
Related: choosing between the four Android clients and verifying downloads.