ios - 将 Xcode 更新到 12.5 和 iOS 更新到 14.5 后,React Native 0.64 不会构建 iOS 应用程序

标签 ios reactjs xcode react-native

将 Xcode 升级到 12.5 和 iOS 升级到 14.5 后,我无法在真机和模拟器中运行 iOS 应用程序。
运行后npm run ios ,我收到这条消息:

The following build commands failed:
        CompileC .../Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Flipper-Folly.build/Objects-normal/x86_64/DistributedMutex.o /Users/guilherme/Documents/Dood/ios/Pods/Flipper-Folly/folly/synchronization/DistributedMutex.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
如果我尝试使用 Xcode 在真实设备上运行该应用程序,这是我得到的错误(与 Flipper-Folly 相关):
.../ios/Pods/Headers/Private/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h:1051:5: 'atomic_notify_one<unsigned long>' is unavailable
想法?谢谢!
更新:
React Native 已更新至 0.64.1。你现在可以在你的 package.json 文件中将你的 react-native 依赖改成这个版本,然后运行 ​​npm install

最佳答案

我找到了一个解决方案here .
将此添加到您的 post_install在你的 Podfile 中:

post_install do |installer|
  flipper_post_install(installer)

  ## Fix for Flipper-Folly on iOS 14.5
  find_and_replace("Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h",
    "atomic_notify_one(state)", "folly::atomic_notify_one(state)")

  find_and_replace("Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h",
    "atomic_wait_until(&state, previous | data, deadline)", "folly::atomic_wait_until(&state, previous | data, deadline)")
end
您还需要为此 find_and_replace 添加函数 def函数(您可以将此函数放在 podfile 中的任何位置):
def find_and_replace(dir, findstr, replacestr)
  Dir[dir].each do |name|
      text = File.read(name)
      replace = text.gsub(findstr,replacestr)
      if text != replace
          puts "Fix: " + name
          File.open(name, "w") { |file| file.puts replace }
          STDOUT.flush
      end
  end
  Dir[dir + '*/'].each(&method(:find_and_replace))
end
运行pod install再次,它应该工作。如果您在访问 DistributedMutex-inl.h 文件时遇到与权限相关的错误,请删除您的/pods 文件夹并运行 pod install再次
您应该会看到打印出的文本显示 Fix: Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h 等。如果没有,请仔细检查 find_and_replace 调用中的路径。

关于ios - 将 Xcode 更新到 12.5 和 iOS 更新到 14.5 后,React Native 0.64 不会构建 iOS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67290697/

相关文章:

ios - 调整 UITableView 大小时不需要的图像动画

ios - 一个 Bundle ID 的多个推送证书

javascript - Chart.js 在折线图和 yAxis 单位标题周围添加边框 ([s])

ios - 适用于 iOS 设备的 ADB

ios - 无法将自定义类数组保存到 UserDefaults

ios - 向标签栏添加事件指示器

ios - 如何在ios中点击UITextView打开Pickerview(下拉菜单)?

javascript - 如何使用 JS 将字符串替换为图像

reactjs - 从 getStaticProps 获取的数据未显示在页面组件中

ios - 当没有替代方法时,禁止使用该方法的警告