No puedo construir un proyecto React Native, que se construyó correctamente usando Xcode 11, usando Xcode 12.5.
Ya no puedo usar Xcode 11 porque solo las versiones más actuales de Xcode tienen la API necesaria para publicar/cargar en TestFlight y la tienda de aplicaciones.
Ahora recibo tres errores de compilación:
Cannot initialize a parameter of type 'NSArray<id<RCTBridgeModule>> *' with an rvalue of type 'NSArray<Class> *' Cannot initialize a parameter of type 'NSArray<id<RCTBridgeModule>> *' with an rvalue of type 'NSArray<Class> *' Cannot initialize a parameter of type 'NSArray<id<RCTBridgeModule>> *' with an rvalue of type 'NSArray<Class> *'También noté que los objetivos de implementación se actualizaron automáticamente del 10 al 9:
- IPHONEOS_DEPLOYMENT_TARGET = 9.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.1;Se agregaron algunas propiedades nuevas relacionadas con Clang:
+ CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;¿Cómo puedo configurar el proyecto para implementar esta aplicación usando Xcode 12.5?
$ información de reacción nativa información Obteniendo información del sistema y bibliotecas... Sistema: SO: macOS 11.3 CPU: (4) x64 Intel(R) Core(TM) i3-8100B CPU @ 3.60GHz Memoria: 256.45 MB / 8.00 GB Shell: 3.2.57 - /bin/bash Binarios: Nodo: 10.16.0 - /usr/local/bin/node Yarn: 1.21.1 - ~/npm-global/bin/yarn npm: 6.9.0 - /usr/local/ bin/npm Watchman: 4.9.0 - /usr/local/bin/watchman SDK: iOS SDK: Plataformas: iOS 14.5, DriverKit 20.4, macOS 11.3, tvOS 14.5, watchOS 7.4 IDE: Xcode: 12.5/12E262 - /usr/bin /xcodebuild npmPackages: reaccionar: ^16.11.0 => 16.12.0 reaccionar nativo: 0.61.4 => 0.61.4 npmGlobalPackages: reaccionar nativo-cli: 2.0.1
Este funcionó para mí. Actualice el PODFILE con:
post_install do |installer| ## Fix for XCode 12.5 beta find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm", "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules") endY al final de podfile agregue una función:
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)) endEl último paso si ejecutar:
pod installLo arreglé cambiando un parámetro de conversión en el módulo React RCTCxxBridge.mm así:
- (NSArray<RCTModuleData *> *)_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules withDispatchGroup:(dispatch_group_t)dispatchGroup lazilyDiscovered:(BOOL)lazilyDiscoveredPara:
- (NSArray<RCTModuleData *> *)_initializeModules:(NSArray<Class> *)modules withDispatchGroup:(dispatch_group_t)dispatchGroup lazilyDiscovered:(BOOL)lazilyDiscoveredEstoy ejecutando 0.59 y no uso CocoaPods, pero la solución básica es que se convierte de la forma:
NSArray<id<RCTBridgeModule>> *)modulesDebe ser reemplazado con:
NSArray<Class> *)modulesEste funcionó para mí.
(NSArray<id<RCTBridgeModule>> *)modules a (NSArray<Class> *)modulesRCTBridgeModuleNameForClass(module)) a RCTBridgeModuleNameForClass(Class(module)));He enfrentado el mismo problema y después de usar este script, el problema se resolvió para estos tres errores, pero se enfrentó a uno nuevo (No hay función coincidente para llamar a 'RCTBridgeModuleNameForClass')
que se resolvió agregando esta línea en el script de postinstalación
post_install do |installer| find_and_replace("../node_modules/react-native/React/CxxBridge/RCTCxxBridge.mm", "_initializeModules:(NSArray<id<RCTBridgeModule>> *)modules", "_initializeModules:(NSArray<Class> *)modules") find_and_replace("../node_modules/react- native/ReactCommon/turbomodule/core/platform/ios/RCTTurboModuleManager.mm", "RCTBridgeModuleNameForClass(module))", "RCTBridgeModuleNameForClass(Class(module)))") endAbra su proyecto en Xcode y vaya a Archivo > Configuración del espacio de trabajo > Sistema de compilación > Sistema de compilación heredado