CocoaPods post_install忽略IPHONEOS_DEPLOYMENT_TARGET 引发RN编译错误
问题根因
- Post_install执行顺序错误:你当前脚本先删除了所有Pod的
IPHONEOS_DEPLOYMENT_TARGET配置,再执行RN 0.66内置的react_native_post_install,该内置脚本默认会把所有RN关联Pod的部署目标重置为iOS 11.0,直接覆盖了你之前的修改操作。 - 第三方Pod硬编码配置:部分依赖库的podspec文件中固定了最低部署目标为iOS 11.0,优先级高于Podfile全局的
platform :ios, '13.0'设置。 - 主项目配置不匹配:如果Xcode主项目的部署目标仍为iOS 11.0,会间接影响Pod的配置继承逻辑。
永久修复方案
- 调整Podfile中的post_install执行顺序,主动统一设置部署目标,修改后的代码如下:
post_install do |installer| # 优先执行RN内置的后置处理脚本 react_native_post_install(installer) __apply_Xcode_12_5_M1_post_install_workaround(installer) # 再强制覆盖所有Pod的部署目标为13.0 installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '13.0' end end end
- 校验Xcode主项目配置:打开Xcode选中主项目
Foo,将「通用 -> 部署信息」的iOS版本设置为13.0,和Podfile全局配置保持一致。 - 清理缓存后重新安装依赖:
cd ios rm -rf Pods Podfile.lock pod deintegrate pod cache clean --all pod install
修改后所有Pod的部署目标会在每次pod install时自动统一为13.0,不需要再手动调整,同时可解决架构符号缺失报错、系统API版本不匹配警告的问题。
内容的提问来源于stack exchange,提问作者david_adler
相关产品推荐
相关产品推荐

