【问题标题】:What exactly does `pod install` do in react-native's autolinking?`pod install` 在 react-native 的自动链接中究竟做了什么?
【发布时间】:2020-02-16 21:28:39
【问题描述】:

我正在使用 React Native 0.61,并且一直在阅读有关新的自动链接功能的信息。如果您对以下任何问题有任何见解,我将不胜感激。

我的问题是:

1) 我对react-native link <module> 的理解是,它会在你的Podfile 中添加一行<module>,然后你运行pod install。然而,去年我一直在使用react-native link 并手动链接,但从未运行过pod install。那么react-native link 不仅仅是在 Podfile 中添加行,我说得对吗?

2) 过去,当react-native link 链接模块失败时,我通过将.xcodeproj.a 文件拖入Xcode 中手动链接它,如here 所述。 react-native link(当它工作时)是否将行添加到您的 Podfile 并为您将 .xcodeproj.a 文件添加到 Xcode 中?

3) 除了将.xcodeproj.a 文件添加到Xcode 之外,本机模块的链接是否涉及任何其他内容?

4) pod install 到底是做什么的?它是否需要在您的 Podfile 中引用的所有本机模块并将 .xcodeproj.a 文件添加到 Xcode 中?如果是这样,那将涉及两个步骤:将行添加到您的 Podfile 中,然后运行 ​​pod install。为什么不只是react-native link

5) 我对自动链接的理解是,它将所有本机模块的行添加到您的 Podfile 中,然后您仍然必须运行 pod install。这不就是和react-native link完成同样的事情吗?

6) 在 this guide to auto-linking 中,它说“自动链接是 react-native 链接的替代品。如果您在 0.60 版之前使用过 React Native,请取消链接原生依赖项(如果您有任何来自以前的安装) ."。为什么它告诉你取消链接?如果模块已经链接,取消链接并重新链接会做什么?这意味着模块与react-native link 链接和通过自动链接的方式之间存在差异。如果您自动链接然后pod install,然后尝试使用react-native link,会发生什么情况?反之亦然?

7) 我在前面的问题中对此进行了概述,但为了简明扼要,自动链接 + pod installreact-native link 之间有什么区别?

【问题讨论】:

  • 如果您来自 javascript 背景,请将“pod install”视为 cocoapods 项目的“npm install”,即。你的 iOS 应用。这只是安装了 react-native 在你的 xcode 项目中指定的所有依赖项。
  • @HannesHertach 谢谢。我从概念上理解pod install 的作用。如果您对我的具体问题有任何见解,我将不胜感激。

标签: reactjs xcode react-native cocoapods podfile


【解决方案1】:

您的所有问题都紧密相连,因此我将只为您提供详细信息,希望能为您解决问题。

如果 React Native 版本 AND Cocoapods NOT 用于 项目:

react-native 链接只会将 .xcodeproj 文件和 .a 文件添加到 XCode 项目中。它不会向 Podfile 添加任何行,因为在这种情况下,Podfile 不存在。

如果 React Native 版本 AND Cocoapods 用于 项目:

react-native 链接会将这些行添加到 Podfile 并安装 pod。它不会将.xcodeproj.a 文件添加到XCode 项目中。这是假设库支持 Cocoapods 安装。你怎么知道这个库是否支持 Podfile 安装?他们在他们的 Github 页面/NPM 页面上提到了它。此外,此类库也将具有 .podspec 文件。 示例:https://github.com/react-native-community/react-native-device-info 看到这个库有一个.podspec 文件-> RNDeviceInfo.podspec。所以这支持 Cocoapods 安装。 如果库不支持 Cocoapods 安装,react-native 链接只会像上例一样将 xcode.proj.a 文件添加到 XCode 项目中。

如果 React Native 版本 >= 0.61(在这种情况下默认使用 Cocoapods)

不再需要 react-native 链接。 您只需安装库(yarn addnpm install) 然后做pod install。 这里发生的是,Cocoapods 从 node_modules 文件夹中获取库,检查是否有 .podspec 文件,然后安装 pod。但它不会在 podfile 中添加任何行。这是 React Native 0.60 版中引入的自动链接。 对于没有 .podspec 文件的旧库,您需要通过 react-native 链接手动链接库。

【讨论】:

  • Ty 对此解释。我相信您所说的是正确的,但是您可以提供一些文档来支持您所说的话吗?想了解更多相关信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 2012-07-23
  • 2016-09-10
  • 2023-03-15
  • 2012-10-17
相关资源
最近更新 更多