Bump com.journeyapps:zxing-android-embedded from 3.6.0 to 4.3.0#3688
Bump com.journeyapps:zxing-android-embedded from 3.6.0 to 4.3.0#3688dependabot[bot] wants to merge 2 commits into
Conversation
Bumps [com.journeyapps:zxing-android-embedded](https://github.com/journeyapps/zxing-android-embedded) from 3.6.0 to 4.3.0. - [Release notes](https://github.com/journeyapps/zxing-android-embedded/releases) - [Changelog](https://github.com/journeyapps/zxing-android-embedded/blob/master/CHANGES.md) - [Commits](journeyapps/zxing-android-embedded@v3.6.0...v4.3.0) --- updated-dependencies: - dependency-name: com.journeyapps:zxing-android-embedded dependency-version: 4.3.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com>
Dependency Update Review:
|
| Package | Old Version | New Version | Jump Type |
|---|---|---|---|
com.journeyapps:zxing-android-embedded |
3.6.0 | 4.3.0 | MAJOR (3.x → 4.x) |
Overall Risk: MEDIUM — This is a large jump spanning multiple major/minor releases. The library still compiles cleanly with CommCare's current usage, but IntentIntegrator (used in 2 production files) is now deprecated, and the v4.x series introduced an AndroidX migration and minimum SDK changes.
📋 Detailed Changelog Review
Package: com.journeyapps:zxing-android-embedded (3.6.0 → 4.3.0)
v4.0.2 (2019-09-07)
- Migrated from android.support.* to AndroidX
- Upgraded bundled zxing:core to 3.4.0
- Minimum SDK became 24 (downgradable to 14 with extra config)
- Fixed ArithmeticException and ResultPoint mirroring bug
v4.1.0 (2020-01-07)
BarcodeCallback.possibleResultPoints()made optional (default no-op) — no impact on CommCare which doesn't implement this interface directly- New: ability to hide the laser in
ViewfinderView - New: ability to customize/disable the camera permission error dialog
v4.2.0 (2021-03-15)
- Fixed MediaPlayer warnings
- Fixed
CameraConfigurationUtilsclass clash ⚠️ Known bug: crashes on SDK < 21 (issue Drop chevron from read-only entity detail #645) — not a concern since CommCare'sminSdkVersionis 23
v4.3.0 (2021-10-25)
- Minimum SDK lowered back to 19 (requires desugaring/multidex config for < 24)
- Added
ScanOptions+ScanContractfor the modernregisterForActivityResult()API IntentIntegratordeprecated — still functional, but the newScanOptions/ScanContractapproach is recommended- Switched to minimal AndroidX dependencies
- Upgraded bundled zxing:core to 3.4.1
Breaking Changes: None for CommCare's current API usage. IntentIntegrator remains available.
Security Fixes: None documented.
Migration Notes: For < SDK 24 support, desugaring must be configured — CommCare already has this covered (coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs_minimal:2.1.3' + coreLibraryDesugaringEnabled true in app/build.gradle).
⚠️ Impact Assessment
Breaking Changes Found: No hard breaks, but:
-
IntentIntegratoris deprecated in 4.3.0 and used in 2 production files:app/src/org/commcare/views/widgets/WidgetUtils.java:77— creates the scan intent vianew IntentIntegrator(activity).createScanIntent()app/src/org/commcare/views/widgets/BarcodeWidget.java:36— fallback call inperformCallout()
These will compile and function correctly, but the build will generate deprecation warnings until migrated to
ScanOptions/ScanContract.
Affected Files:
app/src/org/commcare/views/widgets/WidgetUtils.java— directIntentIntegratorusage (deprecated, not broken)app/src/org/commcare/views/widgets/BarcodeWidget.java— directIntentIntegratorusage (deprecated, not broken)app/src/org/commcare/utils/QRCodeEncoder.java,SelectInstallModeFragment.java,GlobalPrivilegeClaimingActivity.java— usecom.google.zxing.BarcodeFormatetc. from the underlyingzxing:core(unaffected; these are the core encoding classes, not the Android wrapper)
Test Impact: No unit tests exist for barcode scanning functionality. Manual regression testing of the QR/barcode scan flow is recommended.
Configuration Changes: None required. CommCare's existing coreLibraryDesugaring configuration already satisfies the v4.3.0 requirement for SDK < 24 support.
🛠️ Recommendations
Action Required:
- Merge is safe — no compile-time breakage, desugaring config is already in place.
- Follow-up ticket recommended: Migrate
WidgetUtils.javaandBarcodeWidget.javafromIntentIntegratorto the modernScanOptions+ScanContract(registerForActivityResult()) API to eliminate deprecation warnings and future-proof the barcode integration.
Testing Focus:
- End-to-end barcode scan in a form (via
BarcodeWidget) - QR code scan via
SelectInstallModeFragment(app installation flow) GlobalPrivilegeClaimingActivityQR code scan- Verify camera permission dialog still appears/behaves correctly
- Test on a device running SDK 23 specifically (CommCare's minSdkVersion, and in the boundary range that required the desugaring workaround in v4.3.0)
Follow-up Tasks:
- Open a ticket to migrate
IntentIntegrator→ScanOptions/ScanContractinWidgetUtils.javaandBarcodeWidget.java
Merge Recommendation: ✅ REVIEW_NEEDED — The update is safe to merge after manual QA of the barcode scan flows. No code changes are required to compile or run, but functional regression testing of all scan entry points is strongly advised given the size of the version jump (3.6 → 4.3).
📚 Useful Links
- zxing-android-embedded CHANGES.md
- v3.6.0 → v4.3.0 full commit diff
- Migration guide: IntentIntegrator → ScanContract
Reviewed by Claude — automated Dependabot PR analysis
…droid-embedded-4.3.0
Code Coverage
|
Bumps com.journeyapps:zxing-android-embedded from 3.6.0 to 4.3.0.
Release notes
Sourced from com.journeyapps:zxing-android-embedded's releases.
Changelog
Sourced from com.journeyapps:zxing-android-embedded's changelog.
Commits
24d0294Merge pull request #665 from journeyapps/fixes6ccf3a9Fix lint report location.23f29e5Ignore lint error.1a8d949Tweaks.f1554b7Use GitHub Actions.cc12c10v4.3.0 and cleanup.a13ce2bCleanup.0c97cf7ScanOptions and ScanContract.9beeac7minSdkVersion 19. Multidex and desugaring.cc34502Smaller libs.You can trigger a rebase of this PR by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)