升级cordova-ios 7后LD_RUNPATH_SEARCH_PATHS冲突致Pod安装失败求助
解决cordova-ios 7升级后Azure DevOps Pipeline中CocoaPods安装失败问题
问题背景
升级至cordova-ios 7后,执行cordova add platform ios命令虽能完成,但未自动安装CocoaPods,后续cordova prepare ios流程失败,报错如下:
AppName [Release]目标覆盖了Pods/Target Support Files/Pods-AppName/Pods-AppName.release.xcconfig中定义的LD_RUNPATH_SEARCH_PATHS构建设置,这可能导致CocoaPods安装出现问题
由于构建流程基于Azure DevOps Pipeline,无法手动通过Xcode修改配置,可通过以下自动化方案解决:
解决方案
1. 用Cordova Hook自动修复Xcode构建设置
在项目中添加Cordova钩子脚本,在添加iOS平台后自动修正LD_RUNPATH_SEARCH_PATHS的继承配置:
- 新建
hooks/after_platform_add/fix_ld_runpath.js文件,内容如下:
const xcode = require('xcode'); const fs = require('fs'); const path = require('path'); module.exports = function(context) { const projectRoot = context.opts.projectRoot; const xcodeprojPath = path.join(projectRoot, 'platforms', 'ios', 'AppName.xcodeproj', 'project.pbxproj'); const project = xcode.project(xcodeprojPath).parseSync(); // 获取Release目标的构建设置 const releaseConfig = project.pbxXCBuildConfigurationSection(); for (const key in releaseConfig) { if (releaseConfig[key].name === 'Release' && releaseConfig[key].buildSettings) { // 设置LD_RUNPATH_SEARCH_PATHS为继承Pods配置 releaseConfig[key].buildSettings.LD_RUNPATH_SEARCH_PATHS = '"$(inherited)"'; break; } } // 保存修改后的项目文件 fs.writeFileSync(xcodeprojPath, project.writeSync()); console.log('已修复LD_RUNPATH_SEARCH_PATHS配置,改为继承Pods设置'); };
- 在
config.xml中注册该钩子:
<hook type="after_platform_add" src="hooks/after_platform_add/fix_ld_runpath.js" />
- 注意:需先在项目根目录执行
npm install xcode --save-dev安装依赖包。
2. 在Azure DevOps Pipeline中手动执行CocoaPods安装
在Pipeline的cordova prepare ios步骤前,添加一个Bash任务手动执行pod install:
- task: Bash@3 inputs: targetType: 'inline' script: | cd platforms/ios pod install --repo-update displayName: '安装CocoaPods依赖'
该步骤可确保CocoaPods依赖被正确安装,不受cordova命令的影响。
3. 通过build.json配置统一设置构建设置
在项目根目录创建或修改build.json,为iOS Release环境指定LD_RUNPATH_SEARCH_PATHS为继承模式:
{ "ios": { "release": { "buildFlag": [ "LD_RUNPATH_SEARCH_PATHS=\"$(inherited)\"" ] } } }
后续执行cordova build ios --release时,会自动应用该配置,避免覆盖Pods的设置。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

