RN 0.62 - 架构 armv7 的 18 个重复符号

RN 0.62 - 18 duplicate symbols for architecture armv7

我最近将 react-native 应用程序从 0.60.4 升级到 0.62.0,我已经解决了很多问题,虽然我不知道我离成功还有多远,但我觉得很接近,这是我的 pod 文件看起来如何 -

platform :ios, '10.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
use_native_modules!

target 'MyProject' do
    pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
    pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
    pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
    pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
    pod 'React', :path => '../node_modules/react-native/'
    pod 'React-Core', :path => '../node_modules/react-native/'
    pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
    pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
    pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
    pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
    pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
    pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
    pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
    pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
    pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
    pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
    pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
    pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'

    pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
    pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
    pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
    pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
    pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon"
    pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
    pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true
    pod 'RNCharts', :path => '../node_modules/react-native-charts-wrapper'
    pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

end


post_install do |installer|
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
            config.build_settings['SWIFT_VERSION'] = '4.2'
        end
    end
end

现在我还有一个看起来像这样的桥接头 -

//
//  Use this file to import your target's public headers that you would like to expose to Swift.
//

#import "React/RCTBridge.h"
#import "React/RCTViewManager.h"
#import "React/RCTUIManager.h"
#import "React/UIView+React.h"
#import "React/RCTBridgeModule.h"
#import "React/RCTEventDispatcher.h"
#import "React/RCTEventEmitter.h"
#import "React/RCTFont.h"

我面临以下错误 -

ld: 18 duplicate symbols for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

显然这表明有 18 个重复文件 -

RNBarChartManager.o
RNBarChartManager.o
RNBubbleChartManager.o
RNBubbleChartManager.o
RNCandleStickChartManager.o
RNCandleStickChartManager.o
RNCombinedChartManager.o
RNCombinedChartManager.o
RNHorizontalBarChartManager.o
RNHorizontalBarChartManager.o
RNLineChartManager.o
RNLineChartManager.o
RNPieChartManager.o
RNPieChartManager.o
RNRadarChartManager.o
RNRadarChartManager.o
RNScatterChartManager.o
RNScatterChartManager.o

其中大部分属于 react-native-charts-wrapper 包。我不知道我应该从哪里以及如何删除这些重复项。

最可能的原因是您启用了与 Cocoapods 的链接和自动链接,但您没有从您的 Xcode 项目中删除手动链接的框架。

如果您在 Xcode 中打开工作区,然后查看 project setting 的 "Linked binaries and frameworks" 部分。您可能有一个名为 react-native-chart-wrapper.a 的链接框架。如果你删除它,那么一切都应该有效。

您也可以在左侧的文件列表中查找 Libraries 组并将其删除。现在你正在使用 Cocoapods,你将不再需要它了。当它询问时,只按 "Remove references" 而不是 "Move to trash"。删除它也应该删除 "Linked binaries and frameworks".

中的相应列表