Expo构建的Android应用中Google Maps崩溃,求排查方案
问题描述
我正在开发一款基于React Native/Expo的应用,需要展示Google Map,核心代码如下:
<MapView googleMapsApiKey={process.env.EXPO_GOOGLE_MAPS_API_KEY} style={styles.map} ref={_map} showsUserLocation={true} showsMyLocationButton={true} minZoomLevel={0} maxZoomLevel={20} region={{ ...marker, latitudeDelta: 0.016, longitudeDelta: 0.003, }} camera={{ ...marker, zoom: 0, altitude: 0, pitch: 0, heading: 0, }} >
开发模式下一切正常,但通过Expo构建后,每次打开地图应用都会崩溃。我的构建配置(preview环境)如下:
"preview": { "env": { "EXPO_GOOGLE_MAPS_API_KEY": " [api key string] " }, "developmentClient": false, "android": { "buildType": "apk" } }
请问是否是API密钥错误导致的?我当前使用的是Maps JavaScript API。
解决方案
是的,问题核心就是API密钥类型错误。React Native/Expo的Google Map组件依赖的是Google Maps Android API(安卓端)和Google Maps iOS SDK(iOS端),你现在用的Maps JavaScript API是给网页端设计的,完全不兼容移动端,这就是构建后崩溃的直接原因。
按以下步骤修复:
- 登录Google Cloud控制台,找到你的API密钥,禁用Maps JavaScript API,启用Google Maps Android API和Google Maps iOS SDK
- 修正API密钥的限制配置:
- 安卓端:添加应用的SHA-1指纹和包名(Expo构建后可在构建日志或Expo控制台获取SHA-1)
- iOS端:添加应用的Bundle ID
- 清理构建配置里API密钥前后的多余空格(你的配置里
" [api key string] "有空格,会导致密钥识别失败) - 调整
camera配置里的zoom:0为1-20之间的有效值,极端值可能在生产构建中引发异常 - 重新构建应用
内容的提问来源于stack exchange,提问作者Andrija Vranić
相关产品推荐
相关产品推荐

