我们在添加第三方库的时候,经常会遇到如下提示:
dyld: Library not loaded:@executable_path/../Frameworks/XXXX.dylib
Reason: image not found
某个路径下dylib库无法加载,
出现这个问题一般有两种情况:
第一:Embedded Binaries未添加这个库
我们只需要再binaries中手动添加这个库,系统就会去自动加载这个库并识别库里的文件
一般大多数时候可以解决这个问题.
第二:target版本不匹配
当我们xcode支持的系统版本和第三方库中系统支持版本不匹配的时候,也可能出现这个问题,这个时候如果需要动态识别这个文件就不能强引用这个第三方库,就如同代理一样,我们需要把这个库的识别方式改为optional可选项.
但是当系统版本为不支持的系统版本时候,仍然会崩溃.
第三:最后一种需要手动copy files
在build phases 中点击+手动添加copy files
手动将不加载的三方库添加进去, 注意,第三方lib.a包或者framework包Destination 需要选择framework,不能选择resource.
对于@executable_path执行路径,我们需要新建script phase
我们根据自己的需要写不同的脚本使用不同的解释器,我们可以通过
cat /etc/shells 查看系统支持的解释器.
例如我用到的:
shell:bin/bash
install_name_tool -change /usr/local/lib/(你的库name).dylib @executable_path/../Frameworks/(你的库name).dylib"$CONFIGURATION_BUILD_DIR/$EXECUTABLE_PATH"
最后:
添加过这些设置,试试执行你的项目吧,应该能解决大多数问题了,欢迎留言相互探讨。