You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2023年8月后仅Android 7设备出现Google Map崩溃问题

问题描述

2023年8月10日之后未修改任何代码,但Firebase Crashlytics报告显示所有应用生产版本突然出现以下崩溃,且100%发生在Android 7设备上:

Fatal Exception: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
       at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6937)
       at android.view.ViewRootImpl.invalidateChildInParent(ViewRootImpl.java:1118)
       at android.view.ViewGroup.invalidateChild(ViewGroup.java:5205)
       at android.view.View.invalidateInternal(View.java:13686)
       at android.view.View.invalidate(View.java:13650)
       at android.view.View.invalidate(View.java:13634)
       at com.google.maps.api.android.lib6.lite.s.l(:com.google.android.gms.policy_maps_core_dynamite@231710108@231710104031.542928491.542928491)
       at com.google.maps.api.android.lib6.lite.n.d(:com.google.android.gms.policy_maps_core_dynamite@231710108@231710104031.542928491.542928491:2)
       at com.google.maps.api.android.lib6.impl.ei.run(:com.google.android.gms.policy_maps_core_dynamite@231710108@231710104031.542928491.542928491:3)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
       at java.lang.Thread.run(Thread.java:761)

怀疑是Google Maps API自动更新导致的问题,寻求其他开发者的遇到情况及解决方案。


解决方案

1. 锁定Google Maps依赖版本

这是最直接的临时修复方案:将com.google.android.gms:play-services-maps依赖锁定到23.0.0或更早的稳定版本(崩溃日志中的版本为23.1.7,该版本存在线程问题)。

示例Gradle配置:

dependencies {
    implementation 'com.google.android.gms:play-services-maps:23.0.0'
}

2. 升级至修复后的版本

Google在后续版本中修复了该线程异常问题,直接升级到23.2.0及以上版本的play-services-maps即可解决崩溃:

dependencies {
    implementation 'com.google.android.gms:play-services-maps:23.2.0'
}

3. 临时应急Workaround(若无法立刻更新依赖)

如果暂时无法调整依赖版本,可在代码中确保所有与Google Maps相关的视图操作都在UI线程执行,比如使用runOnUiThread包裹可能触发地图视图更新的逻辑:

runOnUiThread(() -> {
    // 地图相关的初始化/更新操作
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 12));
});

补充说明

该问题在2023年8月中旬集中爆发,是Google Maps Lite SDK的动态更新组件(policy_maps_core_dynamite)内部出现的线程错误——SDK在后台线程中尝试更新UI视图,违反了Android的线程规则。当时大量开发者反馈了相同问题,Google后续通过更新SDK版本完成了修复。

内容的提问来源于stack exchange,提问作者Allen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 09:43:39