Build on compileSdk/targetSdk 37 (Android 17): AGP 9.1 + Gradle 9.3 + Kotlin 2.2 - #1756
Build on compileSdk/targetSdk 37 (Android 17): AGP 9.1 + Gradle 9.3 + Kotlin 2.2#1756rahul-lohra wants to merge 23 commits into
Conversation
PR checklist ✅All required conditions are satisfied:
🎉 Great job! This PR is ready for review. |
The metrics module uses the plain `io.getstream.video.android.application` convention (not the `.compose` variant), so `configureAndroidCompose()` never runs and the Compose BOM is not applied. Its compose flavors added unversioned Compose artifacts (foundation, ui, ui-tooling) whose versions come from the BOM, so resolution failed with: Could not find androidx.compose.foundation:foundation: Add the BOM platform to each compose flavor's Implementation configuration so the unversioned artifacts resolve.
Pointing the baseline-profile output/source dir at src/main made AGP 9's prepareReleaseArtProfile recursively parse every file under it (res webp, *.kt) as ART profile rules, failing with "Illegal token". Use the default generated/baselineProfiles dir instead.
WalkthroughThe PR upgrades Gradle, AGP, Android SDK, dependencies, convention plugins, managed devices, CI Java versions, and Paparazzi support. It also adds a workflow for recording and uploading Paparazzi snapshots. ChangesAndroid build and validation upgrade
Estimated code review effort: 4 (Complex) | ~45 minutes Sequence Diagram(s)sequenceDiagram
participant GitHubActions
participant Gradle
participant Paparazzi
participant ArtifactStorage
GitHubActions->>Gradle: Run cleanRecordPaparazziDebug
Gradle->>Paparazzi: Generate golden snapshots
Paparazzi-->>Gradle: Write snapshot files
GitHubActions->>ArtifactStorage: Upload snapshot artifact
Poem
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@gradle/libs.versions.toml`:
- Line 11: Update gradle/libs.versions.toml:11 so streamConventions uses the
approved published AGP 9-compatible version instead of a SNAPSHOT. Update
settings.gradle.kts:8-21 to remove local-first/unrestricted snapshot plugin
resolution from the default merge path, or restrict it to an explicit
developer-only override.
In
`@stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/notifications/internal/receivers/GenericCallActionBroadcastReceiver.kt`:
- Line 85: Ensure the async broadcast is completed when streamCallId is missing:
update the handling around the streamCallId check in
GenericCallActionBroadcastReceiver so the pending result is finished before
logging and returning, or only invoke goAsync() in the branch that launches the
coroutine and finishes it.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 337ffc27-e2b9-46b4-9d66-3c0a1d16e0a0
⛔ Files ignored due to path filters (138)
stream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioCallContent in default state.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioCallContent without header.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioOnlyCallContent in default state.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot AudioOnlyCallContent without header.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot_AudioCallContent_in_default_state.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioCallContentTest_snapshot_AudioCallContent_without_header.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioAppBar composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioControlActions composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioParticipantsGrid composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioRoom DarkMode composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot AudioRoom composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot_AudioAppBar_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot_AudioControlActions_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AudioRoomTest_snapshot_AudioParticipantsGrid_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_snapshot AvatarInitial composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_snapshot UserAvatar composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_snapshot_AvatarInitial_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_AvatarTest_snapshot_UserAvatar_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Badges with buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Badges_with_buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Button with icons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Button_with_icons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Different size buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Different_size_buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Generic container (for info messages).pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Generic_container_(for_info_messages).pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Input fields.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Input_fields.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Regular buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Regular icon buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Regular_buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Regular_icon_buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Show progress into icon buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Show_progress_into_icon_buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Toggle buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Toggle icon buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Toggle_buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_BaseComponentsTest_Toggle_icon_buttons.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot CallAppBar composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot CallControls composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot RegularCallControls composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot_CallAppBar_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot_CallControls_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallComponentsPortraitTest_snapshot_RegularCallControls_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot CallContent with multiple participants composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent Video type with multiple participants composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent with minimum parameters.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContent with one participant composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContentDetails Audio composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallContentDetails Video composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot IncomingCallOptions composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with minimum parameters and audio type.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with minimum parameters and video type.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with multiple participants composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallContent with one participant composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallDetails Audio composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallDetails Video composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot OutgoingCallOptions composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_CallContent_with_multiple_participants_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_IncomingCallContentDetails_Audio_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_IncomingCallContentDetails_Video_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_IncomingCallContent_Video_type_with_multiple_participants_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_IncomingCallContent_with_minimum_parameters.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_IncomingCallContent_with_one_participant_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_IncomingCallOptions_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_OutgoingCallContent_with_minimum_parameters_and_audio_type.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_OutgoingCallContent_with_minimum_parameters_and_video_type.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_OutgoingCallContent_with_multiple_participants_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_OutgoingCallContent_with_one_participant_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_OutgoingCallDetails_Audio_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_OutgoingCallDetails_Video_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallContentTest_snapshot_OutgoingCallOptions_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_snapshot CallControls Actions composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_snapshot CallControls composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_snapshot_CallControls_Actions_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallControlsTest_snapshot_CallControls_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallLobbyTest_snapshot CallLobby composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_CallLobbyTest_snapshot_CallLobby_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot Connection ConnectionQualityIndicator composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot Connection ParticipantLabel composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot SoundIndicator composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot_Connection_ConnectionQualityIndicator_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot_Connection_ParticipantLabel_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_IndicatorsTest_snapshot_SoundIndicator_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_snapshot Livestream Player Overlay composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_snapshot Livestream Player composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_snapshot_Livestream_Player_Overlay_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_LivestreamTest_snapshot_Livestream_Player_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants1 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants2 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants3 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants4 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants5 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeParticipants6 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeScreenSharingContent for myself composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot LandscapeScreenSharingContent for other participant composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot ParticipantsRow composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot_LandscapeParticipants4_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot_LandscapeParticipants5_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot_LandscapeParticipants6_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot_LandscapeScreenSharingContent_for_myself_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot_LandscapeScreenSharingContent_for_other_participant_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantLandscapeTest_snapshot_ParticipantsRow_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipant a local call composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipant a remote call composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsInfoAppBar composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsInfoOptions composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot CallParticipantsList composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot InviteUserList composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot LocalVideoContent composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantAvatars composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantInformation composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantVideo composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot ParticipantsColumn composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants1 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants2 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants3 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants4 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants5 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitParticipants6 composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitScreenSharingContent for myself composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot PortraitScreenSharingContent for other participant composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_CallParticipant_a_local_call_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_CallParticipant_a_remote_call_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_CallParticipantsInfoAppBar_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_CallParticipantsInfoOptions_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_CallParticipantsList_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_InviteUserList_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_LocalVideoContent_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_ParticipantAvatars_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_ParticipantInformation_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_ParticipantVideo_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_ParticipantsColumn_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_PortraitParticipants4_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_PortraitParticipants5_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_PortraitParticipants6_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_PortraitScreenSharingContent_for_myself_composable.pngis excluded by!**/*.pngstream-video-android-ui-compose/src/test/snapshots/images/io.getstream.video.android.compose_ParticipantsPortraitTest_snapshot_PortraitScreenSharingContent_for_other_participant_composable.pngis excluded by!**/*.png
📒 Files selected for processing (29)
.github/workflows/android.yml.github/workflows/app-distribute.yml.github/workflows/e2e-build.yml.github/workflows/e2e-test-cron.yml.github/workflows/e2e-test.yml.github/workflows/internal-app-distribute.yml.github/workflows/record-paparazzi.yml.github/workflows/sdk-size-checks.ymlbenchmark/build.gradle.ktsbuild-logic/convention/src/main/kotlin/AndroidLibraryComposeConventionPlugin.ktbuild-logic/convention/src/main/kotlin/io/getstream/video/AndroidCompose.ktbuild-logic/convention/src/main/kotlin/io/getstream/video/DemoFlavor.ktbuild-logic/convention/src/main/kotlin/io/getstream/video/KotlinAndroid.ktbuild.gradle.ktsdemo-app/build.gradle.ktsgradle.propertiesgradle/libs.versions.tomlgradle/wrapper/gradle-wrapper.propertiesmetrics/stream-video-android-metrics/build.gradle.ktssettings.gradle.ktsstream-video-android-core/build.gradle.ktsstream-video-android-core/src/main/kotlin/io/getstream/video/android/core/StreamVideoClient.ktstream-video-android-core/src/main/kotlin/io/getstream/video/android/core/notifications/internal/receivers/GenericCallActionBroadcastReceiver.ktstream-video-android-core/src/test/resources/robolectric.propertiesstream-video-android-ui-compose/api/stream-video-android-ui-compose.apistream-video-android-ui-compose/build.gradle.ktsstream-video-android-ui-compose/src/debug/java/com/android/org/conscrypt/TrustManagerImpl.javastream-video-android-ui-compose/src/test/java/com/android/org/conscrypt/TrustManagerImpl.javastream-video-android-ui-compose/src/test/resources/robolectric.properties
# Conflicts: # .github/workflows/android.yml # .github/workflows/app-distribute.yml # .github/workflows/e2e-build.yml # .github/workflows/e2e-test-cron.yml # .github/workflows/e2e-test.yml # .github/workflows/internal-app-distribute.yml # gradle.properties # stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/notifications/internal/receivers/GenericCallActionBroadcastReceiver.kt
2. Remove snapshot maven url 3. Use sdk37 github ci and dependency
b8f6c15 to
7291166
Compare
|


Goal
Closes #AND-1342
Raise compileSdk/targetSdk from 35 → 37 (Android 17). The installed platform is the stable, minor-versioned android-37.0, which the old toolchain (AGP 8.5.2) cannot even resolve (Failed to find Platform SDK … android-37). API 37 has a hard floor of AGP 9.1, and AGP 9 drops Kotlin 1.9 — so this is necessarily a full toolchain upgrade, not a one-line SDK bump.
Implementation
Toolchain Updates
compileSdk/targetSdkandroid.suppressUnsupportedCompileSdkDependency bumps forced by Gradle 9 / AGP 9
TestExtensionstreamConventions(build-conventions plugin)CommonExtensionstream-log-androidio.getstream.logas AGP 9 gives hard error if two different libraries share same namespaceDependent Stream Repositories
CommonExtension.We need support for Java 21 (the version will be updated soon)Library Specific Updates
Paparazzi
Robolectric
🎨 UI Changes
None
Testing
WIP
Summary by CodeRabbit
New Features
Bug Fixes
Chores