React Native: Build failed Cannot initialize a parameter of type ‘NSArray> ’ with an rvalue of type ‘NSArray ’...
全栈老韩
全栈工程师,擅长iOS App开发、前端(vue、react、nuxt、小程序&Taro)开发、Flutter、React Native、后端(midwayjs、golang、express、koa)开发、docker容器、seo优化等。
当使用react native的某些早期版本时,单独运行iOS工程,可能会遇到如下问题:
Build failed Cannot initialize a parameter of type ‘NSArray> ’ with an rvalue of type ‘NSArray ’...
这个问题,我在react-native 0.61.5 版本时碰到了。
这个问题也可能会因为react-native的版本升级时遇到,暂时不确定是否和pod的模块化有关,但是仍然需要在podfile中做一个配置,使桥接模块bridge类名查找更广。
具体的操作如下,在podfile中添加如下的ruby语句:
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)))")
end
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
添加完这2个ruby函数之后,重新运行一下:
pod install --verbose
我当前的问题是这样解决的。
发布于2024-02-22 05:17:35
浏览量122·
暂无评论,快来发表第一条评论吧