我有一个现有的react native应用程序,我想对带有PodSpecs的新依赖项使用react-native链接。但是,这引起了一个问题,因为他们每个人都对React有所依赖。
我在Podfile中添加了以下内容:
pod 'React', :path => '../node_modules/react-native'
# Explicitly include Yoga
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
这解决了其他模块的PodSpecs中的依赖性问题,但是引入了以下新错误:
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_RCTCxxBridge", referenced from:
objc-class-ref in libReact.a(RCTBridge.o)
ld: symbol(s) not found for architecture arm64
这个错误似乎是由于我没有列出React的任何子规范(特别是“ CxxBridge”)。当我确实将CxxBridge添加到Podfile时,由于“ CxxBridge”取决于Folly,我被迫添加以下依赖项:
# Third party deps podspec link
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
添加这些依赖项没有问题,但是它们的来源已经存在于node_modules/react-native/third-party
中。理想情况下,我想在Podfile中指定路径,这样我就不必提交大量的样板代码,但由于源文件没有PodSpec,所以我无法这样做。
有什么方法可以将CxxBridge链接到项目中,而不必添加node_modules
中已经存在的额外代码?其他人如何在第三方依赖项中(带有react-native链接)使用PodSpecs?希望提供帮助和/或Podfile示例
react-native: 0.57.1
xcode: 9.4.1
答案 0 :(得分:2)
发布答案,以防其他人遇到类似问题。事实证明,链接的库是错误的,因为某些库可能已经从node_modules引用了React项目中的库,而有些库可能已经从React Pod引用了库。
修复步骤:
pod install
安装后脚本:
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "React"
target.remove_from_project
end
end
end