[英]React Native 0.64 won't build iOS app after updating Xcode to 12.5 and iOS to 14.5
將 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
我在這里找到了一個解決方案。
將此添加到post_install
中的 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
function 添加 function def function(您可以將此 function 放在 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 調用中的路徑。
這里有一個開放的 RN 問題: https://github.com/facebook/react-native/issues/31179
對我來說,在Podfile
、 pod install
和 rebuild 中注釋掉Flipper
是一種臨時解決方案。
# 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
不丟失 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' 👈
# 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
你應該對 go 很好
在 package.json 中將版本提升到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
升級以響應本機 0.64.1(或更高版本)
如果您從 0.63.x 移動到 0.64.x,請確保在您的 Podfile 中更新了 use_flipper: 安裝后部分:
前:
post_install do |installer|
flipper_post_install(installer)
end
后:
post_install do |installer|
react_native_post_install(installer)
end
從項目根目錄運行“npx react-native-clean-project ”,然后從“ ./ios ”文件夾中運行“ pod install --repo-update ”,然后可能運行“pod update”
use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })
這樣可行, ;)
我知道這已經被回答了,但是對於那些將來找到這個線程的人來說,有一個官方鏈接可以解決這個問題:
不確定它對你有多相關,但對我沒有任何幫助,所以我不得不處理節點版本。 下載了一個新的節點版本 14.15.0,切換到它,創建了一個新項目並開始運行。
只需注釋掉吊艙和 Xcode 中的腳蹼線,如果您不使用它,希望這將在未來的更新中修復。
# Note that if you have use_frameworks! enabled, Flipper will not work and
# you should disable the next line.
# use_flipper!({ 'Flipper' => '0.79.1'})
# post_install do |installer|
# react_native_post_install(installer)
# end
IN Xcode 注釋所有導入和翻轉變量
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.