首页 > 解决方案 > `pod install` 在 react-native 的自动链接中到底做了什么?

问题描述

我正在使用 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文件拖到 Xcode 中手动链接它,如此所述。是否react-native link(当它起作用时)将该行添加到您的 Podfile 并为您添加.xcodeproj.a文件到 Xcode 中?

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

4)具体pod install做什么?它是否将 Podfile 中引用的所有本机模块添加.xcodeproj.aXcode 中?如果是这样,那将涉及两个步骤:将该行添加到您的 Podfile 中,然后运行pod install​​. 为什么不只是react-native link

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

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

7) 我在前面的问题中概述了这一点,但为了简洁起见, 自动链接 +之间有什么区别?pod installreact-native link

标签: reactjsxcodereact-nativecocoapodspodfile

解决方案


你所有的问题都紧密相连,所以我只会给你一些细节,希望能为你解决问题。

如果 React Native 版本 <= 0.59并且项目中没有使用Cocoapods :

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

如果 React Native 版本 <= 0.59并且项目中使用了 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并归档到 XCode 项目。.a

如果 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 链接手动链接库。


推荐阅读