我正在尝试按照this上的官方安装说明在我弹出的expo应用程序中安装react-navigation
页。在下面的说明中,典型地添加了包并通过 react-native link
进行链接,需要将其他代码添加到文件 MainActivity.java
中。
现在我的问题是,在安装说明中,类MainActivity
扩展了类ReactActivity
,但是由于我在代码中使用了弹出的expo应用程序,它扩展了类 DetachActivity
,它似乎与安装指令的给定代码不兼容,因此我真的不知道如何解决该不兼容问题(特别是因为我什至无法找到通过谷歌有任何关于这一点的信息 - 是 a dark secret nobody talks about 吗?)。
我尝试过但没有成功的一些方法:
- 无论如何包含代码都会产生错误[编译错误]
错误:方法不会覆盖或实现父类(super class)型的方法
。 - 包含代码、将
DetachActivity
替换为ReactActivity
并删除所有覆盖DetachActivity
方法的方法会导致应用崩溃。 - 不包含任何内容都会产生错误[手机红屏]
native 模块 com.swmansion.gesturehandler.react.RNGestureHandlerModule 尝试覆盖 versioned.host.exp.exponent.modules.api。 Components.gesturehandler.react.RNGestureHandlerModule 为模块名称 RNGestureHandlerModule。检查MainApplication.java中的getPackages()方法,可能是该模块被创建了两次。如果这是您的 Intent ,请设置 canOverrideExistingModule=true
。
我真的很感激一些明智的建议!另外,我对java不是很熟悉,但非常愿意学习一些新东西!
最佳答案
2019 年 12 月更新
忽略下面的内容。 如今,Expo 正在将它们的内置依赖项分离为“react-native-gesture-handler”。所以我们需要安装它。 Ref
解决方案
总结一下,
返回到您从 expo 中弹出项目的提交。并安装react-navigation
。
不要将其他安装为 react-native-gesture-handler
。
仅此而已。
为什么
如果您从expo中弹出项目,这些项目将依赖于ExpoKit,因此不需要再次安装已经构建的模块。 react-native-gesture-handler
就是这些模块之一。
因此,也不需要react-native link
。
native 模块 com.swmansion.gesturehandler.react.RNGestureHandlerModule 尝试覆盖模块名称 RNGestureHandlerModule 的 versioned.host.exp.exponent.modules.api.components.gesturehandler.react.RNGestureHandlerModule。检查MainApplication.java中的getPackages()方法,可能是该模块被创建了两次。如果这是您的 Intent ,请设置 canOverrideExistingModule=true。
此消息可能是您再次安装的 RNGestureHandlerModule
引起的。
关于java - 如何在弹出的expo项目中安装react-navigation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56411178/