En un complemento de Flutter , me gustaría usar un marco Objective-C en mi parte de iOS escrito en swift , y luego usarlo en un proyecto de Flutter que use Swift como lenguaje de iOS. Después de investigar un poco al respecto (no soy un desarrollador de iOS), descubrí que lo que me gustaría hacer es posible importando el encabezado en el archivo que actúa como encabezado de puente entre Swift y Objective-C, pero el encabezado de puente en el complemento flutter se crea automáticamente si use_frameworks!
está definido en el Podfile (hasta donde yo sé), y no entendí cómo importar realmente el encabezado del Objective-C (creo que definiendo algo en el podspec pero no lo sé) pod en eso. De hecho, si trato de importar algo del pod de Objective-C, XCode se queja (y el compilador también) al decir que "doesn't find the module with name <framework name>"
o que no puede construir código Objective-C. Si trato de usar el marco en un complemento de Objective-C, puedo usarlo, ¡pero solo si comento use_frameworks!
del proyecto Podfile
Al final, me preguntaba si es posible usar el marco externo Objective-c en el complemento de Swift para desarrollar un complemento de aleteo.
Le sugiero que consulte el paquete starflut
https://pub.dev/packages/starflut . Pero lo más probable es que lo que está tratando de lograr se haya hecho más simplemente para usted en otro paquete, pero si está totalmente empeñado en hacerlo usted mismo, creo que debería probar el paquete.
Si sigue siendo un problema relevante para algunos de los desarrolladores, esta es la posible solución.
En el archivo .podspec
de su complemento, pegue esta cadena para marcos remotos
Pod::Spec.new do |s| ... s.dependency 'GoogleWebRTC' end
O, para marcos locales, pegue estos
Pod::Spec.new do |s| ... s.preserve_paths = 'WebRTC.framework' s.xcconfig = { 'OTHER_LDFLAGS' => '-framework WebRTC', 'ENABLE_BITCODE' => 'NO' } s.vendored_frameworks = 'WebRTC.framework' end