zoukankan      html  css  js  c++  java
  • react-native 2021年问题集合

    1. 错误提示:cannot initialize a parameter of type 'NSArray<id<RCTBridgeModule>> *' with an lvalue of type 'NSArray<Class> *__strong' NSArray<RCTModuleData *> *newModules = [self _initializeModules:modules withDispatchGroup:NULL lazilyDiscovered:YES];
     
    问题描述: 从 GitHub 上看到,这是在 Xcode 12.5 才有的错误。
    解决办法: 把报错的参数类型,按照提示修改为对应的类型即可。
    NSArray<id<RCTBridgeModule>> * 改为 NSArray<Class> *
    如果有集成了 cocoapods 就比较方便,直接在 Podfile 添加以下代码:
    post_install do |installer|
    ## Fix for XCode 12.5
      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. iOS 升级Xcode12.5报错缺少lstdc++6.0.9解决方法

    可以通过把Xcode9中的libstdc++相关库文件复制到Xcode13.3.1中即可。

    在Xcode9中搜索libstdc++相关的库,可以找到四个相关的文件:

    第一个找不到了,这里不需要复制拷贝!!!

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libstdc++.6.0.9.dylib (对应下载后的文件 1)

    以下三个可以对应拷贝

    /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/lib/libstdc++.6.0.9.tbd     (对应下载后的文件 2)

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/lib/libstdc++.6.0.9.tbd  (对应下载后的文件 3)

    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libstdc++.6.0.9.tbd  (对应下载后的文件 4)

    Xcdoe11及以上:
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/usr/lib/libstdc++.6.0.9.dylib(对应下载后的文件 1)


    这是下载链接,

    链接:https://pan.baidu.com/s/1hi1VSvci43d_qg0K0NQqqA 密码:6kwg

    友情提示:如果有担心升级后会影响之前项目的朋友,这个不必担心,我试过了,升级后除了会出现上面的问题,其他都正常,可以正常提交到AppStore!




    3. Unknown argument type '__attribute__' in method -[RCTAppState getCurrentAppState:error:]. Extend RCTConvert to support this type.


    解决方法:node_modules/react-native/React/Base/RCTModuleMethod.mm

    其中的方法修改成下面这样:

    static BOOL RCTParseUnused(const char **input)
    {
      return   RCTReadString(input, "__unused") ||
           RCTReadString(input, "__attribute__((__unused__))") ||
             RCTReadString(input, "__attribute__((unused))");
    }

     



  • 相关阅读:
    paip.关于动画特效原理 html js 框架总结
    paip.utf-8,unicode编码的本质输出unicode文件原理 python
    paip.多维理念 输入法的外码输入理论跟文字输出类型精髓
    paip.前端加载时间分析之道优化最佳实践
    paip.输入法编程--英文ati化By音标原理与中文atiEn处理流程 python 代码为例
    paip.导入数据英文音标到数据库mysql为空的问题之道解决原理
    paip.元数据驱动的转换-读取文件行到个list理念 uapi java php python总结
    paip.python3 的类使用跟python2 的不同之处
    paip.日志中文编码原理问题本质解决python
    paip.性能跟踪profile原理与架构与本质-- python扫带java php
  • 原文地址:https://www.cnblogs.com/zhengyan/p/14826630.html
Copyright © 2011-2022 走看看