1. 说明:
CopyBundle Resources 主要是一些资源文件会被打包的时候会被放入app中。
Link binary with libraries Link frameworks and libraries with your project’s object files to produce a binary file. You can link a target’s source files against libraries in the target’s active SDK or against external libraries.
Embed Frameworks You can create an embedded framework to share code between your app extension and its containing app.
-
Timeline (Look at this sentence) - "If your containing app target links to an embedded framework, it must include the arm64 architecture or it will be rejected by the App Store."
使用静态库的好处:
- 模块化,分工合作
- 避免少量改动经常导致大量的重复编译连接
- 也可以重用,注意不是共享使用
动态库使用有如下好处:
- 使用动态库,可以将最终可执行文件体积缩小
- 使用动态库,多个应用程序共享内存中得同一份库文件,节省资源
- 使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的。
2. 分析:
动态库需要添加到Embed Frameworks;如果内部含有资源文件最好单独抽出来放到bundle中,直接copy Bundle Resources会导致工程工程重复引用该库,如图:
3. 解决方案:
- 从 General > Embedded Binaries移除 MyEmbeddedFramework.framework
- 如果你的MyEmbeddedFramework.framework也存在 the Build Phases > Copy Phase "Frameworks",移除
- 清理 Build Folder
- 重新添加 MyEmbeddedFramework.framework 到 Embedded Frameworks
- 可以看到一个新的 Build Phase > Embedded Frameworks is created by XCode (自动生成的)
- 运行.
参考文献: