从您的错误消息中,有几件事需要检查。
dyld: Library not loaded: @rpath/PodA.framework/PodA
Referenced from: .../Build/Products/Development-iphonesimulator/FrameworkA.framework/FrameworkA
Reason: image not found
看起来很奇怪的第一件事是正在加载的框架(FrameworkA.framework)的路径没有嵌入到应用程序中。检查 MainAppTarget 的“General”选项卡,并确保框架出现在“Embedded Binaries”和“Linked Frameworks and Libraries”部分。
其次,@rpath
是runpath
搜索路径列表的简写,它告诉dyld
在哪里寻找所需的库。
这是 Github 上的一个示例项目,其主应用程序使用一个 Cocoapod,主应用程序依赖的动态框架使用不同的 Cocoapod:https ://github.com/dtweston/FrameworkPodTest
您应该检查所有涉及的目标的构建设置(包括由 Pods 项目构建的框架目标):
- 运行路径搜索路径 (
LD_RUNPATH_SEARCH_PATHS
)
- 在示例项目中,这些是由 cocoapod 确定的,但每一个都设置为
$(inherited) @executable_path/Frameworks @loader_path/Frameworks
- 动态库安装名称 (
LD_DYLIB_INSTALL_NAME
)
- 在示例项目中,这与默认值相比没有变化
$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(EXECUTABLE_PATH)
- 动态库安装名称库 (
DYLIB_INSTALL_NAME_BASE
)
- 在示例项目中,设置为
@rpath
(再次由 Cocoapod 确定)
这是构建的应用程序包的屏幕截图,显示了它的布局方式:

您可以使用otool
获取有关 xcodebuild 如何组装应用程序的信息。
这是主要的应用程序二进制文件:
otool -L FrameworkPodTest
FrameworkPodTest:
@rpath/KeychainSwift.framework/KeychainSwift (compatibility version 1.0.0, current version 1.0.0)
@rpath/Lottie.framework/Lottie (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/UIKit.framework/UIKit (compatibility version 1.0.0, current version 61000.0.0)
@rpath/Framework.framework/Framework (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1560.10.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics (compatibility version 64.0.0, current version 1245.9.2)
...
和框架二进制文件:
otool -L Frameworks/Framework.framework/Framework
Frameworks/Framework.framework/Framework:
@rpath/Framework.framework/Framework (compatibility version 1.0.0, current version 1.0.0)
@rpath/KeychainSwift.framework/KeychainSwift (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/Foundation.framework/Foundation (compatibility version 300.0.0, current version 1560.10.0)
/usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1252.200.5)
@rpath/libswiftCore.dylib (compatibility version 1.0.0, current version 1000.11.42)
@rpath/libswiftCoreFoundation.dylib (compatibility version 1.0.0, current version 1000.11.42)
...