在我的情况下,当我尝试在Android模拟器上运行应用程序时,出现了错误(以及空白屏幕)。我通过执行以下步骤解决了这个问题:
1 - 运行react-native link
,然后重新启动js服务器(
react-native start
),并在模拟器上重新部署应用程序(
react-native run-android
)
2 - 在真实设备或基于GoogleApi系统映像的模拟器上运行。如果您收到
googleApi不受支持的消息
,则请在android studio中添加一些包,并按照下面的链接描述创建一个新设备:
我的应用程序依赖于Google Play服务,但您的设备不支持。联系制造商寻求帮助
我的虚拟设备的工作配置:
![enter image description here](https://istack.dev59.com/6XpYP.webp)
3 - 在清单文件中(android\app\src\main\AndroidManifest.xml)添加Google_API_KEY(如果您没有,则必须创建它):
<!-- make sure it's a child of application -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="Your Google maps API Key Here"/>
因此,我在这里创建并启用了一个特定于我的项目的新API密钥
https://developers.google.com/maps/documentation/android-api/signup#release-cert
- 重启JS服务器,运行
react-native run-android
,然后它就可以工作了:
![enter image description here](https://istack.dev59.com/qofgl.webp)
为了调试,我在单独的终端中使用了adb logcat
命令。
灵感来自于:
https://github.com/airbnb/react-native-maps/blob/master/docs/installation.md
和
https://github.com/airbnb/react-native-maps/issues/118
如果地图仍然无法显示,您可能需要一些样式。我向我的组件添加了一个基本的样式,就像这样:
import React from 'react'
import MapView from 'react-native-maps';
import {
View, StyleSheet
} from 'react-native'
const styles = StyleSheet.create({
container: {
...StyleSheet.absoluteFillObject,
height: 400,
width: 400,
justifyContent: 'flex-end',
alignItems: 'center',
},
map: {
position: 'absolute',
top: 0,
left: 0,
right: 0,
bottom: 0,
width: 300,
height: 300
},
});
export default class MyMap extends React.Component {
render() {
const { region } = this.props;
return (
<View style ={styles.container}>
<MapView
style={styles.map}
region={{
latitude: 44.42,
longitude: 26.10,
latitudeDelta: 0.015,
longitudeDelta: 0.0121
}}
>
</MapView>
</View>
);
}
}
Application.java
文件吗? - martinarroyogetPackages()
函数不会有new MapsPackage()
这一行,因为那很可能是错误的原因,但除此之外,我已经没有更多想法了。问题在于名为“AIRMap”的名称在任何本地模块中都找不到。模块名称可以在getName
函数中找到,就像这里所示:https://github.com/airbnb/react-native-maps/blob/master/android/src/main/java/com/airbnb/android/react/maps/AirMapModule.java#L43 我建议您仔细查看文件,检查是否存在某种名称不匹配的情况。 - martinarroyoreact-native start
修复了它,并关闭了应用程序,然后运行react-native run-android
。 - Ankush Rishi