Every distinct app's real applicationId was read from its AndroidManifest.xml and checked against the live Play Store. Deduped against the Google Play Store, the apps that aren't on it are mods, repacks, regional releases, and private or dev builds that were never published there.
Read the actual decompiled code, syntax-highlighted, in full:
Of the 475,562 distinct apps, ~12% are live on the Play Store and the rest are not. Counting different code versions of the same app, the same split by version:
| Frame | Total | Not on Play | On Play |
|---|---|---|---|
| Base apps (applicationId) | 475,562 | 419,997 (88%) | 55,565 (12%) |
| Code versions (distinct builds) | 2,130,133 | 1,247,771 (59%) | 882,362 (41%) |
The off-Play share is higher by app (88%) than by version (59%) because the on-Play apps are the popular ones and are re-shared constantly, averaging ~16 versions each versus ~3 for the off-Play tail.
Versions of the same app (same applicationId, different decompiled content) are collapsed to one entry per app in the headline count. 143,013 apps have more than one version; 332,549 are single-version, with ~1.65M additional versions beyond one build per app.
Legible (clean-named, non-obfuscated) decompiled Java, content-deduplicated:
| Frame | Full corpus | Off Google Play |
|---|---|---|
| Content-deduplicated | ~96.5B | ~54B |
| Genuinely-distinct (semantic dedup) | ~84B | ~47B |
The on-Play apps are the big popular ones (PUBG, WhatsApp, Free Fire), so they carry ~43% of the raw lines from only ~12% of the apps. Removing them drops the line count more than the app count suggests; the ~47B that remains is the exclusive, off-store code. Byte totals are exact from the catalog; lines = bytes ÷ a measured 42.26 bytes/line, and the off-Play split is computed on the full corpus, not sampled.