首页 > 解决方案 > 当 react-native-maps 和 react-native-geolocation-service 模块一起安装时应用程序崩溃

问题描述

漏洞

react-native-maps 不适用于同一项目中的 react-native-geolocation-service 模块。应用程序在加载时崩溃。从项目中删除 react-native-geolocation-service 模块后,该应用程序运行正常。

需要 react-native-geolocation-service 来获取用户位置,因为它比 javascript navigator 对象更准确。

https://bitbucket.org/mihailiviu/react-native-maps-geolocation/src/master/

环境信息

系统:

操作系统:Windows 10 10.0.18362 CPU:(8) x64 Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz 内存:7.14 GB / 15.95 GB 二进制文件:节点:12.15.0 - C:\Program Files\nodejs \node.EXE npm:6.13.4 - C:\Program Files\nodejs\npm.CMD SDK:Android SDK:API 级别:23、24、25、26、27、28 构建工具:23.0.1、23.0.2 , 23.0.3, 26.0.1, 26.0.3, 27.0.3, 28.0.3 系统映像:android-23 | Google API 英特尔 x86 Atom_64、android-27 | Google Play 英特尔 x86 Atom,android-28 | Google Play 英特尔 x86 Atom,android-29 | Google Play Intel x86 Atom IDE:Android Studio:版本 3.5.0.0 AI-191.8026.42.35.5791312 npmPackages:react:16.9.0 => 16.9.0 react-native:0.61.5 => 0.61.5

库版本

react-native-maps => 0.26.1 react-native-geolocation-service => ^4.0.0

重现步骤

下面提供的示例应用程序显示 2 个模块无法按预期协同工作:

下载下面的示例应用程序,安装依赖项,然后尝试运行它。 https://bitbucket.org/mihailiviu/react-native-maps-geolocation/src/master/

npm 安装 npm 运行安卓

描述你期望发生的事情:

应用程序将在加载时崩溃。可重现的示例代码 https://bitbucket.org/mihailiviu/react-native-maps-geolocation/src/master/

编辑:

这是我从 logkitty 中提取的:

$ react-native log-android
info Starting logkitty
[13:36:06] D | ReactNative ▶︎ ReactInstanceManager.ctor()

[13:36:07] D | ReactNative ▶︎ ReactInstanceManager.createReactContextInBackground()
                           └ ReactInstanceManager.recreateReactContextInBackgroundInner()

[13:36:12] D | ReactNative ▶︎ ReactInstanceManager.onJSBundleLoadedFromServer()
                           └ ReactInstanceManager.recreateReactContextInBackground()

[13:36:12] D | ReactNative ▶︎ ReactInstanceManager.runCreateReactContextOnNewThread()

[13:36:12] D | ReactNative ▶︎ ReactInstanceManager.createReactContext()

[13:36:12] D | ReactNative ▶︎ Initializing React Xplat Bridge.

[13:36:12] D | ReactNative ▶︎ Initializing React Xplat Bridge before initializeBridge

[13:36:12] D | ReactNative ▶︎ Initializing React Xplat Bridge after initializeBridge

[13:36:12] D | ReactNative ▶︎ CatalystInstanceImpl.runJSBundle()

[13:36:12] D | ReactNative ▶︎ ReactInstanceManager.setupReactContext()
                           └ CatalystInstanceImpl.initialize()

[13:36:12] D | ReactNative ▶︎ ReactInstanceManager.attachRootViewToInstance()

[13:36:13] D | ReactNative ▶︎ ReactInstanceManager.detachViewFromInstance()

[13:36:21] D | ReactNative ▶︎ ReactInstanceManager.ctor()

[13:36:21] D | ReactNative ▶︎ ReactInstanceManager.createReactContextInBackground()
                           └ ReactInstanceManager.recreateReactContextInBackgroundInner()

[13:36:26] D | ReactNative ▶︎ ReactInstanceManager.onJSBundleLoadedFromServer()

[13:36:26] D | ReactNative ▶︎ ReactInstanceManager.recreateReactContextInBackground()
                           └ ReactInstanceManager.runCreateReactContextOnNewThread()

[13:36:26] D | ReactNative ▶︎ ReactInstanceManager.createReactContext()

[13:36:26] D | ReactNative ▶︎ Initializing React Xplat Bridge.

[13:36:26] D | ReactNative ▶︎ Initializing React Xplat Bridge before initializeBridge

[13:36:26] D | ReactNative ▶︎ Initializing React Xplat Bridge after initializeBridge

[13:36:26] D | ReactNative ▶︎ CatalystInstanceImpl.runJSBundle()

[13:36:26] D | ReactNative ▶︎ ReactInstanceManager.setupReactContext()

[13:36:26] D | ReactNative ▶︎ CatalystInstanceImpl.initialize()

[13:36:26] D | ReactNative ▶︎ ReactInstanceManager.attachRootViewToInstance()

[13:36:27] D | ReactNative ▶︎ ReactInstanceManager.detachViewFromInstance()

标签: react-nativereact-native-androidreact-native-maps

解决方案


推荐阅读