mirror of
https://github.com/bitwarden/android.git
synced 2026-07-21 00:33:17 -05:00
[GH-ISSUE #6901] Crash on launch in 2026.4.1 (F-Droid flavor): NPE in CardTextAnalyzerImpl.<init> due to ML Kit registrars failing to instantiate (NoSuchMethodException on no-arg constructors)
#102587
Closed
opened 2026-06-03 02:38:46 -05:00 by GiteaMirror
·
2 comments
No Branch/Tag Specified
main
environment-update
PM-40631-display-personal-vault-as-my-vault
sdlc/sdk-update
renovate/lock-file-maintenance
PM-40527-send-controls-policy-data-model
cron-sync-privileged-browsers/70-sync
PM-40295-mp-policy-on-unlock
PM-40278-freeze-public-key
PM-40154-keystore-encrypted-shared-prefs
PM-39902-blob-encryption-support
worktree-QA-2177-blockeduri-testtag
PM-32685/test-support
cron-sync-privileged-browsers/69-sync
release/2026.7-rc58
PM-37256/merge-fill-assist-with-traverse
update-billing-api
agalles/create-deploy-workflow-trigger
llm/plan-implement-review-command
allow-user-certs
vvolkgang/fdroid-update
release/2026.6-rc57
agalles/create-github-workflow-trigger
release/2026.6-rc56
release/2026.5-rc55
release/2026.5-rc53
release/2026.5-rc54
PM-37255/consume-fill-assist-rules-data
PM-26896-autofill-fix
release/hotfix-v2026.4.1-bwpm
target-sdk-37
agalles/fdroid-only
BWA-99/show-next-totp
BWA-99/add-preview-next-totp-code-setting
sync-min-sdk
release/2026.4-rc51
related-origin-passkey-creation
release/2026.4-rc50
platform/android-breaking-change-detection
innovation-sprint-2026-send-folder
release/2026.3-rc49
PM-34193-vault-lockout
android-collections
llm/add-resolving-sdk-updates-skill
QA-1523/sanity-test-saucelabs
release/2026.3-rc48
release/2026.2-rc47
pr-6572
release/2026.2-rc46
release/2026.1-rc45
PM-30644/added-logs-for-debug
PM-30644/quicktile-nav-not-showing-migration
minor-gradle-updates
release/2026.1-rc42
release/2026.1-rc44
release/2026.1-rc43
PM-28834/set-landscape-on-horizonos-devices
PM-28468/validate-and-navigate-to-vault-migration
PM-20026/force-ltr-passwords-and-codes
release/2025.12-rc41
cmcg/testCoverage
PM-29014/talkback-support-for-passwords
release/2025.12-rc40
BRE-1305/publish_test
accept-user-certs
autofill-permissions
release/2025.11-rc39
PM-22479/check-all-certificates-validate-asset-links
release/2025.10-rc38
agalles/android-latest
retro-agent
PM-27001/skip-account-selection-only-one-exists-cxp
release/2025.10-rc37
agalles/test-1118
release/2025.10-rc36
PM-20593-token-refresh
QA-1126b/adding-native-sanity-test
release/2025.9-rc35
pm-25933/sdk-update-password
release/2025.9-rc34
release/2025.8-rc33
agalles/20250821-release
debug-release-issues
pm-24249-allow-automated-prs-for-sdk-updates
release/2025.8-rc32
release/WORKFLOW-TEST-2025.8-rc28
agalles/20250807release
release/2025.07-rc25
release/hotfix-v2025.7.0-bwa
pm-23311/export-vault-policy-bypass
release/2025.07-rc24
authenticator-pm-sync-flags-issue
release/hotfix-v2025.6.0-bwpm
release/2025.06-rc21
agalles/automate-android-fastlane-patch
release/2025.05-rc20
release/2025.04-rc19
languages/basque
release/2025.03-rc19
update-readme
qrcode/feature
innovation/archive/pm-19153-archive-items
qrcode/2-ui-fields
qrcode/1-page
hold-on-biometric-prompt-alternative
release-notes-process
release/2025.02-rc16
bwa-monorepo
PM-8223/new-device-verification-ux-improvements
pm-18451/exempt-from-policies
test-bwa
release/2025.01-rc15
release/2025.01-rc14
release/2024.12-rc13
pm-16670/sync-leave-notice
821
PM-16695/backport-lean-more-new-device-verification
release/hotfix-v2024.11.7
release/2024.11-rc1
pm-11304/collection-add-item-button
PM-14241/disabling-logs-app-crash
poc/offline-editing
new-version-calc
pm-11649/expired-link-services
pm-6702/add-feature-flag
pm-6702/email-verification-feature
pm-9933/marketing-copy-update
pm-6702/registration-flows
update-templates
pm-6701/email-verification-selfhost-registration
v2026.6.1-bwa
v2026.6.1-bwpm
v2026.6.0-bwpm
v2026.6.0-bwa
v2026.5.1-bwpm
v2026.5.1-bwa
v2026.5.0-bwpm
v2026.5.0-bwa
v2026.4.2-bwpm
v2026.4.1-bwa
v2026.4.1-bwpm
v2026.4.0-bwa
v2026.4.0-bwpm
v2026.3.1-bwa
v2026.3.1-bwpm
v2026.3.0-bwpm
v2026.3.0-bwa
v2026.2.1-bwpm
v2026.2.1-bwa
v2026.2.0-bwpm
v2026.2.0-bwa
v2026.1.1-bwa
v2026.1.1-bwpm
temp-test
v2026.1.0-bwpm
v2026.1.0-bwa
v2025.12.1-bwa
v2025.12.1-bwpm
v2025.12.0-bwa
v2025.12.0-bwpm
v2025.11.1-bwpm
v2025.11.1-bwa
v2025.11.0-bwpm
v2025.11.0-bwa
v2025.10.1-bwa
v2025.10.1-bwpm
v2025.10.0-bwa
v2025.10.0-bwpm
v2025.9.1-bwa
v2025.9.1-bwpm
v2025.9.0-bwa
v2025.9.0-bwpm
v2025.8.1-bwa
v2025.8.1-bwpm
v2025.8.0-bwa
v2025.8.0-bwpm
v2025.7.2-bwa
v2025.7.2-bwpm
v2025.7.1-bwa
v2025.7.1-bwpm
v2025.7.0-bwa
v2025.7.0-bwpm
v2025.6.1-bwpm
v2025.6.0-bwa
v2025.6.0-bwpm
v2025.1.0-bwa
v2025.5.0-bwa
v2025.5.0-bwpm
v2025.5.999
2025.4.0
v2025.4.0
untagged-4731eaadac73f3dfbbb8
v2025.3.0
v2025.2.0
untagged-815a165c5d70ffe75bc7
v2025.1.2
v2025.1.1
v2025.1.0
v2024.12.0
untagged-5a76b6392a4c8998c63a
v2024.11.7
v2024.11.6
v2024.11.5
v2024.11.4
v2024.11.3
v2024.11.2
v2024.11.1
v2024.11.0
v2024.10.2
v2024.10.1
v2024.10.0
v2024.9.0
v2024.8.1
v2024.8.0
v2024.7.3
v2024.7.2
v2024.7.1
v2024.7.0
v2024.6.1
v2024.6.0
v2024.5.1
v2024.4.1
v2024.4.2
v2024.4.0
v2024.3.3
v2024.3.1
v2024.3.0
v2024.2.1
v2024.2.0
v2024.1.1
v2024.1.0
v2023.12.0
v2023.10.0
v2023.9.2
maui-single-project-android
v2023.9.1
v2023.9.0
v2023.8.0
v2023.7.0
v2023.5.0
v2023.4.0
v2023.3.2
v2023.3.1
v2023.3.0
v2023.2.0
v2023.1.0
v2022.11.0
v2022.10.0
v2022.9.1
v2022.9.0
v2022.8.0
v2022.6.2
v2022.6.1
v2022.6.0
v2022.05.0
v2.18.0
v2.17.0
v2.16.4
v2.16.3
v2.16.2
v2.16.1
v2.15.0
v2.14.2
v2.14.1
v2.14.0
v2.13.0
v2.12.0
v2.11.3
v2.11.2
v2.11.1
v2.11.0
v2.10.0
v2.9.1
v2.9.0
v2.8.2
v2.8.1
v2.8.0
v2.7.2
v2.7.0
v2.6.1
v2.6.0
v2.5.6
v.2.5.5
v2.5.5
v2.5.4
v2.5.3
v2.5.2
v2.5.1
v2.5.0
v2.4.3
v2.4.2
v2.4.1
v2.4.0
v2.3.1
v2.3.0
v2.2.8
v2.2.7
v2.2.6
v2.2.2
v2.2.1
v2.2.0
v2.1.2
v2.1.0
v2.0.6
v2.0.5
v2.0.4
v2.0.3
v2.0.2
v2.0.1
v2.0.0
v1.22.1
v1.22.0
v1.21.0
v1.20.0
v1.19.0
v1.18.1
v1.18.0
v1.17.0
v1.16.0
v1.15.2
v1.15.1
v1.15.0
v1.14.4
v1.14.1
v1.14.0
v1.13.0
v1.12.2
v1.12.1
v1.12.0
v1.11.1
v1.11.0
v1.10.0
v1.9.0
v1.8.1
v1.8.0
v1.7.0
v1.6.5
v1.6.1
v1.6.0
v1.5.1
v1.5.0
v1.4.4
v1.4.3
v1.4.0
v1.3.0
v1.2.1
v1.2.0
v1.1.0
v1.0.0
v0.0.6
v0.0.5
v0.0.4
v0.0.3
v0.0.2
v0.0.1
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/android#102587
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @atharen on GitHub (May 10, 2026).
Original GitHub issue: https://github.com/bitwarden/android/issues/6901
Steps To Reproduce
Had the app fail to launch. Just plugged in the log into Claude, and told it to find me a bug report.
Did read it, but not familiar with the codebase to verify with the investigation.
But environment facts are accurate.
Note: between filing this and now, 2026.4.1 fdroid variant appears to have been removed from GitHub Releases (current Latest is 2026.4.0-bwpm for com.x8bit.bitwarden-fdroid.apk). I'm filing this anyway because the specific crash signature here — NPE in CardTextAnalyzerImpl. rooted in ComponentDiscovery failing to instantiate ML Kit registrars — does not appear documented separately, and is likely to re-appear in a re-released 2026.4.x unless the upstream R8 keep-rule issue is addressed alongside any fix to the NPE itself.
Steps To Reproduce
com.x8bit.bitwarden-fdroid.apkfrom thev2026.4.1-bwpmGitHub release. (Installed via Obtainium in my case.)This happens on a fresh launch — no user input is required, the user does not even reach the master password prompt. Reproduced consistently across multiple cold starts; clearing app data and reinstalling does not resolve it.
Likely root cause
The crash chain is rooted at app startup, not when the card scanner is opened. Earlier in the same logcat (during
handleBindApplication, well before the NPE), Firebase'sComponentDiscoveryreports three back‑to‑backInvalidRegistrarExceptions whileMlKitInitProvider.attachInfois running:These are only logged at WARN level, so the app continues — but ML Kit's runtime is now in a half-initialized state. When Compose later composes the root nav graph,
CardDataParseris constructed without itsTextRecognizerdependency wired up, then handed toCardTextAnalyzerImpl, whose constructor immediately dereferences that null field → fatal NPE → process killed → app relaunch → repeat.These three classes are part of bundled ML Kit (
com.google.mlkit:text-recognitionand friends), shipped inside the APK rather than coming from Play Services. The classes themselves are present in the APK (otherwise this would beClassNotFoundException, notNoSuchMethodException) — only their no-arg constructors are missing. That signature points directly at R8/ProGuard stripping the constructors of these registrar classes in the release build. ML Kit ships consumer ProGuard rules in its AAR that should preserve them via reflection, so something in the 2026.4.1 R8 configuration is either dropping or overriding those rules.This is almost certainly tied to PR #6720 / PM-34125 ("Add card text analysis pipeline"), which is the changelog entry for 2026.4.1 that introduced both
CardTextAnalyzerImpland the new ML Kit text-recognition dependency.Because the F-Droid flavor is built with a different dependency/rule set from the Play Store flavor (no Firebase Messaging, etc.), it is plausible this is specific to the F-Droid build variant and that Play Store users do not hit it — that would also explain the apparent absence of duplicate reports. Worth diffing
proguard-rules*.proand theconsumerProguardFileschain between flavors for 2026.4.1, and confirming with a Play-Store-flavor smoke test of a clean launch.A second observation, separate from the root cause: the failure surfaces during Compose composition of the root nav graph (
u05.invokeline 1388 in the obfuscated code) rather than only when the card-scanner destination is navigated to. It looks likeCardTextAnalyzerImplis being constructed eagerly somewhere in the graph wiring, so a defense-in-depth fix in the app code — even if the ML Kit init issue is fixed elsewhere — would be to make the analyzer construction lazy / scoped to the card-scanner screen, so a misconfigured ML Kit pipeline can never take down the whole app on launch again.This crash is distinct from the avatar-color crash in #6800 (which was a
NumberFormatExceptioninhexToColoron the top app bar) — different exception, different code path, different feature. I checked open issues and could not find thisCardTextAnalyzerImplcrash filed separately, hence this report.Expected Result
The unlock / login screen is displayed.
Actual Result
The app crashes during initial Compose composition (
AndroidComposeView.onAttachedToWindow→setOnViewTreeOwnersAvailable) with:(Full stack trace in the attached logcat.)
Screenshots or Videos
Logcat attached. App never renders any UI before the crash, so no screenshot is meaningful.
Bitwarden log sanitized.txt
Additional Context
MlKitInitProvideris still installed by bundled ML Kit and runs at process start.Build Version
2026.4.1 (21464) — F-Droid flavor APK (
com.x8bit.bitwarden-fdroid.apk) from thev2026.4.1-bwpmGitHub release, installed via Obtainium. APK certificate SHA-256:DE6EC91431557995297BF3E65BC80349BC603A04708160618C86BC9994171C90(matches the official Bitwarden F-Droid signing certificate).What server are you connecting to?
US
Self-host Server Version
N/A
Environment Details
komodo), arm64-v8agoogle/komodo/komodo:16/BP4A.260205.002/2026050701:user/release-keys, security patch 2026-05-07GmsCompatLib. (Noting this for completeness, but I do not believe it is the cause: the registrars failing are part of bundled ML Kit shipped inside the Bitwarden APK, not Play Services components, and theNoSuchMethodExceptionsymptom is a build-time minification issue, not a runtime/GMS one.)Issue Tracking Info
@bitwarden-bot commented on GitHub (May 10, 2026):
Thank you for your report! We've added this to our internal board for review.
ID: PM-36986
@pamperer562580892423 commented on GitHub (May 10, 2026):
Another user here.
See: