Javascript 在android上使用地理位置或MapView来应对本地expo项目错误

Javascript 在android上使用地理位置或MapView来应对本地expo项目错误,javascript,android,react-native,expo,Javascript,Android,React Native,Expo,因此: 我在世博会上做了一个本地项目。它有两个视图,airbnb mapView和类似的东西。它以前是纯react-native项目(在创建react-native应用程序之前制作),最近我把它搬到了expo。几乎每件事都很顺利。对于iOS来说,向世博会的转型是完美的,在这方面,一切都按照预期进行。但当我尝试在android手机上启动应用程序时,我遇到了一个非常奇怪的错误 尝试在空对象引用上调用接口方法“boolean abi20_0_0.com.facebook.react.bridge.R

因此:

我在世博会上做了一个本地项目。它有两个视图,airbnb mapView和类似的东西。它以前是纯react-native项目(在创建react-native应用程序之前制作),最近我把它搬到了expo。几乎每件事都很顺利。对于iOS来说,向世博会的转型是完美的,在这方面,一切都按照预期进行。但当我尝试在android手机上启动应用程序时,我遇到了一个非常奇怪的错误

尝试在空对象引用上调用接口方法“boolean abi20_0_0.com.facebook.react.bridge.ReadableMap.hasKey(java.lang.String)”

我认为这与找到位置的实际过程有关,而不是地图视图,但我唯一改变的是:

从“react native maps”导入MapView
从“expo”导入{MapView}

这是用于查找位置的实际代码:

componentDidMount() {
    navigator.geolocation.getCurrentPosition(
            (position) => {
            this.setState({
                    region: {
                        latitude: position.coords.latitude,
                        longitude: position.coords.longitude,
                        latitudeDelta: LATITUDE_DELTA,
                        longitudeDelta: LONGITUDE_DELTA
                    },
                    lat : position.coords.latitude,
                    lon : position.coords.longitude,
                    cords : {
                          latitude: position.coords.latitude,
                        longitude: position.coords.longitude,
                }
                });
            },
            (error) => alert(error.message),
        {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
    );

    this.watchID = navigator.geolocation.watchPosition(
        (position) => {
            this.setState({
                    cords : {
                        latitude: position.coords.latitude,
                        longitude: position.coords.longitude,
                    },
                    lat : position.coords.latitude,
                    lon : position.coords.longitude,
                });
        });
 }
它在没有expo的旧android版本上仍能正常工作,在用expo制作的新iOS版本上也能正常工作

package.json依赖性

"dependencies": {
    "expo": "^20.0.0",
    "firebase": "^4.3.0",
    "react": "16.0.0-alpha.12",
    "react-native": "https://github.com/expo/react-native/archive/sdk-20.0.0.tar.gz",
    "react-navigation": "^1.0.0-beta.11"
  }
我在这个完全相同的问题上提出了另一个问题:
他得出了与我相同的结论,但关于他的问题几乎没有什么信息,也没有答案/评论,所以我决定提出我自己的问题。

在Android上将一个空选项对象作为第三个参数传递给
watchPosition


你试过真正的设备吗?不是emulator?我试过使用2个真实设备和emulator。仅在iOS上使用真实设备。每个设备/仿真器上都有独立版和expo版。没有expo的旧版本对每一个都有效,我很早以前就解决了这个问题。我可以证实这有帮助。出现错误是因为WatchPositionAPI在不同的RN版本之间发生了更改。接受你的正确答案