Android中google_maps_flutter最新渲染器初始化异常问题排查
Google Maps Flutter Android端最新渲染器初始化问题
我在排查应用初始化时遇到以下警告,怀疑和Google Maps的legacy渲染器有关:
W/DynamiteModule(11578): Local module descriptor class for com.google.android.gms.googlecertificates not found. I/DynamiteModule(11578): Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:7 I/DynamiteModule(11578): Selected remote version of com.google.android.gms.googlecertificates, version >= 7 W/MobStoreFlagStore(11578): Unable to update local snapshot for com.google.android.libraries.consentverifier#com.xxxxx , may result in stale flags. W/MobStoreFlagStore(11578): java.util.concurrent.ExecutionException: java.lang.SecurityException: GoogleCertificatesRslt: not allowed: pkg=com.xxxxx
根据Google官方问题追踪的信息,legacy渲染器的问题可能导致上述输出,且官方表示目前优先开发Latest渲染器,legacy的问题处理周期较长。
已尝试的解决步骤
- 确认已满足Latest渲染器的要求:
- Android 5.0(API level 21)及以上版本
- 设备存储空间≥2GB
- Google Play services版本≥21.39.14
- 在所有GoogleMaps实例初始化前,执行了Latest渲染器的初始化代码:
pubspec.yaml配置:import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart'; import 'package:google_maps_flutter_android/google_maps_flutter_android.dart'; [...] Future<void> initMapsRenderer() async { // Initialization for custom Android map renderer. AndroidMapRenderer mapRenderer = AndroidMapRenderer.platformDefault; final GoogleMapsFlutterPlatform mapsImplementation = GoogleMapsFlutterPlatform.instance; if (mapsImplementation is GoogleMapsFlutterAndroid) { WidgetsFlutterBinding.ensureInitialized(); mapRenderer = await mapsImplementation.initializeWithRenderer(AndroidMapRenderer.latest); } }google_maps_flutter: ^2.5.0 - 控制台输出显示:
D/MapsInitializer( 1249): preferredRenderer: LATEST I/Google Maps Android API(11578): Google Play services package version: 233717063 I/Google Maps Android API(11578): Google Play services maps renderer version(legacy): 203115000 D/MapsInitializer(11578): loadedRenderer: LEGACY
2023年11月2日更新
在两台真机上测试相同代码,结果存在设备差异:
Motorola E20
I/Google Maps Android API(22922): Google Play services client version: 12451000 I/Google Maps Android API(22922): Google Play services package version: 234212063 I/Google Maps Android API(22922): Google Play services maps renderer version(legacy): 203115000 D/MapsInitializer(22922): loadedRenderer: LEGACY
Samsung S22
I/Google Android Maps SDK(27745): Google Play services client version: 12451000 I/Google Android Maps SDK(27745): Google Play services package version: 234313039 I/Google Android Maps SDK(27745): Google Play services maps renderer version(maps_core): 233610101 D/MapsInitializer(27745): loadedRenderer: LATEST
两台设备的Google Play services均已更新至最新版本,但输出显示服务包版本不同,且存在Google Maps Android API和Google Maps Android SDK的差异。
请问仍加载legacy渲染器的原因可能是什么?有什么排查思路吗?
内容的提问来源于stack exchange,提问作者rph
相关产品推荐
相关产品推荐

