Skip to content

Android min sdk 24 part 1 - #170882

Merged
auto-submit[bot] merged 21 commits into
flutter:masterfrom
reidbaker:i170807-min-sdk-24-part-1
Jul 2, 2025
Merged

auto-submit[bot] merged 21 commits into
flutter:masterfrom
reidbaker:i170807-min-sdk-24-part-1

Conversation

@reidbaker

@reidbaker reidbaker commented Jun 19, 2025 •

Copy link
Copy Markdown
Contributor
  • bump template version, update migration code to handle api 21-23 and expand it to cover multiple min api level definitions
  • bump add to app project to minimum api level 24
  • PathUtilsTest converted to using config, removed test code that branched on versions older than 24
  • Update additional build.gradle files to have minsdk 24 and documenation

Related to #170807

G3 cls

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • I followed the [breaking change policy] and added [Data Driven Fixes] where supported.
  • All existing and new tests are passing.

@reidbaker
reidbaker marked this pull request as draft June 19, 2025 18:04
@github-actions github-actions Bot added platform-android Android applications specifically tool Affects the "flutter" command-line tool. See also t: labels. engine flutter/engine related. See also e: labels. labels Jun 19, 2025
@flutter-dashboard

Copy link
Copy Markdown

This pull request has been changed to a draft. The currently pending flutter-gold status will not be able to resolve until a new commit is pushed or the change is marked ready for review again.

For more guidance, visit Writing a golden file test for package:flutter.

Reviewers: Read the Tree Hygiene page and make sure this patch meets those guidelines before LGTMing.

@reidbaker
reidbaker requested review from a team, gmackall and jesswrd and removed request for a team, gmackall and jesswrd June 19, 2025 19:14
@reidbaker

reidbaker commented Jun 24, 2025 •

Copy link
Copy Markdown
Contributor Author

Desugar is the last test that is still failing. I tweaked the error version in the extension so I could pick lower min apk versions and the test passes on when the min sdk is 21, 22 or 23 and fails at 24.

Additionally I ruled out that this might be a change from the google maps side by running the test locally and checking the lock file. Which are recet published versions. Additionally this test is passing on master on the dashboard without flakes.

  google_maps_flutter:
    dependency: "direct main"
    description:
      name: google_maps_flutter
      sha256: e1805e5a5885bd14a1c407c59229f478af169bf4d04388586b19f53145a5db3a
      url: "https://pub.dev"
    source: hosted
    version: "2.12.3"
  google_maps_flutter_android:
    dependency: transitive
    description:
      name: google_maps_flutter_android
      sha256: ab83128296fbeaa52e8f2b3bf53bcd895e64778edddcdc07bc8f33f4ea78076c
      url: "https://pub.dev"
    source: hosted
    version: "2.16.1"

#72185 is the original bug this test was meant to protect against regression.
Here is the pr #73758 (comment) "If an app has plugin, the app doesn't depend on the embedding directly. Instead, the app sets an API dependency on the plugins, and the plugins set an API dependency on the embedding"

This makes me think the way we validate is at issue but we have not regressed.

@reidbaker

Copy link
Copy Markdown
Contributor Author

GoogleMapController API 24 methods

io.flutter.plugins.googlemaps.GoogleMapController <init>(int,android.content.Context,io.flutter.plugin.common.BinaryMessenger,io.flutter.plugins.googlemaps.LifecycleProvider,com.google.android.gms.maps.GoogleMapOptions),
io.flutter.plugins.googlemaps.GoogleMapController <init>(int,android.content.Context,io.flutter.plugin.common.BinaryMessenger,io.flutter.plugins.googlemaps.Messages$MapsCallbackApi,io.flutter.plugins.googlemaps.LifecycleProvider,com.google.android.gms.maps.GoogleMapOptions,io.flutter.plugins.googlemaps.ClusterManagersController,io.flutter.plugins.googlemaps.MarkersController,io.flutter.plugins.googlemaps.PolygonsController,io.flutter.plugins.googlemaps.PolylinesController,io.flutter.plugins.googlemaps.CirclesController,io.flutter.plugins.googlemaps.HeatmapsController,io.flutter.plugins.googlemaps.TileOverlaysController,io.flutter.plugins.googlemaps.GroundOverlaysController),
io.flutter.plugins.googlemaps.GoogleMapController int checkSelfPermission(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void destroyMapViewIfNecessary(),
io.flutter.plugins.googlemaps.GoogleMapController android.view.TextureView findTextureView(android.view.ViewGroup),
io.flutter.plugins.googlemaps.GoogleMapController boolean hasLocationPermission(),
io.flutter.plugins.googlemaps.GoogleMapController void installInvalidator(),
io.flutter.plugins.googlemaps.GoogleMapController void lambda$takeSnapshot$0(io.flutter.plugins.googlemaps.Messages$Result,android.graphics.Bitmap),
io.flutter.plugins.googlemaps.GoogleMapController void setGoogleMapListener(io.flutter.plugins.googlemaps.GoogleMapListener),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialCircles(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialClusterManagers(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialGroundOverlays(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialHeatmaps(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialMarkers(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialPolygons(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialPolylines(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialTileOverlays(),
io.flutter.plugins.googlemaps.GoogleMapController boolean updateMapStyle(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void updateMyLocationSettings(),
io.flutter.plugins.googlemaps.GoogleMapController void animateCamera(io.flutter.plugins.googlemaps.Messages$PlatformCameraUpdate,java.lang.Long),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areBuildingsEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areRotateGesturesEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areScrollGesturesEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areTiltGesturesEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areZoomControlsEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areZoomGesturesEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController void clearTileCache(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean didLastStyleSucceed(),
io.flutter.plugins.googlemaps.GoogleMapController void dispose(),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformCameraPosition getCameraPosition(),
io.flutter.plugins.googlemaps.GoogleMapController java.util.List getClusters(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformGroundOverlay getGroundOverlayInfo(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformLatLng getLatLng(io.flutter.plugins.googlemaps.Messages$PlatformPoint),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformPoint getScreenCoordinate(io.flutter.plugins.googlemaps.Messages$PlatformLatLng),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformTileLayer getTileOverlayInfo(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController android.view.View getView(),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformLatLngBounds getVisibleRegion(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Double getZoomLevel(),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformZoomRange getZoomRange(),
io.flutter.plugins.googlemaps.GoogleMapController void hideInfoWindow(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void init(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isCompassEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isInfoWindowShown(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isLiteModeEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isMapToolbarEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isMyLocationButtonEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isTrafficEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController void moveCamera(io.flutter.plugins.googlemaps.Messages$PlatformCameraUpdate),
io.flutter.plugins.googlemaps.GoogleMapController void onCameraIdle(),
io.flutter.plugins.googlemaps.GoogleMapController void onCameraMove(),
io.flutter.plugins.googlemaps.GoogleMapController void onCameraMoveStarted(int),
io.flutter.plugins.googlemaps.GoogleMapController void onCircleClick(com.google.android.gms.maps.model.Circle),
io.flutter.plugins.googlemaps.GoogleMapController boolean onClusterItemClick(com.google.maps.android.clustering.ClusterItem),
io.flutter.plugins.googlemaps.GoogleMapController boolean onClusterItemClick(io.flutter.plugins.googlemaps.MarkerBuilder),
io.flutter.plugins.googlemaps.GoogleMapController void onClusterItemRendered(com.google.maps.android.clustering.ClusterItem,com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onClusterItemRendered(io.flutter.plugins.googlemaps.MarkerBuilder,com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onCreate(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onDestroy(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onGroundOverlayClick(com.google.android.gms.maps.model.GroundOverlay),
io.flutter.plugins.googlemaps.GoogleMapController void onInfoWindowClick(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onMapClick(com.google.android.gms.maps.model.LatLng),
io.flutter.plugins.googlemaps.GoogleMapController void onMapLongClick(com.google.android.gms.maps.model.LatLng),
io.flutter.plugins.googlemaps.GoogleMapController void onMapReady(com.google.android.gms.maps.GoogleMap),
io.flutter.plugins.googlemaps.GoogleMapController boolean onMarkerClick(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onMarkerDrag(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onMarkerDragEnd(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onMarkerDragStart(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onPause(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onPolygonClick(com.google.android.gms.maps.model.Polygon),
io.flutter.plugins.googlemaps.GoogleMapController void onPolylineClick(com.google.android.gms.maps.model.Polyline),
io.flutter.plugins.googlemaps.GoogleMapController void onRestoreInstanceState(android.os.Bundle),
io.flutter.plugins.googlemaps.GoogleMapController void onResume(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onSaveInstanceState(android.os.Bundle),
io.flutter.plugins.googlemaps.GoogleMapController void onStart(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onStop(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void setBuildingsEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setCameraTargetBounds(com.google.android.gms.maps.model.LatLngBounds),
io.flutter.plugins.googlemaps.GoogleMapController void setClusterItemClickListener(com.google.maps.android.clustering.ClusterManager$OnClusterItemClickListener),
io.flutter.plugins.googlemaps.GoogleMapController void setClusterItemRenderedListener(io.flutter.plugins.googlemaps.ClusterManagersController$OnClusterItemRendered),
io.flutter.plugins.googlemaps.GoogleMapController void setCompassEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setIndoorEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialCircles(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialClusterManagers(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialGroundOverlays(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialHeatmaps(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialMarkers(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialPadding(float,float,float,float),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialPolygons(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialPolylines(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialTileOverlays(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setLiteModeEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setMapStyle(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void setMapToolbarEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setMapType(int),
io.flutter.plugins.googlemaps.GoogleMapController void setMarkerCollectionListener(io.flutter.plugins.googlemaps.GoogleMapListener),
io.flutter.plugins.googlemaps.GoogleMapController void setMinMaxZoomPreference(java.lang.Float,java.lang.Float),
io.flutter.plugins.googlemaps.GoogleMapController void setMyLocationButtonEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setMyLocationEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setPadding(float,float,float,float),
io.flutter.plugins.googlemaps.GoogleMapController void setRotateGesturesEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setScrollGesturesEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean setStyle(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void setTiltGesturesEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setTrackCameraPosition(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setTrafficEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setView(com.google.android.gms.maps.MapView),
io.flutter.plugins.googlemaps.GoogleMapController void setZoomControlsEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setZoomGesturesEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void showInfoWindow(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void takeSnapshot(io.flutter.plugins.googlemaps.Messages$Result),
io.flutter.plugins.googlemaps.GoogleMapController void updateCircles(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateClusterManagers(java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateGroundOverlays(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateHeatmaps(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateMapConfiguration(io.flutter.plugins.googlemaps.Messages$PlatformMapConfiguration),
io.flutter.plugins.googlemaps.GoogleMapController void updateMarkers(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updatePolygons(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updatePolylines(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateTileOverlays(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void waitForMap(io.flutter.plugins.googlemaps.Messages$VoidResult),

Api 23 methods

io.flutter.plugins.googlemaps.GoogleMapController <init>(int,android.content.Context,io.flutter.plugin.common.BinaryMessenger,io.flutter.plugins.googlemaps.LifecycleProvider,com.google.android.gms.maps.GoogleMapOptions),
io.flutter.plugins.googlemaps.GoogleMapController <init>(int,android.content.Context,io.flutter.plugin.common.BinaryMessenger,io.flutter.plugins.googlemaps.Messages$MapsCallbackApi,io.flutter.plugins.googlemaps.LifecycleProvider,com.google.android.gms.maps.GoogleMapOptions,io.flutter.plugins.googlemaps.ClusterManagersController,io.flutter.plugins.googlemaps.MarkersController,io.flutter.plugins.googlemaps.PolygonsController,io.flutter.plugins.googlemaps.PolylinesController,io.flutter.plugins.googlemaps.CirclesController,io.flutter.plugins.googlemaps.HeatmapsController,io.flutter.plugins.googlemaps.TileOverlaysController,io.flutter.plugins.googlemaps.GroundOverlaysController),
io.flutter.plugins.googlemaps.GoogleMapController int checkSelfPermission(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void destroyMapViewIfNecessary(),
io.flutter.plugins.googlemaps.GoogleMapController android.view.TextureView findTextureView(android.view.ViewGroup),
io.flutter.plugins.googlemaps.GoogleMapController boolean hasLocationPermission(),
io.flutter.plugins.googlemaps.GoogleMapController void installInvalidator(),
io.flutter.plugins.googlemaps.GoogleMapController void lambda$takeSnapshot$0(io.flutter.plugins.googlemaps.Messages$Result,android.graphics.Bitmap),
io.flutter.plugins.googlemaps.GoogleMapController void setGoogleMapListener(io.flutter.plugins.googlemaps.GoogleMapListener),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialCircles(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialClusterManagers(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialGroundOverlays(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialHeatmaps(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialMarkers(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialPolygons(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialPolylines(),
io.flutter.plugins.googlemaps.GoogleMapController void updateInitialTileOverlays(),
io.flutter.plugins.googlemaps.GoogleMapController boolean updateMapStyle(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void updateMyLocationSettings(),
io.flutter.plugins.googlemaps.GoogleMapController void animateCamera(io.flutter.plugins.googlemaps.Messages$PlatformCameraUpdate,java.lang.Long),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areBuildingsEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areRotateGesturesEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areScrollGesturesEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areTiltGesturesEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areZoomControlsEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean areZoomGesturesEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController void clearTileCache(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean didLastStyleSucceed(),
io.flutter.plugins.googlemaps.GoogleMapController void dispose(),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformCameraPosition getCameraPosition(),
io.flutter.plugins.googlemaps.GoogleMapController java.util.List getClusters(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformGroundOverlay getGroundOverlayInfo(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformLatLng getLatLng(io.flutter.plugins.googlemaps.Messages$PlatformPoint),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformPoint getScreenCoordinate(io.flutter.plugins.googlemaps.Messages$PlatformLatLng),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformTileLayer getTileOverlayInfo(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController android.view.View getView(),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformLatLngBounds getVisibleRegion(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Double getZoomLevel(),
io.flutter.plugins.googlemaps.GoogleMapController io.flutter.plugins.googlemaps.Messages$PlatformZoomRange getZoomRange(),
io.flutter.plugins.googlemaps.GoogleMapController void hideInfoWindow(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void init(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isCompassEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isInfoWindowShown(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isLiteModeEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isMapToolbarEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isMyLocationButtonEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean isTrafficEnabled(),
io.flutter.plugins.googlemaps.GoogleMapController void moveCamera(io.flutter.plugins.googlemaps.Messages$PlatformCameraUpdate),
io.flutter.plugins.googlemaps.GoogleMapController void onCameraIdle(),
io.flutter.plugins.googlemaps.GoogleMapController void onCameraMove(),
io.flutter.plugins.googlemaps.GoogleMapController void onCameraMoveStarted(int),
io.flutter.plugins.googlemaps.GoogleMapController void onCircleClick(com.google.android.gms.maps.model.Circle),
io.flutter.plugins.googlemaps.GoogleMapController boolean onClusterItemClick(com.google.maps.android.clustering.ClusterItem),
io.flutter.plugins.googlemaps.GoogleMapController boolean onClusterItemClick(io.flutter.plugins.googlemaps.MarkerBuilder),
io.flutter.plugins.googlemaps.GoogleMapController void onClusterItemRendered(com.google.maps.android.clustering.ClusterItem,com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onClusterItemRendered(io.flutter.plugins.googlemaps.MarkerBuilder,com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onCreate(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onDestroy(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onFlutterViewAttached(android.view.View),
io.flutter.plugins.googlemaps.GoogleMapController void onFlutterViewDetached(),
io.flutter.plugins.googlemaps.GoogleMapController void onGroundOverlayClick(com.google.android.gms.maps.model.GroundOverlay),
io.flutter.plugins.googlemaps.GoogleMapController void onInfoWindowClick(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onInputConnectionLocked(),
io.flutter.plugins.googlemaps.GoogleMapController void onInputConnectionUnlocked(),
io.flutter.plugins.googlemaps.GoogleMapController void onMapClick(com.google.android.gms.maps.model.LatLng),
io.flutter.plugins.googlemaps.GoogleMapController void onMapLongClick(com.google.android.gms.maps.model.LatLng),
io.flutter.plugins.googlemaps.GoogleMapController void onMapReady(com.google.android.gms.maps.GoogleMap),
io.flutter.plugins.googlemaps.GoogleMapController boolean onMarkerClick(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onMarkerDrag(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onMarkerDragEnd(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onMarkerDragStart(com.google.android.gms.maps.model.Marker),
io.flutter.plugins.googlemaps.GoogleMapController void onPause(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onPolygonClick(com.google.android.gms.maps.model.Polygon),
io.flutter.plugins.googlemaps.GoogleMapController void onPolylineClick(com.google.android.gms.maps.model.Polyline),
io.flutter.plugins.googlemaps.GoogleMapController void onRestoreInstanceState(android.os.Bundle),
io.flutter.plugins.googlemaps.GoogleMapController void onResume(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onSaveInstanceState(android.os.Bundle),
io.flutter.plugins.googlemaps.GoogleMapController void onStart(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void onStop(androidx.lifecycle.LifecycleOwner),
io.flutter.plugins.googlemaps.GoogleMapController void setBuildingsEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setCameraTargetBounds(com.google.android.gms.maps.model.LatLngBounds),
io.flutter.plugins.googlemaps.GoogleMapController void setClusterItemClickListener(com.google.maps.android.clustering.ClusterManager$OnClusterItemClickListener),
io.flutter.plugins.googlemaps.GoogleMapController void setClusterItemRenderedListener(io.flutter.plugins.googlemaps.ClusterManagersController$OnClusterItemRendered),
io.flutter.plugins.googlemaps.GoogleMapController void setCompassEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setIndoorEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialCircles(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialClusterManagers(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialGroundOverlays(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialHeatmaps(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialMarkers(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialPadding(float,float,float,float),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialPolygons(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialPolylines(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setInitialTileOverlays(java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void setLiteModeEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setMapStyle(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void setMapToolbarEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setMapType(int),
io.flutter.plugins.googlemaps.GoogleMapController void setMarkerCollectionListener(io.flutter.plugins.googlemaps.GoogleMapListener),
io.flutter.plugins.googlemaps.GoogleMapController void setMinMaxZoomPreference(java.lang.Float,java.lang.Float),
io.flutter.plugins.googlemaps.GoogleMapController void setMyLocationButtonEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setMyLocationEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setPadding(float,float,float,float),
io.flutter.plugins.googlemaps.GoogleMapController void setRotateGesturesEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setScrollGesturesEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController java.lang.Boolean setStyle(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void setTiltGesturesEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setTrackCameraPosition(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setTrafficEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setView(com.google.android.gms.maps.MapView),
io.flutter.plugins.googlemaps.GoogleMapController void setZoomControlsEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void setZoomGesturesEnabled(boolean),
io.flutter.plugins.googlemaps.GoogleMapController void showInfoWindow(java.lang.String),
io.flutter.plugins.googlemaps.GoogleMapController void takeSnapshot(io.flutter.plugins.googlemaps.Messages$Result),
io.flutter.plugins.googlemaps.GoogleMapController void updateCircles(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateClusterManagers(java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateGroundOverlays(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateHeatmaps(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateMapConfiguration(io.flutter.plugins.googlemaps.Messages$PlatformMapConfiguration),
io.flutter.plugins.googlemaps.GoogleMapController void updateMarkers(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updatePolygons(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updatePolylines(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void updateTileOverlays(java.util.List,java.util.List,java.util.List),
io.flutter.plugins.googlemaps.GoogleMapController void waitForMap(io.flutter.plugins.googlemaps.Messages$VoidResult),

@reidbaker

Copy link
Copy Markdown
Contributor Author

The only difference in the above are the following lines are missing from min api 24.
< io.flutter.plugins.googlemaps.GoogleMapController void onFlutterViewAttached(android.view.View),
< io.flutter.plugins.googlemaps.GoogleMapController void onFlutterViewDetached(),
< io.flutter.plugins.googlemaps.GoogleMapController void onInputConnectionLocked(),
< io.flutter.plugins.googlemaps.GoogleMapController void onInputConnectionUnlocked(),

@reidbaker

reidbaker commented Jun 24, 2025 •

Copy link
Copy Markdown
Contributor Author

Current theory is that onFlutterViewAttached and onFlutterViewDetached are not actually used in the google maps plugin code (or any plugins that we currently have) and what I am seeing is some form of code stripping change.

If that is the case than any method that is used from the framework in the plugin can verify the change in behavior without necessarily relating to desugaring (aka using higher java apis than what they are compiled with). Further evidence in support i that this test ran successfully as we bumped java from 8 to 11 then 17 and now 21 without issue.

engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 4, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 4, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 4, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 5, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 6, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 6, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 6, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 7, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 7, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Jul 7, 2025
mboetger pushed a commit to mboetger/flutter that referenced this pull request Jul 21, 2025
- **bump template version, update migration code to handle api 21-23 and
expand it to cover multiple min api level definitions**
- **bump add to app project to minimum api level 24**
- **PathUtilsTest converted to using config, removed test code that
branched on versions older than 24**
- **Update additional build.gradle files to have minsdk 24 and
documenation**

Related to flutter#170807

G3 cls 
- espresso https://critique.corp.google.com/cl/776592881
- integration tests cl/778034198
- removal of pre api 23 samples tests cl/777652802


## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

---------

Co-authored-by: Gray Mackall <[email protected]>
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 16, 2025
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
- **bump template version, update migration code to handle api 21-23 and
expand it to cover multiple min api level definitions**
- **bump add to app project to minimum api level 24**
- **PathUtilsTest converted to using config, removed test code that
branched on versions older than 24**
- **Update additional build.gradle files to have minsdk 24 and
documenation**

Related to flutter#170807

G3 cls 
- espresso https://critique.corp.google.com/cl/776592881
- integration tests cl/778034198
- removal of pre api 23 samples tests cl/777652802


## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

---------

Co-authored-by: Gray Mackall <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

engine flutter/engine related. See also e: labels. platform-android Android applications specifically team-android Owned by Android platform team tool Affects the "flutter" command-line tool. See also t: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants