将 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/