【问题标题】:React Native Link for React Native .60 +用于 React Native .60 + 的 React Native 链接
【发布时间】:2020-04-09 21:08:30
【问题描述】:

这仍然是必需的,我一直看到这条消息,但从我的经历来看,它完全无效。几乎我使用的每个包,我仍然需要运行 react-native 链接。

谁能告诉我这是怎么回事?它只是特定的包,还是为什么我仍然需要一直运行 react-native 链接,当它告诉我不应该运行它时。我的意思是,它实际上只是将它添加到 iOS 的 pod 文件和 Android 的 gradle 中。

还有其他人遇到过这种情况吗?

为了进一步展示,看看这个,刚刚运行了 npm install for lottie,除非我运行链接,否则它将无法工作,我应该手动添加到我的 pod 文件中吗?我不明白为什么 React Native (Facebook) 团队说不再需要它,在我们的 4 人团队中,我们一直都需要它。

【问题讨论】:

  • 终端中提到的包会自动链接到react-native,所以会提示这些包是自动链接的。因此,请手动取消链接这些包。
  • 大声笑,关键是,如果它们是自动链接的,为什么我必须运行 react-native 链接?如果我不这样做,应用程序将无法运行,我在开发团队中,我们都注意到了这一点。自动链接不正确。除非我们遗漏了一些东西,也许是配置文件或其他东西?几乎每个包,我们都必须运行react-native link {PACKAGE NAME} 然后我们会看到这些消息,是的,我们可以手动取消链接,但这不是重点。奇怪的是为什么我们必须运行链接才能运行取消链接??
  • 更新了@Thinker,屏幕截图显示它需要为lottie 运行 react-native 链接,(耸耸肩)根据我所看到的,看起来仍然需要 react-native 链接。
  • 在我看来你只需要使用 pod 在 ios 端使用“链接”,react-native link 命令以不同的方式为你处理设置,这就是为什么在你使用 react 之后它对你有用本机链接,但该消息似乎只关心您使用 pod,这仍然是基于github.com/react-native-community/cli/blob/master/docs/… 的要求,不一定是包括 android 端的整个“react-native link”命令
  • 你能确认这个项目最初使用的是 react native 0.60+。我已经很长时间没有手动链接包了。几乎您帖子中提到的每个软件包都支持自动链接,而且对我来说从来没有失败过。

标签: android ios react-native npm-scripts react-native-linking


【解决方案1】:

从 0.60 版本开始,React Native 提供自动链接。

这意味着如果库支持自动链接,您只需使用 yarnnpm 安装库,在 ios 文件夹中运行 pod install 并构建。

# install
yarn add <the-library-name>
cd ios && pod install && cd .. # CocoaPods on iOS needs this extra step
# run
yarn react-native run-ios
yarn react-native run-android

例如https://github.com/react-native-geolocation/react-native-geolocation 支持自动链接,而Podfile. 中不需要它(除非您有非常旧的版本)。

在您的情况下,打印屏幕中列出的手动链接的所有库都是使用 react-native link &lt;libraryName&gt; 手动添加的,或者在 Podfile 中手动添加,或者在 Xcode 中使用对 .xcodeproj 文件的引用。

要删除这些错误:

确保您的库版本支持自动链接并运行 react-native unlink &lt;libraryname&gt;pod install

注意为了避免一些问题,我发现有时最好删除podfile.lock 并使用pod install 生成一个新的pod install

如果这不起作用,请按照以下步骤操作:

1) 删除 Podfile 中与这些库关联的行(除非您拥有的库版本不支持自动链接,在这种情况下,您应该只运行使用手动链接,如库文档)。

您可以通过查看 RN 升级助手来检查 Podfile 如何查找特定的 RN 版本:

https://react-native-community.github.io/upgrade-helper/?from=0.59.5&to=0.63.3

2) 您现在不需要在 Xcode 中手动引用支持自动链接的库(除非该库需要其文档中提到的一些特殊步骤)。

这就是过去手动链接的方式:

来源和更多信息:https://reactnative.dev/docs/linking-libraries-ios

对于支持自动链接以避免任何错误的库,您可以删除 Xcode 中与它们关联的引用(.xcodeproj 和其他)(除非关联的库需要在 Xcode 中进行修改)

来源和一些有用的链接:

https://github.com/react-native-community/cli/blob/master/docs/autolinking.md

https://medium.com/@srbkrishnan/react-native-auto-linking-on-android-65a850bb9ed9

关于 RN 升级的附加说明: 我发现如果在升级时我的project.pbxproj 文件中有太多需要修改的内容,我可以更轻松地从直接从 RN 升级助手获取的全新project.pbxproj 文件开始。然后我在那个文件中将RnDiffApp替换为MyProjectName,并在Xcode中一一添加了我需要的库修改。

【讨论】:

  • 我从来没有使用过自动链接的包——从来没有!我必须始终运行 react-native link {package-name}。直到今天,在 React Native 63 上仍然需要运行 react-native 链接,或者我得到“你忘记运行 pod install”,不,我只是运行它.. 自动链接不起作用。试了3台电脑,一样。我想要它工作的视频。
  • 从附加到问题的打印屏幕中为库创建演示:react-native init svgDemocd svgDemoyarn add react-native-svgcd iospod install,将其导入App.js,使用它在渲染函数中渲染一个基本的圆圈react-native run-ios,你会惊讶于它的工作原理。之后您可以查看Podfilepackage.json。 5 分钟前测试
  • 我之前评论中的测试是使用 RN 0.63 完成的
【解决方案2】:

您不再需要链接更多库,您只需升级您的 React-native 模块并确保您也使用最新的 Xcode,所有问题都会消失。 谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多