Expo EAS Build部署目标错误:已配置iOS最低版本但仍提示组件不兼容
遇到这种明明配置了部署目标却不生效的情况确实挺闹心的,我来分享几个实际项目里验证过的解决思路,你可以逐个尝试:
先确认
expo-build-properties插件的有效性
有时候旧版本的插件可能存在配置不生效的bug,先把插件更到最新版试试:npx expo install expo-build-properties@latest另外再仔细核对一遍app.json里的插件配置,确保嵌套结构、逗号括号都没有语法错误——你贴的配置看起来没问题,但细节上的小失误有时候也会导致配置不被读取。
强制给目标Pod指定部署版本
有些第三方Pod不会自动继承项目的部署目标,这时候需要手动在Podfile里强制设置。先通过npx expo prebuild生成ios目录,然后在ios/Podfile里添加这段代码:post_install do |installer| installer.pods_project.targets.each do |target| if target.name == 'NFCPassportReader' target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '14.0' end end end end添加完执行
cd ios && pod install --repo-update,之后再重新触发EAS构建。清理EAS的构建缓存
EAS有时候会缓存之前的构建环境,导致新的配置无法生效。触发构建时加上清缓存参数:npx eas build --platform ios --clear-cache这个操作会强制重新拉取所有依赖并使用新的配置,很多时候能解决缓存导致的问题。
临时修改组件的Podspec(应急方案)
如果上面的方法都没用,可以去node_modules/@better-network/react-native-nfc-passport-reader/ios目录下找到组件的Podspec文件,查看里面的platform :ios设置是不是硬编码成了低于14.0的版本。如果是,临时改成14.0再构建——不过注意这个修改在重新安装依赖后会丢失,最好后续给组件作者提个PR修复这个问题。
这些方法应该能覆盖大部分场景,希望能帮你解决这个问题!
备注:内容来源于stack exchange,提问作者Tom Hopkins

