SPM引入预编译xcframework提交App Store报ITMS-90205/90206错误如何解决
SPM接入预编译XCFramework提交App Store报错解决方案
问题根因
你遇到的ERROR ITMS-90205、ERROR ITMS-90206报错核心原因是:预编译的Custom.framework在SPM构建流程中被错误地将自身依赖的SVProgressHUD.framework嵌入到了自身的Frameworks目录下,而App Store规则明确禁止Framework内部嵌套其他Framework。
可行解决方案
1. 调整预编译XCFramework的打包规则
打包Custom.xcframework时,仅对SVProgressHUD做符号链接,不要执行Embed操作,最终打包出的Custom.xcframework内部不能包含SVProgressHUD.framework实体,仅保留符号引用即可。
2. 修正SPM包的Package.swift配置
用于分发Custom.xcframework的SPM清单需要调整依赖声明逻辑,避免依赖被嵌套打包,参考配置如下:
// Package.swift示例 let package = Package( name: "Custom", platforms: [.iOS(.v12)], products: [ .library( name: "Custom", targets: ["CustomWrapper"] ), ], dependencies: [ // 平级声明SVProgressHUD依赖 .package(url: "对应SVProgressHUD的SPM源地址", from: "匹配的版本号") ], targets: [ // 预编译二进制目标声明 .binaryTarget( name: "Custom", path: "./Custom.xcframework" ), // 新增中间包装目标处理依赖关联 .target( name: "CustomWrapper", dependencies: [ .target(name: "Custom"), .product(name: "SVProgressHUD", package: "SVProgressHUD") ], path: "./Sources/CustomWrapper" ) ] )
主项目直接依赖上述配置中的CustomWrapper即可,SPM会自动将Custom和SVProgressHUD都放置到应用层级的Frameworks目录下,不会出现嵌套问题。
3. 主项目构建设置校验
- 打开主项目构建设置,搜索
Always Embed Swift Standard Libraries,确保仅主target设置为YES,所有依赖Framework对应的target均设置为NO - 检查主target的
Embed Frameworks配置,确认Custom.framework和SVProgressHUD.framework都在列表中,且设置为Embed & Sign
4. 低版本Xcode兼容处理
Xcode 12.5的SPM存在二进制依赖处理的已知Bug,如果上述配置仍无效,升级到Xcode 13及以上版本后重新归档即可,该问题已在后续Xcode版本中被官方修复。
内容的提问来源于stack exchange,提问作者nahung89
相关产品推荐
相关产品推荐

