无法合并 pod 目标的 user_target_xcconfig:[“Reanimated”、“hermes-engine”]。单一构建设置 CLANG_CXX_LIBRARY 具有不同的值

Rel*_*som 28 xcode ios swift react-native

我一直在我的项目中运行“pod install”来连接我的依赖项,但我收到了此错误:Can't merge user_target_xcconfig for pod targets: ["Reanimated", "hermes-engine"] Singular build setting CLANG_CXX_LIBRARY has different values.每次运行 pod. 我尝试解决此错误,我也删除并重新安装了所有 pod 文件,但没有成功。

想知道是否有人找到了解决方案?

Mik*_*rdy 25

更新快乐! reanimated 2.10.0 现已发布,根据@Lauri-Harpf 的及时评论,它似乎具有所需的补丁 - 2.10.0 还包含适用于react-native 0.70 的预构建库(按照 reanimated 2.x 的要求) .x 所以这个答案很大程度上已经过时了,但是以一种好的方式。如果可以的话,去获取新版本并给 repo + support Software Mansion 一颗星,因为他们在该模块上做得很好。干杯

大部分已过时的答案如下:


反应本机 0.69

看来答案是更新react-native-reanimated,以便它与react-native 0.69更加兼容

React-native 0.69 没有正式版本(react-native 0.70 见下文),但 patch-package 可用于集成修复程序,如下所述:

https://github.com/software-mansion/react-native-reanimated/issues/3326#issuecomment-1225057452

(基本上,您可以通过将其 podspec 文件更改为 Hermes 想要的文件来强制更改 C++ 语言标准的重新使用,并使用补丁包干净地完成整个操作。

diff --git a/node_modules/react-native-reanimated/RNReanimated.podspec b/node_modules/react-native-reanimated/RNReanimated.podspec
index d53cb12..719f813 100644
--- a/node_modules/react-native-reanimated/RNReanimated.podspec
+++ b/node_modules/react-native-reanimated/RNReanimated.podspec
@@ -94,7 +94,7 @@ Pod::Spec.new do |s|
   }
   s.compiler_flags = folly_compiler_flags + ' ' + boost_compiler_flags
   s.xcconfig               = {
-    "CLANG_CXX_LANGUAGE_STANDARD" => "c++14",
+    "CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
     "HEADER_SEARCH_PATHS" => "\"$(PODS_ROOT)/boost\" \"$(PODS_ROOT)/boost-for-react-native\" \"$(PODS_ROOT)/glog\" \"$(PODS_ROOT)/#{folly_prefix}Folly\" \"${PODS_ROOT}/Headers/Public/React-hermes\" \"${PODS_ROOT}/Headers/Public/hermes-engine\"",
                                "OTHER_CFLAGS" => "$(inherited)" + " " + folly_flags  }
Run Code Online (Sandbox Code Playgroud)

反应本机 0.70

对于react-native 0.70,您需要使用react-native-reanimated的3.x版本,在撰写本文时该版本还没有正式版本。

您可以通过安装react-native-reanimated@next版本来做到这一点,例如安装为yarn add react-native-reanimated@nextpod install然后错误就会消失。

  • 我发现即使使用react-native-reanimated 2.10.0,我也必须使用rehan-shakir的答案和RN 0.70.1。 (2认同)
  • @ChiragPurohit 你没有错,但是看看如果你将 React-Native 的想法“扩展”到它的第一级依赖项,听起来会是什么样子 - “真的在更新 Android、iOS、Xcode、macOS、Node、JDK、Gradle 后, App Store 和 Play Store 政策,你必须祈祷你的项目顺利进行”。被称为“react-native”的东西中捆绑的技术数量之多令人震惊,而且作为一个组合问题,它的工作原理令人惊讶。也就是说,他们专注于接下来几个版本的升级过程,希望它能有所帮助。 (2认同)

小智 8

简单的答案是只需在 podspec 中设置 CXX 即可。

node_modules/react-native-reanimated/RNReanimated.podspec
Run Code Online (Sandbox Code Playgroud)

改成:

"CLANG_CXX_LANGUAGE_STANDARD" => "c++17",
Run Code Online (Sandbox Code Playgroud)

学分=> https://github.com/Shopify/react-native-skia/issues/405#issuecomment-1244302303

  • 我发现即使使用react-native-reanimated 2.10.0我也必须使用它。然后使用 patch-package 来保存更改。 (2认同)