3

iOS アプリを react-native 0.39 以上に更新しようとしています。すべてが 0.38.2 で動作しますが、その後ld: X duplicate symbols for architecture Y問題が発生しました。アプリ自体は、swift、obj-c、web 埋め込みなどの混合です...

ただし、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)

私が理解できることから、共有拡張機能のどこかに CSSNodeList (およびおそらく他の反応オブジェクト) への参照が少なくとも 2 つあります。しかし、linked frameworks and librariesorlink binary with librariesを見ると、1 つしか表示されず、libReact.a を削除して元に戻しても問題は解決しません。

プロジェクト、DerivedData、ポッド、node_modules (...) をクリーンアップしようとしましたが、これ以上成功しませんでした。

(参考までに、私は Xcode 8.2.1、Cocoapod 1.1.1、npm 4.0.5 を実行しています。)

助けてくれてありがとう、みんな。

4

1 に答える 1

0

同じ問題がありました。解決策はhttps://github.com/facebook/react-native/issues/11502に記載されています

簡単な答えは、ポッド プロジェクトを選択し、React ターゲットを選択してから、ビルド フェーズとコンパイル ソースを選択することです。

そこで CSSLayout.c と CSSNodeList.c を削除します。

もう一度ビルドしてみてください。私の場合、まだエラーがあります。

React Compile Sources に戻り、CSSLayout.c と CSSNodeList.c を再度追加します。

もう一度ビルドしてください!!

于 2017-01-16T15:26:37.937 に答える