我正在使用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 install
和react-native link
和有什么区别? >
答案 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项目添加.podspec
和xcode.proj
文件。
如果React Native版本> = 0.61(在这种情况下默认为Cocoapods)
react-native链接不再需要。
您只需安装库(.a
或yarn add
)
然后执行npm install
。
这里发生的是,Cocoapods从node_modules文件夹中获取库,检查是否存在pod install
文件,然后安装Pod。但是它不会在Podfile中添加任何行。这是React Native版本0.60中引入的自动链接。
对于没有.podspec
文件的较旧的库,您需要通过react-native链接手动链接库。