iOS动态框架嵌入第三方静态框架遭App Store审核报错求助
合并静态库到动态Framework可执行文件
静态库.a不应出现在动态Framework的嵌套Frameworks目录中。构建Framework A时,需将Framework B的二进制代码合并到Framework A的可执行文件内:- 在Framework A的Build Phases中添加
Run Script阶段,用lipo命令合并多架构代码; - 确保
Link Binary With Libraries中正确引入Framework B,开启Build Settings里的Dead Code Stripping,避免冗余静态库文件被打包。
- 在Framework A的Build Phases中添加
修正Framework A的Bundle结构
右键查看Framework A的包内容,确认无嵌套Frameworks目录及.a文件。动态Framework标准结构应为:frameworkA.framework/ ├── frameworkA (可执行文件) ├── Headers/ ├── Info.plist若存在嵌套目录,需移除Framework A的Build Phases中对Framework B的
Copy Files操作。检查主App的Embed配置
主App的Embed Frameworks仅添加Framework A,Framework B无需单独添加到任何Copy或Embed步骤。在主App的Build Settings中,将Framework B的状态设为Required或Optional,禁止设为Embed & Sign(静态库无需嵌入)。清理缓存后重新构建
执行Product > Clean Build Folder,删除Derived Data目录,重新构建Framework A与主App。缓存的旧文件可能导致错误打包结构,清理后可解决此类问题。验证Framework B的库类型
部分第三方库标注为静态Framework但实际是动态库,用file命令检查:file path/to/frameworkB.framework/frameworkB若输出含
dynamic library,则需将Framework B作为独立动态Framework嵌入主App,而非嵌套在Framework A中。
内容的提问来源于stack exchange,提问作者Thanh33

