我的简单 Mapview 应用程序无法通过 Expo React Native 在真实设备上运行。 当我在真实的 Android 设备上通过 ExpoGO 进行测试时,它可以工作。 但是当我通过 EAS 门户生成独立的 APK 文件并在 Android 设备上执行时,它启动并立即消失,(但我仍然可以在后台运行看到它) 当我测试简单的 HelloWorld 应用程序时,这是有效的,所以问题是这个 Mapview 组件。
我也尝试注入这一行
provider={PROVIDER_GOOGLE}
,正如许多论坛上推荐的那样,即使对于Android也不需要accoding文档...但没有帮助。
https://docs.expo.dev/versions/latest/sdk/map-view/
我用这个命令构建这个应用程序:
eas build -p android --profile preview
这是代码:`
应用程序.js
import React from 'react';
import { View, StyleSheet } from 'react-native';
import MapView, { PROVIDER_GOOGLE } from 'react-native-maps';
export default function App() {
return (
<View style={styles.container}>
<MapView
provider={PROVIDER_GOOGLE}
style={styles.map}
initialRegion={{
latitude: 37.78825,
longitude: -122.4324,
latitudeDelta: 0.0922,
longitudeDelta: 0.0421,
}}
/>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
},
map: {
width: '100%',
height: '100%',
},
});
app.json
{
"expo": {
"name": "SimpleMap",
"slug": "SimpleMap",
"version": "1.0.1",
"orientation": "portrait",
"icon": "./assets/icon.png",
"userInterfaceStyle": "light",
"splash": {
"image": "./assets/splash.png",
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"assetBundlePatterns": [
"**/*"
],
"ios": {
"supportsTablet": true
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/adaptive-icon.png",
"backgroundColor": "#ffffff"
},
"package": "com.expo_andrej.SimpleMap"
},
"web": {
"favicon": "./assets/favicon.png"
},
"extra": {
"eas": {
"projectId": "8360acb8-6326-4690-bb67-18cd0ad6e9dc"
}
}
}
}
eas.json
{
"cli": {
"version": ">= 7.1.2"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"distribution": "internal",
"android": {
"buildType": "apk"
}
},
"production": {}
},
"submit": {
"production": {}
}
}
``
好的,通过添加 API KEY 解决了问题
app.json
"package": "com.expo_andrej.SimpleMap",
"config": {
"googleMaps": {
"apiKey": "API-KEY"
}
是的,这样做: 将 API 密钥添加到您的项目中 将您的 API 密钥复制到 android.config.googleMaps.apiKey 字段下的 app.json 中。 在您的代码中,从react-native-maps导入{PROVIDER_GOOGLE}并将属性provider = {PROVIDER_GOOGLE}添加到您的.此属性适用于 Android 和 iOS。 重新构建应用程序二进制文件(如果您的应用程序已上传,则重新提交到 Google Play 商店)。测试配置是否成功的一个简单方法是构建模拟器。 从文档中获取:https://docs.expo.dev/versions/latest/sdk/map-view/#deploying-to-a-standalone-app-on-android