Skip to content

chore: target android 16 (api level 36) - #3226

Open
zlshames wants to merge 1 commit into
masterfrom
claude/android-api-level-36-n8gy82
Open

chore: target android 16 (api level 36)#3226
zlshames wants to merge 1 commit into
masterfrom
claude/android-api-level-36-n8gy82

Conversation

@zlshames

Copy link
Copy Markdown
Member

Google Play requires apps to target within one year of the latest Android release. compileSdk was already 36; only targetSdkVersion was left at 35, which is what the Play Console flagged. No dependency was holding this back.

Audited the Android 16 target-36 behavior changes against the app:

  • Edge-to-edge enforcement: the app never used windowOptOutEdgeToEdgeEnforcement and already runs SystemUiMode.edgeToEdge with windowDrawsSystemBarBackgrounds=false, so nothing changes.
  • Predictive back: onBackPressed() is no longer called and KEYCODE_BACK is no longer dispatched. Neither MainActivity nor BubbleActivity overrides onBackPressed, and the Dart side routes back through PopScope, so the behavior is already correct. Declared enableOnBackInvokedCallback explicitly to pin the contract.
  • Large-screen adaptive layouts: no manifest sets screenOrientation or an aspect ratio, resizeableActivity is already true, and both activities declare configChanges for orientation/screenSize/screenLayout/density, so they resize in place instead of being recreated. Deliberately not opting out via PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY: the app is already adaptive, and that escape hatch stops working at API 37.
  • Not applicable: scheduleAtFixedRate, MediaStore.getVersion, BODY_SENSORS, elegantTextHeight, and Bluetooth bonding are all unused, and strict intent matching is opt-in only.

Google Play requires apps to target within one year of the latest Android
release. compileSdk was already 36; only targetSdkVersion was left at 35,
which is what the Play Console flagged. No dependency was holding this back.

Audited the Android 16 target-36 behavior changes against the app:

- Edge-to-edge enforcement: the app never used
  windowOptOutEdgeToEdgeEnforcement and already runs SystemUiMode.edgeToEdge
  with windowDrawsSystemBarBackgrounds=false, so nothing changes.
- Predictive back: onBackPressed() is no longer called and KEYCODE_BACK is no
  longer dispatched. Neither MainActivity nor BubbleActivity overrides
  onBackPressed, and the Dart side routes back through PopScope, so the
  behavior is already correct. Declared enableOnBackInvokedCallback
  explicitly to pin the contract.
- Large-screen adaptive layouts: no manifest sets screenOrientation or an
  aspect ratio, resizeableActivity is already true, and both activities
  declare configChanges for orientation/screenSize/screenLayout/density, so
  they resize in place instead of being recreated. Deliberately not opting
  out via PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY: the app is already
  adaptive, and that escape hatch stops working at API 37.
- Not applicable: scheduleAtFixedRate, MediaStore.getVersion, BODY_SENSORS,
  elegantTextHeight, and Bluetooth bonding are all unused, and strict intent
  matching is opt-in only.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants