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):

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:

  1. Dexcom G7 stack (com.camdiab.dexcomg7, G7CoreService, login activity).
  2. CamAPS Liberty (fxfcl + liberty strings / feature flags).
  3. minSdk 31 → 33 (Android 13+).
  4. ABI of analyzed artifacts shifts to arm64-v8a for later Play extracts.

192 → 193 (CA XAPK)

  1. Package id becomes com.camdiab.fx_alert.mmoll.ca.
  2. targetSdk / compileSdk 35 → 36.
  3. versionCode 524 → 543, versionName 1.4(193).201.
  4. English string already includes the G7 switch logout reminder to note weight and total daily insulin dose (same idea later seen on EU 194).
  5. This XAPK language split is en-CA only (no nb split in the downloaded bundle).
  6. PairIP still present.
  7. Smali feature counts essentially match 192 (G7/Liberty/Dexcom SDK).

193 (CA) → 194 (EU) / 192 → 194

  1. EU package id remains com.camdiab.fx_alert.mmoll (194 is not .ca).
  2. PairIP fully removed on 194.
  3. versionCode 551, versionName 1.4(194).101.
  4. targetSdk 36 (same as 193).
  5. G7 logout weight/TDD reminder present on 194 (and on this 193 CA build).
  6. Norwegian (nb) language split present on the Play extracts used here.

Manifest components (connection-related)

Stable from 192 through 194 (evidence):

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.