Después de actualizar Xcode a 12.5 e iOS a 14.5, no puedo ejecutar la aplicación de iOS en un dispositivo real ni en el simulador.
Después de ejecutar npm run ios , recibo este mensaje:
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.compilerSi trato de ejecutar la aplicación en un dispositivo real usando Xcode, este es el error que obtengo (relacionado con Flipper-Folly):
.../ios/Pods/Headers/Private/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h:1051:5: 'atomic_notify_one<unsigned long>' is unavailable¿Ideas? ¡Gracias!
ACTUALIZAR:
React native se ha actualizado a 0.64.1. Ahora puede simplemente cambiar su dependencia de reacción nativa a esta versión dentro de su archivo package.json, luego ejecute npm install
Actualice para reaccionar nativo 0.64.1 (o superior)
si pasó de 0.63.x a 0.64.x, asegúrese de que en su Podfile haya actualizado use_flipper! post instalación de la sección:
Antes:
post_install do |installer| flipper_post_install(installer) endDespués:
post_install do |installer| react_native_post_install(installer) endejecute ' npx react-native-clean-project ' desde la raíz del proyecto y luego desde dentro de la carpeta ' ./ios ' ejecute ' pod install --repo-update ' y luego ejecute 'pod update'
use_flipper!({ 'Flipper-Folly' => '2.5.3', 'Flipper' => '0.87.0', 'Flipper-RSocket' => '1.3.1' })eso funciona, ;)
Hay un problema de RN abierto aquí: https://github.com/facebook/react-native/issues/31179
Para mí, comentar Flipper en Podfile , pod install y rebuild funcionó como una solución temporal.
# 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) # endHay una solución que encontré aquí .
Agregue esto a su post_install en su 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 También deberá agregar la función def para esta función buscar y find_and_replace (puede colocar esta función en cualquier lugar del archivo pod):
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 Ejecute pod install nuevamente y debería funcionar. Si obtiene un error relacionado con los permisos al acceder al archivo DistributedMutex-inl.h, elimine su carpeta /pods y vuelva a ejecutar pod install
Debería ver el texto impreso que dice Fix: Pods/Flipper-Folly/folly/synchronization/DistributedMutex-inl.h, etc. Si no lo ve, vuelva a verificar la ruta en la llamada find_and_replace.
simplemente comente la línea de flipper en un pod y en Xcode también si no lo está usando, espero que esto se solucione en futuras actualizaciones.
# 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) # endIN Xcode comenta todas las variables de importación y flipper
Solución sin perder la funcionalidad Flipper:
Defina las dependencias actualizadas para Flipper en el Podfile
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 y debería estar listo para comenzar
Sube la versión a 0.64.1 en el package.json
yarn install && pod install --repo-update && react-native run-ios
https://github.com/facebook/react-native/releases/tag/v0.64.1
Se ha lanzado React native 0.64.1 y resolverá esto. Simplemente actualice el número de versión en package.json.
"react-native": "0.64.1",
No es necesario modificar el Podfile si hace esto
Sé que esto ya está respondido, pero para aquellos que encuentren este hilo en el futuro, hay un enlace oficial que aborda este problema:
Guía de resolución de problemas de Xcode 12.5 (RN 0.61/0.62/0.63/0.64)