Gui*_*iol 32 xcode ios reactjs 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
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用 Xcode 在真实设备上运行该应用程序,则会出现以下错误(与 Flipper-Folly 相关):
.../ios/Pods/Headers/Private/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h:1051:5: 'atomic_notify_one<unsigned long>' is unavailable
Run Code Online (Sandbox Code Playgroud)
想法?谢谢!
更新:
React Native 已更新至 0.64.1。您现在可以在 package.json 文件中将您的 react-native 依赖项更改为此版本,然后运行npm install
Gui*_*iol 26
将此添加到您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
Run Code Online (Sandbox Code Playgroud)
您还需要为此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
Run Code Online (Sandbox Code Playgroud)
pod install再次运行,它应该可以工作。如果您在访问 DistributedMutex-inl.h 文件时遇到与权限相关的错误,请删除您的 /pods 文件夹并pod install再次运行
您应该会看到打印出的文本,上面写着 Fix: Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h 等。如果没有,请仔细检查 find_and_replace 调用中的路径。
这里有一个开放的 RN 问题:https : //github.com/facebook/react-native/issues/31179
对于我注释掉Flipper的Podfile,pod install和重建工作作为一个临时的解决方案。
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable these next few lines.
# use_flipper!
# post_install do |installer|
# flipper_post_install(installer)
# end
Run Code Online (Sandbox Code Playgroud)
不丢失 Flipper 功能的解决方案:
在Podfile 中定义 Flipper 的升级依赖
def add_flipper_pods!(versions = {})
versions['Flipper'] ||= '~> 0.87.0'
versions['DoubleConversion'] ||= '1.1.7'
versions['Flipper-Folly'] ||= '~> 2.5.3'
versions['Flipper-Glog'] ||= '0.3.6'
versions['Flipper-PeerTalk'] ||= '~> 0.0.4'
versions['Flipper-RSocket'] ||= '~> 1.3.1'
Run Code Online (Sandbox Code Playgroud)
# Enables Flipper.
#
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable these next few lines.
use_flipper!({'Flipper' => '0.87.0' , 'Flipper-Folly' => '2.5.3' , 'Flipper-RSocket' => '1.3.1' })
post_install do |installer|
flipper_post_install(installer)
end
Run Code Online (Sandbox Code Playgroud)
cd ios && pod install 你应该很高兴去
将版本提升到 0.64.1 package.json
yarn install && pod install --repo-update && react-native run-ios
https://github.com/facebook/react-native/releases/tag/v0.64.1
React Native 0.64.1 已经发布,将解决这个问题。只需更新 package.json 中的版本号即可。
"react-native": "0.64.1",
如果这样做,则无需修改 Podfile
| 归档时间: |
|
| 查看次数: |
12430 次 |
| 最近记录: |