CamAPS FX (mmol/L): compare 192 vs 194
Investigation date: 05/10/2026
Compare 192 vs 194:
| Build | Source | versionCode |
|---|---|---|
| 192 | 1.4(192).101 (Google Play extract, June 2026) |
524 |
| 194 | 1.4(194).101 (Google Play, OnePlus 11, extracted 05/10/2026) |
551 |
Method: wireless ADB extract (4 split APKs), APKEditor merge + decompile, manifest diff, strings/arrays diff, smali package scan.
Device: OnePlus 11 (CPH2449), Android 16. Package: com.camdiab.fx_alert.mmoll.
Executive summary
| Question | Answer |
|---|---|
| Is 194 a new user-facing feature release? | No major new therapy features. G7, Libre 3 / Libre 3 Plus strings, and CamAPS Liberty were already in 192. |
| What did change for users? | One clear UI text change: when switching away from Dexcom G7, the logout warning now tells you to note weight and total daily insulin dose before logging out (English + Norwegian). |
| Platform / OS focus? | Yes. targetSdk / compileSdk raised 35 → 36 (Android 16). minSdk stays 33 (Android 13+). |
| Security / licensing stack? | Yes, notable. Google PairIP Play license check is fully removed in 194 (com.pairip.*, LicenseActivity, CHECK_LICENSE permission). 192 had ~30 PairIP smali files; 194 has zero. |
| New Companion / xDrip+ / Nightscout export? | No. Same sharing model as 192. |
| In-app language switch (without changing phone language)? | No evidence in 192 or 194. UI language follows the device / Play language split. No CamAPS language picker strings; no localeConfig. |
| Official public changelog 192→194? | No detailed line-by-line changelog found on CamDiab notifications at investigation time. |
| Safe to treat as identical to 192? | Almost for features, but not identical: Android 16 targeting, PairIP removal, DEX repack (4→3), native lib rename, Crashlytics build id. |
At a glance
| Feature / area | 192 | 194 |
|---|---|---|
| Dexcom G7 CGM | Yes | Yes (same library string 1.0.0) |
| CamAPS Liberty (FCL) | Yes (code + strings) | Yes (unchanged string set) |
| Libre 3 / Libre 3 Plus strings | Yes | Yes |
| Hybrid closed-loop (Auto mode) | Yes | Yes |
| G7 switch / logout help text | Logout-only reminder | + note weight and TDD before logout |
| PairIP Play license check | Present | Removed |
| In-app language picker | No | No (same) |
| targetSdk | 35 | 36 |
Version and platform table
| Item | 192 (previous phone extract) | 194 (this extract) |
|---|---|---|
| versionName | 1.4(192).101 | 1.4(194).101 |
| versionCode | 524 | 551 |
| minSdk | 33 (Android 13+) | 33 (Android 13+) |
| targetSdk | 35 | 36 |
| compileSdk / platformBuild | 35 / "15" | 36 / "16" |
| CPU in bundle | arm64-v8a | arm64-v8a |
| Locale split | Norwegian (nb) |
Norwegian (nb) |
| Density split | xxhdpi | xxhdpi |
| DEX folders (decompile) | 4 (classes…classes4) |
3 (classes…classes3) |
| Smali files (approx) | 24,992 | 24,990 |
| Merged APK size | ~51.6 MB | ~52.0 MB |
| Source trust | Google Play extract | Google Play extract |
SHA256 (merged):
| Build | SHA256 |
|---|---|
| 192 | DF619B7B05055881C442D4A2D6DE5C15E5D08837B049FDD71764B1ABD69C735D |
| 194 | 7FF42CECCDA774B235C384196F7EE7213E0FE1F03451B81A31DB233DC7176A96 |
User-visible change in 194
1. Dexcom G7 sensor-switch logout warning (only EN/NB string content change)
English defaults: 0 added, 0 removed, 2 changed (one is Crashlytics build id; one is this help text).
Norwegian (nb): 0 added, 0 removed, 1 changed (same help text).
| Locale | Change |
|---|---|
| English | Adds: Please note your weight and total daily insulin dose before logging out. |
| Norwegian | Adds: Noter vekten din og den totale daglige insulindosen din før du logger ut. |
Full English (194):
To switch from Dexcom G7 to a different sensor type, you first need to log out of CamAPS FX.
Please note your weight and total daily insulin dose before logging out.
Go to Menu → Account, then tap Log out. After logging out, you can sign in again and choose a different sensor type.
Why it matters: logging out of CamAPS to change CGM type can wipe or force re-entry of therapy parameters. 194 makes that risk explicit.
No other FAQ / Liberty / G7 / Libre user strings changed between these two builds.
Security and packaging changes (not new therapy features)
2. PairIP Play license stack removed (major packaging change)
| Component | 192 | 194 |
|---|---|---|
Package com.pairip / com.pairip.licensecheck |
~30 smali files | Absent |
com.pairip.application.Application (manifest) |
Present | Removed |
com.pairip.licensecheck.LicenseActivity |
Present | Removed |
Permission com.android.vending.CHECK_LICENSE |
Present | Removed |
194 uses the normal obfuscated application class name only (e.setBackgroundResource in this decompile; rebuild artifact name).
Interpretation: Google Play PairIP license enforcement / wrapper present in 192 is gone in 194. Licensing may still use other Play Integrity / backend checks; only the PairIP client stack disappeared from the APK.
3. Android 16 targeting
| Change | Detail |
|---|---|
| targetSdk 35 → 36 | Built for Android 16 behavior |
| compileSdk 35 → 36 | Matches Android 16 SDK |
| minSdk unchanged | Still requires Android 13+ |
This matches CamDiab/Ypsomed messaging that recent updates focus on OS compatibility and maintenance.
4. Native libraries renamed (anti-tamper / rebuild)
Stable libs in both: libjnidispatch.so, libnative-lib.so, libsodium.so, libsqlcipher.so.
Obfuscated / hashed .so names changed (typical rebuild / protection churn), for example:
| 192 | 194 |
|---|---|
libb236.so, libd9c625.so, libed34ff.so |
liba4a8.so, libdb6e0.so, libe739c0.so |
Not a user-facing feature; treat as packaging churn.
5. DEX layout and Crashlytics id
| Item | 192 | 194 |
|---|---|---|
| DEX count | 4 | 3 |
com.crashlytics.android.build_id |
54882ff6… |
0e22634a… |
Code volume is essentially flat (smali ~24,992 → ~24,990). Feature packages stay the same size:
| Package area | 192 | 194 |
|---|---|---|
com.camdiab.fx_alert.fxfcl (Liberty) |
2 | 2 |
com.camdiab.dexcomg7 |
51 | 51 |
com.dexcom.coresdk* |
~1,105 | ~1,103 |
androidx.health* |
878 | 878 |
Obfuscation stubs also renamed in places (a.* → e.*). That is a rebuild artifact, not a product feature.
Language and locale (192 and 194)
Can you change CamAPS language inside the app without changing the phone language? APK evidence says no for both builds.
| Check | 192 | 194 |
|---|---|---|
| In-app "Language" / "App language" settings text | Not found | Not found |
Manifest localeConfig / locales_config.xml |
Missing | Missing |
AppCompat autoStoreLocales opt-in |
Not declared | Not declared |
| Language resources on this Play install | Default English + values-nb (Norwegian) |
Same |
| Other language packs in merged APK | Not present (Play language splits) | Same |
LocaleManager / AppCompat locale APIs in smali |
Library plumbing only | Same (not a CamAPS menu) |
| Related setting that does exist | Country of residence | Same (not UI language) |
How language works today
- Phone / system locale drives the UI.
- Google Play installs matching language splits (this extract included
split_config.nb.apk). - Other languages are not sitting unused in the merged APK; they are delivered when the device language (or installed split) matches.
Android 13+ system per-app language
On Android 13 and later (including this OnePlus on Android 16), Settings → Apps → CamAPS FX → Language can set a language for one app only.
For that to work reliably, apps usually declare supported locales with localeConfig (or AppCompat locale storage). Neither 192 nor 194 declare that, so:
- Do not expect a CamAPS-controlled in-app language menu.
- System per-app language might still work partly if Play has installed that language split, but it is not guaranteed from this APK.
- Best DIY test without flipping the whole phone: try the system App language screen for CamAPS FX.
Counts on this extract (194): about 1,803 default English strings and about 1,405 Norwegian (nb) overrides.
Unchanged core product (both 192 and 194)
| Feature area | Status |
|---|---|
| Hybrid closed-loop (Auto mode) | Same |
| CamAPS Liberty (optional FCL) | Same strings + fxfcl code |
| Dexcom G6 / G7 | Same (G7 library still reports 1.0.0) |
| FreeStyle Libre 3 (+ Plus string) | Same |
| YpsoPump / Dana connectivity | Same family |
| SMS followers / Companion E2E | Same model (no new open export) |
| Health Connect manifest hooks | Same (healthdata package query + rationale action); still not a new user feature vs 192 |
| UI language selection model | Same: follows device / Play language split; no in-app picker |
| Core permissions (Bluetooth, NFC, SMS, notification policy, etc.) | Same set aside from PairIP CHECK_LICENSE removal |
Features NOT found as new in 194 vs 192
| Checked | Result |
|---|---|
| New CGM type beyond G6/G7/Libre 3 family | Not found |
| New pump type | Not found |
| New Nightscout / xDrip+ export API | Not found |
| New Wear OS CamAPS app | Not found (Dexcom watch plumbing already in 192) |
In-app language switcher / localeConfig |
Not found (same gap in 192 and 194) |
| New Liberty modes / strings | Not found |
| New user-facing error-code families | Not evidenced in strings diff (no added/removed support-code strings) |
Recommendation table
| Goal | Use |
|---|---|
| Run on OnePlus 11 / Android 16 | 194 (current Play build; targetSdk 36) |
| Keep older analyzed baseline with PairIP present | 192 backup (research only) |
| Therapy features (G7, Liberty, Libre 3) | Either; feature parity for these areas |
| Switching CGM away from G7 | Read the new weight/TDD reminder in 194 before logout |
| Change CamAPS UI language only | Try Android App language for CamAPS FX; no in-app picker found in APK |
| Keep Play-signed backup | 4 split APKs under camaps-fx-mmoll-20261005-230724/ |
Investigation artifacts
| Item | Path |
|---|---|
| Phone extract (splits + merged) | backups/camaps-fx/camaps-fx-mmoll-20261005-230724/ |
| Previous 192 extract | backups/camaps-fx/camaps-fx-mmoll-20260617-193612/ |
| Diff dumps (TSV/TXT) | backups/camaps-fx/to-do/diff-192-vs-194/ |
| Decompile trees (local Temp) | %TEMP%\camaps-deep\192-merged and 194-merged |
| English HTML | APK-COMPARISON-192-vs-194-REPORT.html |
| Norwegian HTML | APK-COMPARISON-192-vs-194-REPORT.nb.html |
| Prior report (189 vs 192) | APK-COMPARISON-189-vs-192-REPORT.html |
Bottom line
194 is primarily an Android 16 / packaging / licensing maintenance release, not a second “G7 + Liberty” style feature drop.
The only clear end-user copy change is the G7 logout warning reminding you to record weight and total daily insulin dose. The largest technical removal is the entire PairIP license-check client stack.
Language remains device/Play-split driven in both builds: no extractable in-app language switcher, and no declared localeConfig for reliable Android per-app language UI.