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=1、RCT_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标识并添加调试所需的DEBUG、RCT_DEV宏定义,同时配置Swift编译条件,确保自定义Debug Scheme能正常启用所有调试功能。
内容的提问来源于stack exchange,提问作者Alexey




