在将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
想法?谢谢!
更新:
has本机已更新为0.64.1。现在只需在package.json文件中更改对此版本的本机依赖关系,然后运行npm install
。
发布于 2021-04-28 14:35:31
我找到了这里的解决方案。
将其添加到Podfile中的post_install
中:
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调用中的路径。
发布于 2021-05-05 12:28:32
解决方案而不丢失的Flipper功能:
在Podfile中定义Flipper的升级依赖项
反应乡土62
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'
反应乡土63
# 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
cd ios && pod install
和你该走了
反应本地人64
将package.json
中的版本提高到0.64.1
yarn install && pod install --repo-update && react-native run-ios
https://github.com/facebook/react-native/releases/tag/v0.64.1
发布于 2021-04-28 06:05:02
这里有一个开放的RN问题:https://github.com/facebook/react-native/issues/31179
对于我来说,在Podfile
中注释掉Podfile
、pod install
和rebuild是一个临时解决方案。
# 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
https://stackoverflow.com/questions/67290697
复制相似问题