Skip to content

[Android][Accessibility] AccessibilityBridge$Api31Impl.isBoldText still throws NoSuchFieldError for fontWeightAdjustment on 3.44.8 #190690

Closed

Description

@Joyatou

#184286 was closed by #184630, and I cherry-picked it to the 3.44 branch in #189759, which shipped in stable 3.44.8. The crash still reaches production on 3.44.8. The previous thread is locked, so I am opening this as a new report.

What happens

AccessibilityBridge is constructed during FlutterActivity.onCreate. Its constructor calls setBoldTextFlag() behind Build.VERSION.SDK_INT >= API_LEVELS.API_31, and setBoldTextFlag() reads the field through the Api31Impl helper:

// AccessibilityBridge.java:663
boolean shouldBold =
    Api31Impl.isBoldText(rootAccessibilityView.getResources().getConfiguration());

// AccessibilityBridge.java:3267
private static class Api31Impl {
  @DoNotInline
  static boolean isBoldText(Configuration configuration) {
    int fontWeightAdjustment = configuration.fontWeightAdjustment;
    return fontWeightAdjustment != Configuration.FONT_WEIGHT_ADJUSTMENT_UNDEFINED
        && fontWeightAdjustment >= BOLD_TEXT_WEIGHT_ADJUSTMENT;
  }
}

Moving the read into Api31Impl stops the class verifier from resolving the field while AccessibilityBridge is loaded. It does not stop the read itself. On a ROM that reports SDK_INT >= 31 while android.content.res.Configuration carries no fontWeightAdjustment, the guard passes, isBoldText is entered, and resolution fails there instead. The failure moved one frame down rather than going away.

Stack trace (production, built with 3.44.8)

java.lang.NoSuchFieldError: No instance field fontWeightAdjustment of type I in class Landroid/content/res/Configuration; or its superclasses (declaration of 'android.content.res.Configuration' appears in /system/framework/framework.jar)
  at io.flutter.view.AccessibilityBridge$Api31Impl.isBoldText (AccessibilityBridge.java)
  at io.flutter.view.AccessibilityBridge.setBoldTextFlag (AccessibilityBridge.java:663)
  at io.flutter.view.AccessibilityBridge.<init> (AccessibilityBridge.java:528)
  at io.flutter.view.AccessibilityBridge.<init> (AccessibilityBridge.java:463)
  at io.flutter.embedding.android.FlutterView.attachToFlutterEngine (FlutterView.java:1225)
  at io.flutter.embedding.android.FlutterActivityAndFragmentDelegate.onCreateView (FlutterActivityAndFragmentDelegate.java:437)
  at io.flutter.embedding.android.FlutterActivity.createFlutterView (FlutterActivity.java:802)
  at io.flutter.embedding.android.FlutterActivity.onCreate (FlutterActivity.java:652)
  at android.app.Activity.performCreate (Activity.java:7994)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1548)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3406)

Api31Impl appearing in the frame confirms the build carries the 3.44.8 fix.

Occurrences

Crashlytics, two releases of the same app, both built with 3.44.8:

  • 2026-08-01: 10 events from 2 installations
  • 2026-08-06 to 2026-08-07: 14 events from 4 installations

Every event reports OnePlus8Pro on Android 11, with the OS name unresolved. Architecture is X86_64 in the August 1 batch and ARM64 afterwards. Reported memory and storage are roughly 4.3 GB each, which does not match the retail device, so these are most likely automated environments rather than end users. The code path is the same either way: FlutterActivity.onCreate is the first frame, and the process dies before anything is drawn.

Reproduction

I have no access to hardware, or to an image, that reports SDK_INT >= 31 without the field, so I cannot supply a minimal reproduction. The condition is reproducible in principle with any Configuration that declares API 31 while omitting fontWeightAdjustment.

Direction

On these ROMs the API level is not a reliable signal for the presence of the field, so gating on it cannot close the path. Containing the read so the flag falls back to "not bold" would leave startup intact. If that direction is acceptable, I can prepare the change.

flutter doctor -v

[✓] Flutter (Channel stable, 3.44.8, on macOS 26.5.2 25F84 darwin-arm64, locale ja-JP)
    • Flutter version 3.44.8 on channel stable
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 058e0af2c2 (2 weeks ago), 2026-07-23 10:56:21 -0700
    • Engine revision 0cd610717b
    • Dart version 3.12.2
    • DevTools version 2.57.0

[✓] Android toolchain - develop for Android devices (Android SDK version 36.1.0)
    • Platform android-36.1, build-tools 36.1.0
    • Java version OpenJDK Runtime Environment (build 21.0.10+-117844308-b1163.108)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 26.6)
    • Build 17F113
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web
[✓] Network resources

• No issues found!

Activity

  1. puneetkukreja98 commented on Aug 7, 2026

    @puneetkukreja98
    Contributor

    @Joyatou Thanks for the report, routing this to team-accessibility for further investigation.

  2. added
    a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)
    team-accessibilityOwned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)
    platform-androidAndroid applications specifically
    fyi-androidFor the attention of Android platform team
    c: crashStack traces logged to the console
    and removed
    in triagePresently being triaged by the triage team
    on Aug 7, 2026
  3. added
    P2Important issues not at the top of the work list
    triaged-androidTriaged by Android platform team
    and removed
    P2Important issues not at the top of the work list
    on Aug 11, 2026
  4. self-assigned this
    on Aug 11, 2026
  5. added
    team-androidOwned by Android platform team
    P2Important issues not at the top of the work list
    fyi-accessibilityFor the attention of Framework Accessibility team
    triaged-androidTriaged by Android platform team
    and removed
    team-accessibilityOwned by Framework Accessibility team (i.e. responsible for accessibility code in flutter/flutter)
    on Aug 11, 2026
  6. github-actions commented on Aug 28, 2026

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  7. locked as resolved and limited conversation to collaborators on Aug 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P2Important issues not at the top of the work lista: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)c: crashStack traces logged to the consolefyi-accessibilityFor the attention of Framework Accessibility teamplatform-androidAndroid applications specificallyteam-androidOwned by Android platform teamtriaged-androidTriaged by Android platform team

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions