react-native React Native Pod文件中使用use_modular_headers!抛出模块'ReactCommon'的重复定义错误,

wecizke3  于 4个月前  发布在  React
关注(0)|答案(5)|浏览(107)

描述

Podfile 不支持 use_modular_headers! 指令,在构建时会出现错误。

重现步骤

创建一个示例的 React Native 项目 npx react-native init MyApp
向 Podfile 中添加 use_modular_headers!
执行 pod install
在 Xcode 项目中构建时出现 "Redefinition of module 'ReactCommon'" 错误。

React Native 版本

0.74.2

受影响的平台

构建 - MacOS

npx react-native info 的输出

System:
  OS: macOS 14.4.1
  CPU: (12) arm64 Apple M2 Max
  Memory: 464.02 MB / 32.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 18.17.0
    path: ~/.nvm/versions/node/v18.17.0/bin/node
  Yarn:
    version: 3.6.4
    path: ~/.nvm/versions/node/v18.17.0/bin/yarn
  npm:
    version: 9.6.7
    path: ~/.nvm/versions/node/v18.17.0/bin/npm
  Watchman:
    version: 2024.05.06.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.15.2
    path: /Users/jay/.gem/ruby/2.7.4/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 23.2
      - iOS 17.2
      - macOS 14.2
      - tvOS 17.2
      - visionOS 1.0
      - watchOS 10.2
  Android SDK: Not Found
IDEs:
  Android Studio: 2023.1 AI-231.9392.1.2311.11330709
  Xcode:
    version: 15.2/15C500b
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 11.0.18
    path: /usr/bin/javac
  Ruby:
    version: 2.7.4
    path: /Users/jay/.rubies/ruby-2.7.4/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.74.2
    wanted: 0.74.2
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: true
  newArchEnabled: false

堆栈跟踪或日志

(Xcode error)

React-RCTAppDelegate
/Users/jay/tmp/rn74/MyApp/ios/Pods/Headers/Public/ReactCommon/ReactCommon.modulemap
/Users/jay/tmp/rn74/MyApp/ios/Pods/Headers/Public/ReactCommon/ReactCommon.modulemap:1:8 Redefinition of module 'ReactCommon'

Previously defined here

复现方法

https://github.com/jkoutavas/RN-0-74-2-example

截图和视频

此外,还有一个关于此问题的 Stack Overflow 链接:https://stackoverflow.com/questions/78540513/react-native-pod-file-use-modular-headers-throwing-redefinition-of-module-reac/78630743#78630743

5w9g7ksd

5w9g7ksd1#

尽管还有两个问题已关闭,但那里提供的解决方法不起作用,因为根据情况启用每个依赖项的模块化头文件并不总是一个可行的选择。

siv3szwd

siv3szwd2#

作为解决方法,尝试从您的Podfile中删除use_modular_headers!并仅将模块化头文件应用于特定pods。
就我的情况而言,我需要为与firebase相关的pods使用模块化头文件。

pod 'FirebaseCore', :modular_headers => true
pod 'Firebase', :modular_headers => true
pod 'FirebaseCoreInternal', :modular_headers => true
pod 'GoogleUtilities', :modular_headers => true

对我有效。

ulydmbyx

ulydmbyx3#

作为解决方法,尝试从你的Podfile中移除 use_modular_headers !,并仅将模块化头文件应用于特定的pods。
就我的情况而言,我需要为与firebase相关的pods使用模块化头文件。
这对我有效。
我们也做了同样的事情,这解决了firebase的问题,但是我们还有一个第三方包不接受:modular_headers。所以我想最好在这个问题上开一个通用的工单。

3zwjbxry

3zwjbxry4#

这个对我有效:

  1. 在我的pod文件中添加
...
pod 'GoogleUtilities', :modular_headers => true  
pod 'FirebaseCore', :modular_headers => true

# before this line 👇🏼
config = use_native_modules!
...
  1. 将"@react-native-firebase/app"降级到版本: 18.6.0
kqqjbcuj

kqqjbcuj5#

我刚刚在pod文件中添加了这个

...
# after this line
config = use_native_modules!

use_frameworks! :linkage => :static
$RNFirebaseAsStaticFramework = true
...

相关问题