升级xcode16之后react-native-zip-archive不兼容,unsupported option ‘-G‘
问题
升级xcode到16之后,xcode build报错:unsupported option '-G' for target 'x86_64-apple-ios13.4-simulator' (in target 'RNZipArchive' from project 'Pods')
出现原因
在 React Native 项目中,当你将 Xcode 升级到 16 后,可能会遇到 RNZipArchive 相关的编译错误,特别是与 -G 选项相关的错误。这个错误通常是由于 Xcode 16 使用了更新的编译器或构建工具链,导致某些旧的构建配置不再兼容。
 在issue里面发现,主要是因为-GCC_PREPROCESSOR_DEFINITIONS
解决办法
1 升级react-native-zip-archive
react-native-zip-archive已经兼容xcode 16,但是需要把min ios version 提升到15.5
2 修改Podfile
post_install do |installer|installer.pods_project.targets.each do |target|if target.name == 'RNZipArchive'target.source_build_phase.files.each do |file|if file.settings && file.settings['COMPILER_FLAGS']file.settings['COMPILER_FLAGS'] = ''endendendend
end
 
3 修改react-native-zip-archive源码
a. 打开node_modules/react-native-zip-archive/RNZipArchive.podspec 
 b. 注释s.compiler_flags =这一行
 c. 使用patch-package保存修改
 d. 执行pod install
4 修改project.pbxproj
前面3种办法均来自github issue,其核心目的都是通过修改或者升级来移除-GCC_PREPROCESSOR_DEFINITIONS
 因为项目的特殊性,以及升级组件可能会带来新的问题,再加上方法2和3都不起作用,我在zip项目里面清理了和-GCC_PREPROCESSOR_DEFINITIONS相关的代码,error log里面还是可以看到clang的命令带了-GCC_PREPROCESSOR_DEFINITIONS,然后我找到了最终的解决办法。
- 打开 
ios/Pods/Pods.xcodeproj/project.pbxproj - 找到 
RNZipArchive.m - 删除 
-GCC_PREPROCESSOR_DEFINITIONS=\"HAVE_INTTYPES_H HAVE_PKCRYPT HAVE_STDINT_H HAVE_WZAES HAVE_ZLIB MZ_ZIP_NO_SIGNING $(inherited)\"
重新build项目,编译成功。 
