为什么命令“ pod install”或“ pod update pod_name”安装了这么多文件?

时间:2018-12-30 10:01:53

标签: ios react-native cocoapods react-native-ios

我在我的本地ios项目中使用firebase动态链接。

Cocoapods version --- 1.5.3 xcode version --- 9.4.1

当我尝试使用Firebase/DynamicLinks更新pod pod update Firebase/DynamicLinks时,它不仅会更新该pod,还会更新许多其他pod,最重要的是,它不赞成v0.11.0,并且当我执行git status时,我发现添加/修改的文件超过1100个。

此外,构建失败,并显示诸如argument list too long之类的错误。

我不知道为什么这种情况一直伴随着可可足目发生。

在将segment-io安装到我的React Native项目时,我遇到了同样的问题,所以我不得不手动链接该项目。

但是firebase动态链接不是javascript库,因此无需手动链接它。

任何人都可以指出解决方案吗?

2 个答案:

答案 0 :(得分:1)

之所以这样,是因为RN podspec很老,而且没有维护-Facebook不使用cocapods。

要对其进行修复,请将其添加到您的目标(在Podfile中)。

pod 'DoubleConversion', :podspec => "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
pod 'Folly', :podspec => "../node_modules/react-native/third-party-podspecs/Folly.podspec"
pod 'glog', :podspec => "../node_modules/react-native/third-party-podspecs/GLog.podspec"
pod 'React', path: '../node_modules/react-native', subspecs: [
  'Core',
  'CxxBridge',
  'RCTAnimation',
  'RCTActionSheet',
  'RCTImage',
  'RCTLinkingIOS',
  'RCTNetwork',
  'RCTSettings',
  'RCTText',
  'RCTVibration',
  'RCTWebSocket',
  'RCTPushNotification',
  'RCTCameraRoll',
  'RCTSettings',
  'RCTBlob',
  'RCTGeolocation',
  'DevSupport'
]
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

这将告诉cocoapods使用node_nodules中的react本机库和其他需要的库-package.json中定义的版本

Podfile的脚本广告底部(位于目标之后):

post_install do |installer_representation|
  installer_representation.pods_project.targets.each do |target|
      if target.name == "React"
          target.remove_from_project
      end
  end
end

有计划在将来进行改进:https://github.com/react-native-community/discussions-and-proposals/pull/18

答案 1 :(得分:1)

  

当我尝试使用pod update更新pod Firebase / DynamicLinks时   Firebase / DynamicLinks,它不仅可以更新该Pod,还可以更新许多其他Pod   ...

基本上,发生这种情况是因为Firebase/DynamicLinks 依赖于其他存储库(pod),这意味着为了更新Firebase/DynamicLinks,它们的依赖关系也应更新。

作为建议,您应该-手动-提及适合您项目的最新版本;在您的podfile中:

pod `Firebase/DynamicLinks`, 'here is the specific proper version'

请注意,在未提及Pod使用的版本的情况下,它应该安装最新版本,对于您的情况而言,它可能是合适的。