Skip to content

[Bug]: Bundled Maps renderer inside Navigation SDK (7.6.1 / 7.7.0) fails to render map tiles on Samsung Galaxy S24 Ultra (SM-S928B) when coexisting with google_maps_flutter #746

Description

@magnoman1981

Is there an existing issue for this?

  • I have searched the existing issues

Description of the bug

When an app depends on both google_maps_flutter and google_navigation_flutter, Gradle fails to build with a "Duplicate class" error (com.google.android.gms.maps.model.Tile, TileOverlay, TileProvider, Marker, Polygon, LatLng, etc.) between play-services-maps:20.0.0 and the classes bundled inside navigation-7.7.0.aar. The only way to build is to globally exclude play-services-maps. Doing so forces every GoogleMap widget in the app onto the Maps renderer bundled inside the Navigation SDK's AAR instead of the standalone modern Maps SDK. On a Samsung Galaxy S24 Ultra (SM-S928B, Snapdragon 8 Gen 3, Android 16), that bundled renderer never renders map tiles - the map surface stays blank/grey permanently, with no exceptions thrown.

Proof this is the bundled renderer, not app code: an isolated minimal Flutter test app with ONLY google_maps_flutter (standalone play-services-maps, no Navigation SDK) renders tiles perfectly on this exact device, including full-screen maps. The same app with google_navigation_flutter added (forcing the exclusion) never renders tiles, in every configuration tested (see Additional Context for the full list of 8 ruled-out workarounds).

iOS Platform

Not verified

Android Platform

Affected

Flutter version

3.44.0

Package version

0.10.0 (also reproduced on 0.9.4)

Native SDK versions

  • I haven't changed the version of the native SDKs

Flutter Doctor Output

[√] Flutter (Channel stable, 3.44.0, on Microsoft Windows [Version 10.0.22631.6199])
• Flutter version 3.44.0 on channel stable
• Framework revision 559ffa3f75 (2026-05-15)
• Engine revision 4c525dac5e
• Dart version 3.12.0
• DevTools version 2.57.0

[√] Windows Version (11 Pro 64-bit, 23H2, 2009)

[√] Android toolchain - develop for Android devices (Android SDK version 36.0.0)
• Android SDK at D:\Android\Sdk
• Platform android-36, build-tools 36.0.0
• Java version OpenJDK Runtime Environment (build 21.0.9+-14787801-b1163.94)
• All Android licenses accepted.

[√] Chrome - develop for the web

[X] Visual Studio - develop Windows apps
(not relevant - Windows desktop target not used for this issue)

[√] Connected device (4 available)
• SM S928B (mobile) - android-arm64 - Android 16 (API 36) <- device where bug reproduces
• Windows (desktop)
• Chrome (web)
• Edge (web)

[√] Network resources

! Doctor found issues in 1 category. (Only the unrelated Visual Studio/Windows-desktop toolchain warning.)

Steps to reproduce

Step 1: Create a fresh Flutter app (flutter create maptest).
Step 2: Add dependencies: google_maps_flutter ^2.17.1, google_navigation_flutter ^0.10.0 (also reproduced with ^0.9.4).
Step 3: In android/app/build.gradle.kts, add the mandatory exclusion below. Without it the build fails immediately with a Duplicate class error on com.google.android.gms.maps.model.Tile, TileOverlay, TileProvider, Marker, Polygon, LatLng, and dozens of other classes, between play-services-maps 20.0.0 and the classes bundled inside navigation-7.7.0.aar:
configurations.all { exclude(group = com.google.android.gms, module = play-services-maps) }
Step 4: Add a Maps API key with Maps SDK for Android and Navigation SDK enabled and billing active.
Step 5: Run the app in release mode (flutter build apk --release plus install) on a Samsung Galaxy S24 Ultra (SM-S928B, Android 16, Snapdragon 8 Gen 3).
Step 6: Show a plain GoogleMap widget (from google_maps_flutter) anywhere in the app.
Step 7: Observe the map surface stays blank/grey, no tiles ever load, no exception thrown.
Step 8: For comparison, remove google_navigation_flutter and the exclusion above from the same project, rebuild, and reinstall on the same device. The exact same GoogleMap widget now renders tiles perfectly. This isolates the failure to the presence of google_navigation_flutter, and the resulting bundled-renderer fallback, specifically.

Expected vs Actual Behavior

Expected: GoogleMap renders map tiles normally, the same as it does on every other Android device tested, and the same as it does in the exact same app with google_navigation_flutter removed.

Actual: The map surface renders as a permanently blank/grey canvas on this device only. No exception is thrown, no error is logged, the failure is silent. flutter build and flutter install both succeed without warnings related to this.

We also tested 8 different workarounds, all still produced the blank/grey tile failure: (a) small 200dp vs full-screen map widget, (b) custom JSON map style vs no style, (c) delaying GoogleMap widget creation by 4 seconds after app launch, (d) fully completing a real navigation session init first via GoogleMapsNavigator terms dialog and initializeNavigationSession before showing the map, (e) using google_navigation_flutter's own GoogleMapsMapView widget instead of google_maps_flutter's GoogleMap, (f) disabling FLAG_SECURE while the map is visible, (g) upgrading google_navigation_flutter 0.9.4 to 0.10.0 with the required AGP and desugar_jdk_libs_nio bumps, (h) manually constructing com.google.android.libraries.navigation.NavigationView as a dummy view in MainActivity.onCreate before Flutter starts, confirmed via logcat to initialize without exception, yet tiles still failed afterward.

No relevant logcat output appears at any point, the map view mounts, the native platform view is created, but no tile-loading errors, network errors, or exceptions are ever logged.

Code Sample

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

void main() {
  runApp(const MaterialApp(home: MapTestPage()));
}

class MapTestPage extends StatelessWidget {
  const MapTestPage({super.key});

  @override  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Map Tile Test')),
      body: GoogleMap(
        initialCameraPosition: const CameraPosition(
          target: LatLng(31.9539, 35.9106),
          zoom: 14,
        ),
      ),
    );
  }
}

pubspec.yaml relevant dependencies:

dependencies:
  flutter:
    sdk: flutter
  google_maps_flutter: ^2.17.1
  google_navigation_flutter: ^0.10.0

android/app/build.gradle.kts, the mandatory exclusion that triggers the bug:

dependencies {
    coreLibraryDesugaring(com.android.tools:desugar_jdk_libs_nio:2.1.5)
}

configurations.all {
    exclude(group = com.google.android.gms, module = play-services-maps)
}

Additional Context

Device: Samsung Galaxy S24 Ultra, model SM-S928B, Snapdragon 8 Gen 3, Android 16 (One UI, latest).
The issue is 100 percent reproducible on this device and has not been observed on other Android devices we tested during this investigation.
useAndroidViewSurface = true (Hybrid Composition, via GoogleMapsFlutterAndroid) was already enabled. This is the known fix for flutter/flutter issue 177634, showing only the Google logo with no tiles, and did not affect this issue either way.
We suspect the Maps renderer classes bundled inside com.google.android.libraries.navigation.navigation (both 7.6.1 and 7.7.0 tested) have a device/GPU-specific rendering bug on Snapdragon 8 Gen 3, independent of the Flutter plugin layer, since the failure reproduces identically through google_navigation_flutter's own native GoogleMapsMapView widget, not just through google_maps_flutter.
We are open to providing a minimal reproduction repository, additional device logs, or testing further diagnostic builds if that would help narrow this down.

Metadata

Metadata

Assignees

Labels

priority: p2Moderately-important priority. Fix may not be included in next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions