簡體   English   中英

在將 Xcode 更新到 12.5 和 iOS 到 14.5 后,React Native 0.64 不會構建 iOS 應用程序

[英]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

對我來說,在Podfilepod 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 的升級依賴

反應本機 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你應該對 go 很好

反應本機 64

在 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' })

這樣可行, ;)

我知道這已經被回答了,但是對於那些將來找到這個線程的人來說,有一個官方鏈接可以解決這個問題:

Xcode 12.5 故障排除指南(RN 0.61/0.62/0.63/0.64)

不確定它對你有多相關,但對我沒有任何幫助,所以我不得不處理節點版本。 下載了一個新的節點版本 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM