You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

RN 0.73.6升级至0.78.3后自定义Debug Test Scheme开发功能异常

React Native 0.78.x 自定义Debug Scheme无法使用调试功能的原因及解决方法

问题原因

React Native从0.74版本开始,对iOS构建配置的调试标识注入逻辑做了严格限制:只有**构建配置名称严格等于「Debug」**时,RN的自动配置脚本才会自动添加DEBUG=1RCT_DEV=1这类调试必需的预编译宏和编译条件。

你的自定义「Debug Test」Scheme对应的构建配置名称不符合标准「Debug」,因此RN没有为其注入这些调试标识——这就导致应用虽然能连接Metro,但热重载、开发者菜单、开发者工具等依赖RCT_DEV宏的调试功能被禁用。

解决方法

在Podfile的post_install块中添加以下代码,手动为包含「Debug」关键词的非标准构建配置注入调试标识:

installer.pods_project.targets.each do |target|
  target.build_configurations.each do |config|
    if config.name.to_s != 'Debug' && config.name.to_s.include?('Debug')
      cflags = config.build_settings['OTHER_CFLAGS'] || ''
      cxxflags = config.build_settings['OTHER_CPLUSPLUSFLAGS'] || ''
      config.build_settings['OTHER_CFLAGS'] = cflags.to_s.gsub('-DNDEBUG', '') + ' -DDEBUG -DRCT_DEV=1'
      config.build_settings['OTHER_CPLUSPLUSFLAGS'] = cxxflags.to_s.gsub('-DNDEBUG', '') + ' -DDEBUG -DRCT_DEV=1'
      pp = config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] || []
      pp = [pp].flatten
      pp << 'DEBUG=1'
      pp << 'RCT_DEV=1'
      config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = pp.uniq
      swift = config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] || ''
      config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] = "#{swift} DEBUG RCT_DEV"
    end
  end
end

这段代码会遍历所有Pod target的构建配置,筛选出名称包含「Debug」但不是严格「Debug」的配置,移除Release模式的NDEBUG标识并添加调试所需的DEBUGRCT_DEV宏定义,同时配置Swift编译条件,确保自定义Debug Scheme能正常启用所有调试功能。

内容的提问来源于stack exchange,提问作者Alexey

火山引擎 最新活动