You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftLintBuildToolPlugin归档报错:缺少Bundle Identifier求助

问题分析与解决方案

问题根源

CI流水线执行归档时,你手动指定的签名配置(如CODE_SIGN_STYLE=Manual、PROVISIONING_PROFILE_SPECIFIER等)会被xcodebuild传递给所有依赖的SPM包目标,包括SwiftLintBuildToolPlugin。而SwiftLint的Build Tool Plugin本身不需要代码签名,也没有预配置PRODUCT_BUNDLE_IDENTIFIER,因此触发了缺失bundle ID的错误。

本地Xcode归档正常的原因是:Xcode会自动对Build Tool Plugin这类特殊目标豁免签名检查,不会将主项目的签名规则应用到插件上,但命令行模式下的xcodebuild默认会传递所有签名参数到所有目标。

解决方案

在归档脚本中,针对SwiftLintBuildToolPlugin目标单独设置签名豁免,添加SwiftLintBuildToolPlugin_CODE_SIGNING_REQUIRED=NO参数即可。

修改后的归档脚本如下:

set -o pipefail && xcodebuild \
     -project "$IOS_PROJECT_NAME.xcodeproj" \
     -scheme "$IOS_SCHEME" \
     -destination 'generic/platform=iOS' \
     -skipPackagePluginValidation \
     -skipMacroValidation \
     -configuration Release \
     -archivePath "build/$IOS_SCHEME.xcarchive" \
     clean archive \
     CODE_SIGN_STYLE=Manual \
     "PROVISIONING_PROFILE_SPECIFIER=$IOS_PROFILE_SPECIFIER" \
     "DEVELOPMENT_TEAM=$IOS_TEAM_ID" \
     "CODE_SIGN_IDENTITY=$IOS_CODE_SIGN_IDENTITY" \
     SwiftLintBuildToolPlugin_CODE_SIGNING_REQUIRED=NO

补充说明

如果上述方法仍有问题,可以尝试添加SwiftLintBuildToolPlugin_PRODUCT_BUNDLE_IDENTIFIER="com.yourteam.SwiftLintPlugin"临时指定一个bundle ID(不需要对应实际的配置文件),配合签名豁免参数一起使用,确保插件目标能通过签名检查。

内容的提问来源于stack exchange,提问作者netshark1000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 13:25:02