Unity iOS构建上传报错:UnityFramework含不允许的'Frameworks'文件
解决Unity集成Facebook SDK后iOS归档上传报错问题
问题现象
- 集成Facebook SDK前iOS构建归档正常,集成后Xcode归档或Transporter上传均报错:
UnityFramework.framework contains disallowed file 'Frameworks' - 本地Unity导出的UnityFramework文件夹仅含2个文件,无
Frameworks子文件夹 - Android构建无异常
排查与解决步骤
- 修正Facebook SDK的Embed配置
- 打开Xcode工作区,找到所有Facebook相关Framework(如
FBSDKCoreKit.framework、FBSDKLoginKit.framework等) - 确保这些Framework的
Embed设置仅作用于主App Target(选择Embed & Sign或Embed Without Signing),绝对不要在UnityFramework Target中设置Embed属性
- 打开Xcode工作区,找到所有Facebook相关Framework(如
- 清理UnityFramework的构建阶段
- 选中UnityFramework Target,进入
Build Phases标签页:- 删除
Embed Frameworks阶段下所有第三方Framework条目 - 确认
Link Binary With Libraries中仅保留系统原生Framework,第三方Framework只在主App Target中链接
- 删除
- 选中UnityFramework Target,进入
- 修正UnityFramework的类型标识
- 找到UnityFramework目录下的
Info.plist,添加或修改以下键值对:
确保Xcode正确识别其为Framework类型,避免归档时生成违规嵌套结构<key>CFBundlePackageType</key> <string>FMWK</string>
- 找到UnityFramework目录下的
- 清理缓存后重新构建
- 执行Xcode菜单
Product > Clean Build Folder - 删除Derived Data目录(路径:
Xcode > Preferences > Locations > Derived Data) - 重新构建项目并尝试归档
- 执行Xcode菜单
原因说明
这个问题核心是第三方SDK的Embed配置错误,导致UnityFramework在归档过程中被自动嵌套了Frameworks子目录,而App Store明确禁止Framework内部包含子Frameworks结构。将第三方SDK的Embed操作限定在主App Target即可解决该问题。
内容的提问来源于stack exchange,提问作者MossTeMuerA
相关产品推荐
相关产品推荐

