“ pod install”在react-native的自动链接中究竟起什么作用?

时间:2019-10-20 17:05:48

标签: reactjs xcode react-native cocoapods podfile

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

我的问题是:

1)我对react-native link <module>的理解是,它将<module>的一行添加到Podfile中,然后运行pod install。但是,在过去的一年中,我一直在使用react-native link并手动链接,但从未运行过pod install。因此,对react-native link所做的不仅仅是在Podfile中添加行了吗?

2)过去,当react-native link链接模块失败时,我通过将.xcodeproj.a文件拖到here中所述的Xcode中来手动链接它。 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中,指向自动链接的内容是:“自动链接是React-native链接的替代。如果您在0.60之前的版本中一直使用React Native,请取消链接本机依赖项,​​如果以前的安装。”。为什么它告诉您取消链接?如果模块已经链接,那么取消链接并重新链接该怎么办?这意味着模块与react-native link的链接方式和自动链接方式之间存在差异。如果先自动链接然后pod install,然后尝试使用react-native link,反之亦然,会发生什么?

7)我在前面的问题中对此进行了概述,但只是为了简洁起见,自动链接+ pod installreact-native link和有什么区别?

1 个答案:

答案 0 :(得分:2)

您的所有问题都息息相关,因此,我将仅向您提供详细信息,以期为您解决问题。

如果React Native版本<= 0.59 AND Cocoapods NOT 该项目:

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

如果React Native版本<= 0.59 AND 中使用了Cocoapods, 项目:

react-native链接会将这些行添加到Podfile并安装Pod。不会将.a.xcodeproj文件添加到XCode项目。假设该库支持Cocoapods安装。您如何知道该库是否支持Podfile安装?他们在他们的Github页面/ NPM页面上提到了它。同样,此类库也将具有.podspec文件。 示例:https://github.com/react-native-community/react-native-device-info 看到该库有一个.a文件-> RNDeviceInfo.podspec。因此,这支持Cocoapods安装。 如果该库不支持Cocoapods安装,则像上述情况一样,react-native链接只会向XCode项目添加.podspecxcode.proj文件。

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

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