CocoaPods推送私有库验证失败,提示xcodebuild返回非成功退出码
CocoaPod私有老旧组件迁移推送失败解决建议
核心错误为*BBCommon/no-arc子规格链接器构建失败*,本地Xcode可正常构建是因为本地工程配置、缓存覆盖了验证逻辑,pod repo push的验证阶段会生成独立的全新空工程编译podspec,环境与本地不一致。
可按以下优先级尝试解决方案:
- 补全no-arc子规格的配置
子规格不会默认继承主spec的依赖、编译配置,需要在subspec 'no-arc'代码块中显式补充配置,修改后代码如下:s.subspec 'no-arc' do |sp| sp.source_files = "BBCommon/BBCommon/Public/Google/*.{h,m}" sp.requires_arc = false # 新增配置开始 sp.ios.deployment_target = s.ios.deployment_target sp.frameworks = s.ios.frameworks sp.libraries = s.libraries sp.public_header_files = "BBCommon/BBCommon/Public/Google/*.h" sp.dependency "BBCommon" # 依赖主spec的核心代码,避免头文件找不到 # 新增配置结束 end - 增加验证跳过参数,规避非核心校验逻辑
执行推送命令时补充--skip-import-validation、--use-libraries参数,跳过模块导入校验、强制使用静态库验证:pod repo push {privatereponame} BBCommon.podspec --allow-warnings --verbose --skip-import-validation --use-libraries - 强制指定部署目标,解决依赖版本适配警告
在podspec主配置中添加编译参数,强制所有子规格的部署目标为13.0,避免依赖包低版本部署目标触发编译错误:s.pod_target_xcconfig = { 'IPHONEOS_DEPLOYMENT_TARGET' => '13.0' } - 关闭新构建系统验证
老旧代码可能与Xcode新构建系统不兼容,命令末尾追加参数指定使用旧构建系统验证:pod repo push {privatereponame} BBCommon.podspec --allow-warnings --verbose --skip-import-validation --use-libraries -- --UseModernBuildSystem=NO - 私有源可强制推送
若确认组件在业务工程中可正常集成编译,可添加--force参数直接跳过验证强制推送到私有源,不影响实际使用。
内容的提问来源于stack exchange,提问作者Nate Birkholz
相关产品推荐
相关产品推荐

