IOS 上的 React Native 构建错误 - 不同类型的 typedef 重新定义('uint8_t'(又名 'unsigned char')与 'enum clockid_t')

React Native Build Error on IOS - typedef redefinition with different types ('uint8_t' (aka 'unsigned char') vs 'enum clockid_t')

将 React Native 从 0.61.5 升级到 0.63.2 后,Flipper 在 IOS 上导致错误 typedef redefinition with different types ('uint8_t' (aka 'unsigned char') vs 'enum clockid_t')

在 github 上有一些建议的答案,但其中 none 解决了我的问题 https://github.com/facebook/flipper/issues/834

有没有人知道如何解决这个问题?

非常感谢

使用以下代码更新您的 pod 文件。

use_flipper!({ 'Flipper-Folly' => '2.3.0' }) # update this part
 post_install do |installer|
   flipper_post_install(installer)
 end

请注意,如果您有 use_frameworks!已启用,Flipper 将无法工作,并且 您应该在 Podfile 中禁用接下来的几行。

  # use_flipper!
  # post_install do |installer|
  #   flipper_post_install(installer)
  # end

如果您不想从您的应用中删除 Flipper,请执行此解决方案。

你的pod.file喜欢这样

add_flipper_pods!('Flipper' => '0.74.0')

通过执行此操作升级 Flipper-Folly

删除这一行add_flipper_pods!('Flipper' => '0.74.0')

添加这一行add_flipper_pods!('Flipper-Folly' => '2.3.0')

就我而言,我的 XCode 版本是 11.5,它不支持 Flipper 中的更新内容。将我的 XCode 更新到版本 12 立即修复了它。

第 1 步:

转到 YOUR_PROJECT > ios > Podfile 然后注释这些行

  # use_flipper!()

  # post_install do |installer|
  #   react_native_post_install(installer)
  #   __apply_Xcode_12_5_M1_post_install_workaround(installer)
  # end

第 2 步:

在第 1 步之后,您必须在 YOUR_PROJECT > ios 路径上执行 运行 pod update 命令。

宾果游戏结束。


重要

如果在执行上述 2 个步骤后出现错误,

  1. 转到 YOUR_PROJECT > ios > YOUR_PROJECT_NAME > 和 运行 此命令
  2. plutil ./Info.plist 它会告诉您问题出在哪里。
  3. 然后从您的文本编辑器中解决该问题。

我需要指定版本:

  # https://github.com/facebook/flipper/releases
  # https://cocoapods.org/pods/Flipper-Folly
  # https://cocoapods.org/pods/OpenSSL-Universal
  use_flipper!({
    "Flipper" => "0.134.0",
    "Flipper-Folly" => "2.6.10",
    "OpenSSL-Universal" => "1.1.1100"
  })

对于完整的 Podfile,它可能会有所帮助:

require_relative "../node_modules/expo/scripts/autolinking"
require_relative "../node_modules/react-native/scripts/react_native_pods"
require_relative "../node_modules/@react-native-community/cli-platform-ios/native_modules"

platform :ios, "12.0"

target "socializus" do
  use_expo_modules!

  config = use_native_modules!

  use_react_native!(
    path: config[:reactNativePath],
    hermes_enabled: false
  )

  # https://github.com/facebook/flipper/releases
  # https://cocoapods.org/pods/Flipper-Folly
  # https://cocoapods.org/pods/OpenSSL-Universal
  use_flipper!({
    "Flipper" => "0.134.0",
    "Flipper-Folly" => "2.6.10",
    "OpenSSL-Universal" => "1.1.1100"
  })

  post_install do |installer|
    flipper_post_install(installer)
    react_native_post_install(installer)

    installer.pods_project.targets.each do |target|
      target.build_configurations.each do |config|
        config.build_settings.delete "IPHONEOS_DEPLOYMENT_TARGET"
      end
    end
  end
end