CamAPS FX (mmol/L): compare 189 vs 192 vs 193 vs 194
Investigation date: 20/10/2026
Compare 189, 192, 193, and 194 (Android mmol/L line), plus a short link to the connection deep-dive report.
| Build | Source | Package | versionCode |
|---|---|---|---|
| 189 | APKPure XAPK 1.4(189).101 (backup extract) |
com.camdiab.fx_alert.mmoll |
423 |
| 192 | Google Play extract (OnePlus 11, June 2026) | com.camdiab.fx_alert.mmoll |
524 |
| 193 | APKPure XAPK 1.4(193).201 (this investigation) |
com.camdiab.fx_alert.mmoll.ca |
543 |
| 194 | Google Play extract (OnePlus 11, 05/10/2026) | com.camdiab.fx_alert.mmoll |
551 |
Method: XAPK unzip, APKEditor merge + decompile, aapt badging/permissions, manifest diff, smali package counts, connection-related string value scan.
Device context for Play extracts: OnePlus 11 (CPH2449), Android 16. Lab decompile: D:\Users\USER\Temp\camaps-compare\.
Important package note (evidence): build 193 from APKPure is the Canadian package id com.camdiab.fx_alert.mmoll.ca, not the EU/NO Play package com.camdiab.fx_alert.mmoll used for 189/192/194. Treat 193 as a same product family sibling, not a drop-in Play update of the EU binary.
Executive summary
| Question | Answer |
|---|---|
| Biggest user feature jump? | 189 → 192: Dexcom G7 + CamAPS Liberty (FCL). |
| Is 193 a big therapy feature drop vs 192? | No. Same G7 / Liberty / Libre 3 / pump code footprint; packaging and store-id differences. |
| Is 194 a big therapy feature drop vs 192/193? | No. Mainly Android 16 targeting + PairIP license stack removed + one G7 logout reminder (already present in this 193 CA build). |
| Connection protocol rewrite 192→194? | No strong APK evidence of a new BLE stack. Same bluetooth_le required, same FGS connectedDevice, same G7CoreService, same pump/sensor help strings. See connection report. |
| Safe to treat 193 as EU 194? | No. Different package id (.ca), still has PairIP/CHECK_LICENSE, this XAPK only shipped en-CA language split. |
At a glance
| Area | 189 | 192 | 193 (CA) | 194 (EU) |
|---|---|---|---|---|
| Dexcom G7 | No | Yes | Yes | Yes |
CamAPS Liberty (fxfcl) |
No | Yes | Yes | Yes |
| Libre 3 / Plus strings | Yes | Yes | Yes | Yes |
PairIP / CHECK_LICENSE |
Present | Present | Present | Removed |
| minSdk | 31 | 33 | 33 | 33 |
| targetSdk | 35 | 35 | 36 | 36 |
| ABI in this artifact | armeabi-v7a | arm64-v8a | arm64-v8a | arm64-v8a |
| Locale split in artifact | en-* | nb | en-CA | nb |
| G7 logout weight/TDD reminder | No | No | Yes | Yes |
Version and platform table
| Item | 189 | 192 | 193 (CA) | 194 (EU) |
|---|---|---|---|---|
| versionName | 1.4(189).101 | 1.4(192).101 | 1.4(193).201 | 1.4(194).101 |
| versionCode | 423 | 524 | 543 | 551 |
| minSdk | 31 | 33 | 33 | 33 |
| targetSdk | 35 | 35 | 36 | 36 |
| compileSdk / platform | 35 / 15 | 35 / 15 | 36 / 16 | 36 / 16 |
| Package | …mmoll |
…mmoll |
…mmoll.ca |
…mmoll |
| DEX folders (decompile) | 3 | 4 | 3 | 3 |
| Smali files (approx) | 16,094 | 24,992 | 25,011 | 24,990 |
| Merged APK size | ~26 MB (XAPK base era) | ~51.6 MB | ~52.4 MB | ~52.0 MB |
| Source trust | Third-party XAPK | Google Play | Third-party XAPK | Google Play |
SHA256 (merged, this lab):
| Build | SHA256 |
|---|---|
| 189 | (re-merged 20/10/2026 under Temp\camaps-compare\189\) |
| 192 | DF619B7B05055881C442D4A2D6DE5C15E5D08837B049FDD71764B1ABD69C735D |
| 193 | 7BF0ADDB471791D7F60968D8F7B66E62789554FAC1F3DC281271028F80EF1589 |
| 194 | 7FF42CECCDA774B235C384196F7EE7213E0FE1F03451B81A31DB233DC7176A96 |
193 XAPK splits:
| File | Role |
|---|---|
com.camdiab.fx_alert.mmoll.ca.apk |
base |
config.arm64_v8a.apk |
native libs |
config.en.apk |
English (en-CA) |
config.xxhdpi.apk |
density |
Smali package footprint (evidence)
Counts of .smali files under multi-dex smali/classes*:
| Package area | 189 | 192 | 193 | 194 |
|---|---|---|---|---|
com.pairip |
18 | 30 | 30 | 0 |
com.camdiab.dexcomg7 |
0 | 51 | 51 | 51 |
com.camdiab.fx_alert.fxfcl |
0 | 2 | 2 | 2 |
com.dexcom (SDK tree) |
431 | 1309 | 1307 | 1307 |
com.camdiab (total) |
65 | 123 | 123 | 123 |
Interpretation: therapy stacks stabilize at 192. 193/194 are packaging / OS / licensing deltas on that base, not a second G7-sized feature add.
Permissions and security
Permissions that matter for connection
Present on all four (same pattern from 192 onward; 189 already had the Android 12 BLE set):
BLUETOOTH_SCANwithneverForLocationBLUETOOTH_CONNECT- Legacy
BLUETOOTH/BLUETOOTH_ADMINwithmaxSdkVersion="30" NFCFOREGROUND_SERVICE+FOREGROUND_SERVICE_CONNECTED_DEVICEREQUEST_IGNORE_BATTERY_OPTIMIZATIONS- Location permissions with
maxSdkVersion="30"(pre-Android 12 BLE scan path)
uses-feature: android.hardware.bluetooth_le required=true on 189 to 194.
PairIP / Play license
| Component | 189 | 192 | 193 | 194 |
|---|---|---|---|---|
com.pairip smali |
Yes | Yes | Yes | No |
LicenseActivity in manifest |
Yes | Yes | Yes | No |
com.android.vending.CHECK_LICENSE |
Yes | Yes | Yes | No |
Evidence: PairIP client stack is removed only in 194 (EU). 193 (CA) still ships it.
Other permission deltas
| Change | When |
|---|---|
ACCESS_NOTIFICATION_POLICY + WEARABLE_INTERNAL |
Added by 192 (not in 189) |
Package-scoped DYNAMIC_RECEIVER_… name |
Follows package id (.ca on 193) |
CHECK_LICENSE removed |
194 only among these four |
User-visible / product deltas by step
189 → 192 (major)
Already documented in the older report; still true after re-decompile:
- Dexcom G7 stack (
com.camdiab.dexcomg7,G7CoreService, login activity). - CamAPS Liberty (
fxfcl+ liberty strings / feature flags). - minSdk 31 → 33 (Android 13+).
- ABI of analyzed artifacts shifts to arm64-v8a for later Play extracts.
192 → 193 (CA XAPK)
- Package id becomes
com.camdiab.fx_alert.mmoll.ca. - targetSdk / compileSdk 35 → 36.
- versionCode 524 → 543, versionName 1.4(193).201.
- English string already includes the G7 switch logout reminder to note weight and total daily insulin dose (same idea later seen on EU 194).
- This XAPK language split is en-CA only (no
nbsplit in the downloaded bundle). - PairIP still present.
- Smali feature counts essentially match 192 (G7/Liberty/Dexcom SDK).
193 (CA) → 194 (EU) / 192 → 194
- EU package id remains
com.camdiab.fx_alert.mmoll(194 is not.ca). - PairIP fully removed on 194.
- versionCode 551, versionName 1.4(194).101.
- targetSdk 36 (same as 193).
- G7 logout weight/TDD reminder present on 194 (and on this 193 CA build).
- Norwegian (
nb) language split present on the Play extracts used here.
Manifest components (connection-related)
Stable from 192 through 194 (evidence):
com.dexcom.coresdk.g7txkit.g7core.G7CoreServicecom.dexcom.coresdk.cgmkit.watchcommunication.WatchDataListener(192+)foregroundServiceType="connectedDevice"on the connected-device FGS path- Package query for
com.freestylelibre3.app.gb(Libre coexistence / conflict awareness) - Package query for Health Connect (
com.google.android.apps.healthdata)
Obfuscated a.* / d.* / e.* service class names churn between builds. That is rebuild/obfuscation, not evidence of new pump brands.
Native libraries
Stable across 192 to 194: libjnidispatch.so, libnative-lib.so, libsodium.so, libsqlcipher.so.
Hashed / obfuscated .so names change each rebuild (anti-tamper churn), for example different lib????.so triples on 192 vs 193 vs 194. Not treated as a user feature.
189 lacks libsqlcipher.so / libnative-lib.so in the same form (older packaging).
What did not change (192 / 193 / 194)
| Checked | Result |
|---|---|
| New CGM brand beyond G6 / G7 / Libre 3 family | Not found |
| New pump brand beyond Dana / YpsoPump family | Not found |
| Nightscout / xDrip+ first-party export | Not found |
In-app language picker / localeConfig |
Not found |
| Removal of BLE / NFC / FGS connected-device requirements | Not found |
| New public Companion open API | Not found |
Recommendation table
| Goal | Use |
|---|---|
| Norway / EU Play users on current phone extract | 194 (com.camdiab.fx_alert.mmoll) |
| Research CA store sibling of the 193 line | 193 XAPK (.ca), do not sideload over EU Play data blindly |
| Historical pre-G7 baseline | 189 |
| Feature baseline with PairIP still present | 192 (or 193 CA) |
| Connection troubleshooting | Follow in-app Dana/Ypso/G6/G7/Libre strings + connection report |
Investigation artifacts
| Item | Path |
|---|---|
| 193 XAPK (workspace) | CamAPS-FX/CamAPS+FX_1.4(193).201_APKPure.xapk |
| 193 Temp unpack + merge | D:\Users\USER\Temp\camaps-fx-193\ |
| All four decompiles | D:\Users\USER\Temp\camaps-compare\{189,192,193,194}\ |
| Diff dumps | D:\Users\USER\Temp\camaps-compare\diff-189-192-193-194\ |
| Prior 189 vs 192 report | APK-COMPARISON-189-vs-192-REPORT.html |
| Prior 192 vs 194 report | APK-COMPARISON-192-vs-194-REPORT.html |
| Connection deep dive | APK-CONNECTION-SENSOR-APP-PUMP-REPORT.html |
Bottom line
189 → 192 is the only large therapy jump in this set (G7 + Liberty + minSdk 33).
193 (APKPure) is a Canadian .ca package already on targetSdk 36, still with PairIP, and already carrying the G7 logout weight/TDD note. It is not the same binary identity as EU 194.
194 is the EU Play maintenance line: PairIP removed, targetSdk 36, feature parity with 192 for G7/Liberty/Libre/pumps.
For flaky sensor/pump links, the APK does not show a 192→194 protocol rewrite; see the connection report for architecture evidence and user-facing reconnect guidance already baked into the app strings.