将react-native升级到0.39.0及更高版本时出现重复符号错误

时间:2017-01-06 02:15:01

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

我正在尝试更新ios应用程序以反应原生0.39及更多。 一切都在0.38.2下工作,但之后我遇到了ld: X duplicate symbols for architecture Y问题。 应用程序本身是swift,obj-c,web embedding等的混合......

但是它有一个由swift和react-native组成的共享扩展。

npm和pod安装似乎没有任何问题。

经过一些研究,我找到了问题的原因,并尝试了一堆解决方案,但我仍然没有成功解决这个问题:

[...|similar duplicate symbol _CSSNodeList{something}] duplicate symbol _CSSNodeListFree in: ~/Library/Developer/Xcode/DerivedData/....../Build/Products/Debug-iphonesimulator/React/libReact.a(CSSNodeList-10ACA1A52987016B.o) ~/Library/Developer/Xcode/DerivedData/....../Build/Products/Debug-iphonesimulator/React/libReact.a(CSSNodeList-5089F60B494D1C9C.o) duplicate symbol _CSSNodeListAdd in: ~/Library/Developer/Xcode/DerivedData/....../Build/Products/Debug-iphonesimulator/React/libReact.a(CSSNodeList-10ACA1A52987016B.o) ~/Library/Developer/Xcode/DerivedData/....../Build/Products/Debug-iphonesimulator/React/libReact.a(CSSNodeList-5089F60B494D1C9C.o) ld: 103 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

根据我的理解,我在共享扩展中的某个地方至少有2个CSSNodeList(可能还有其他反应对象)的引用。但是看linked frameworks and librarieslink binary with libraries,我只能看到一个,如果我删除了libReact.a并将其放回去,问题仍然存在。

尝试清理项目,DerivedData,pods,node_modules(...)并没有取得更大的成功。

(如果它有用,我正在运行Xcode 8.2.1,Cocoapod 1.1.1,npm 4.0.5。)

感谢您的帮助,伙计们。

1 个答案:

答案 0 :(得分:0)

我有同样的问题。该解决方案记录在https://github.com/facebook/react-native/issues/11502

简短的回答是选择您的pod项目,选择React目标,然后选择Build phases and Compile Sources。

在那里删除CSSLayout.c和CSSNodeList.c。

尝试再次构建。在我的情况下,我仍然有错误。

回到React Compile Sources并重新添加CSSLayout.c和CSSNodeList.c。

再次建造并vo !!