在实现导航时遇到了相同的问题。运行以下命令:
npm install @react-navigation/native
React Navigation由一些核心实用程序组成,这些实用程序被导航器使用,以在您的应用中创建导航结构。
在您的项目目录中运行:
npm install react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view
这将安装与之兼容的库的版本。
如果您使用的是Mac并且正在开发iOS应用程序,则需要安装pods以完成连接。
npx pod-install ios
现在运行
react-native run-ios
pod-install ios
和 npx react-native run-ios
。 - vikramvi当你安装所有包以添加导航而不终止正在运行的构建时,通常会发生这种情况。确保停止 (android或IOS) 的运行进程,然后在安装它们并添加路由组件后再次运行。
我认为您忘记安装 react-native-screens
组件了。这是按照react navigation指南所需的部分。
在从npm安装包后,请不要忘记在ios文件夹中运行pod install
。
npx jetify
。 - Dat Ho停止所有终端服务器,然后运行。
npx react-native run-android
如果它仍然不起作用,npm i react-native-screens
然后
npx react-native run-android
npx react-native run-ios
。npm install react-native-screens react-native-safe-area-context
或者如果你使用yarn,则运行 'yarn add install react-native-screens react-native-safe-area-context'
关闭 Metro 并运行 npx run android
来重新构建您的代码
这种情况在我的iOS和Android设备上都发生了。我通过更新以下包 "react-native-screens": "^3.18.1"
来使 Android 再次正常运行:
然后将其添加到依赖项(dependencies)中: android/app/build.gradle
implementation project(':react-native-screens')
接下来将这个内容添加到 protected List getPackages() 中:android/app/src/main/java/com/myapp/MainApplication.java
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
packages.add(new com.swmansion.rnscreens.RNScreensPackage());
return packages;
}
注意:确保您没有导入com.swmansion.rnscreens
,否则应用程序将因重复屏幕视图而不断重新启动。
最后将此添加到android/settings.gradle
中。
include ':react-native-screens'
project(':react-native-screens').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-screens/android')
在运行应用之前,请确保您 清理 Gradle。例如,转到Android文件夹并运行以下命令:
./gradlew clean
ios/Podfile
的target 'myapp' do中添加这个。pod 'RNScreens', :path => '../node_modules/react-native-screens'
在运行应用程序之前,请确保删除iOS文件夹中的Podfile.lock
,然后运行pod install --repo-update
命令。
由于我没有足够的声望来点赞这个答案,所以在这里提到了对我起作用的答案。
问题:使用Expo,Sanity.io应用在开发设备上运行正常,但一旦使用“eas build -p android --profile preview”生成apk后,在手机上打开应用程序时,在启动画面后应用程序崩溃。
Adblogcat显示:com.facebook.react.common.JavascriptException: Invariant Violation: requireNativeComponent:“RNSScreen”在UIManager中未找到。
解决方案:
npm install @react-navigation/native
npm install react-native-reanimated react-native-gesture-handler react-native-screens react-native-safe-area-context @react-native-community/masked-view
感谢社区和@Gurjinder Singh(获得最高票数)。
好消息更新:react-native-screens 3.18.2已推出修复此问题。如果你受到了3.18.1版本引起的编译问题(如果需要,可以通过下面的消息检查),则可以使用它来解决问题。
因此,下面的答案大多已经过时,只需更新软件包即可继续使用。干杯!
现在,如果发生这种情况,那是因为 react-native-screens 3.18.1 包含了新的配置,只兼容 react-native 0.69+。
如果你正在使用旧版 react-native,则需要确保你的 react-native-screens 依赖项恰好是 3.18.0:
"react-native-screens": "3.18.0",
如果你遇到了这个问题,可以尝试使用 npx react-native start --reset-cache
命令来重新启动 javascript 打包器并清除缓存。
如果你在运行 npx react-native run-android
命令时看到如下警告信息,则很可能是由此引起的:
警告:由于包含无效配置,“dependency.platforms.android.componentDescriptors”不被允许,因此已忽略 react-native-screens 包
该问题可能会在 3.18.2 版本中得到修复 - 参考:https://github.com/software-mansion/react-native-screens/issues/1614#issuecomment-1276245207