Cocopods始终会安装旧的React(0.11.0)

时间:2018-09-06 14:52:06

标签: ios react-native cocoapods

运行pod install的Pod总是将React Installing React 0.11.0 (was 0.55.4)降级时遇到问题

我的Pod文件:

# Uncomment this line to define a global platform for your project
# platform :ios, '9.0'
platform :ios, '9.0'
project 'BunteMobile.xcodeproj'
target 'BunteMobile' do
  # Comment this line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for BunteMobile
  pod 'Adjust', '~> 4.8.3'
  pod 'Google-Mobile-Ads-SDK'
  pod 'GoogleAds-IMA-iOS-SDK', '~> 3.7'
  pod 'Fabric', '~> 1.7.0'
  pod 'Crashlytics', '~>  3.9'

  pod 'lottie-ios', :path => '../node_modules/lottie-ios'

  pod 'lottie-react-native', :path => '../node_modules/lottie-react-native'

  target 'BunteMobileTests' do
    inherit! :search_paths
    # Pods for testing
  end

end

当我从node_modules定义react文件夹时,我了解了一些解决方案,但是该解决方案也不适用于我。

我将其放入podfile中:

pod 'yoga', path: './node_modules/react-native/ReactCommon/yoga'
pod 'React', :path => '../node_modules/react-native'

但仍然无法正常工作。降级消失,但是当我尝试构建它时,出现此错误:

/node_modules/react-native/React/Base/RCTConvert.h:17:9: could not build module 'yoga'

我尝试了与官方RN文档(https://facebook.github.io/react-native/docs/integration-with-existing-apps.html)相同的配置文件,但仍然存在相同的错误...

有人知道如何解决吗?

解决方案

我将此添加到了我的podfile中:

# Pods for React-Native start
  pod 'React', :path => '../node_modules/react-native'
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'

2 个答案:

答案 0 :(得分:1)

只需从pod文件中删除node_modules行,然后在xCo​​de中手动添加库即可。

我观察到,当您运行react-native link <someLibrary>时,RN有时会自动将该库添加为pod依赖项。

在我的情况下,react-native-webview出现此错误。

要修复它:

我刚刚从Pod文件中删除了node_modules/react-native-webview,然后

在xCode中将该库添加到其他库附近

node_modules/some_library/ios/RNCWebView.xcodeproj拖入项目库文件

enter image description here

build phases link binary with libraries

中添加库依赖项

enter image description here

答案 1 :(得分:0)

如果要将RN集成到现有的本机应用程序中,则希望您的Podfile看起来大致像this。也就是说,您将通过SELECT

指定React依赖关系的路径

您是否正在开发未开发的RN应用程序?如果是这样,您可能不希望在Podfile中包含DROP TABLE,因为这可能会导致您遇到麻烦。

相反,在运行pod 'React', :path => '../node_modules/react-native' ...之前,请返回到您的仓库外观。此命令可能在您的Podfile中添加了pod 'lottie-react-native', :path => '../node_modules/lottie-react-native'行。现在,您可以按照手动安装说明进行操作(我看不到该安装说明,但是可以检查these,这是同一件事),或者可以执行以下操作:从{{1 }},然后再运行react-native link lottie-react-native。该依赖项不会添加到podfile中,而是作为静态lib链接到二进制文件中。