公司另外一个项目有视频播放功能,整个视频采用了阿里云的一个视频播放器,看了看他们给的案例是需要引用一个阿里云播放器的静态库,所以就在他们平台上下载了静态库,并引用到工程中。然后command+b进行了编译,OK,编译顺利通过,然后就又进行了一次真机运行,项目刚刚启动就发生了崩溃,查看报错信息如下:
dyld: Library not loaded: @rpath/AliyunVodPlayerSDK.framework/AliyunVodPlayerSDK
Referenced from: /var/containers/Bundle/Application/0AACC1FE-2FBC-4DB3-A02C-E4FFF0C3CE44/NewSikaoLine.app/NewSikaoLine
Reason: image not found
说出来不怕笑话,只看最后一行 Reason: image not found 以为是图片丢失,然后开始了漫漫地寻找丢失图片之路。。。
认真研究这几行提示,说是有一个动态库没有被载入。
dyld: (the dynamic link editor)动态链接器,其源码是开源的。
image: 程序中对应实例可简称为image(如程序可执行文件,Framework库,bundle文件)。
dyld主要负责初始化程序环境,将可执行文件以及依赖库与插入库加载进内存生成对应的image(镜像文件)对象,
对这些image进行链接,调用各image的初始化方法等。
此image非彼image。。。现在想起来还是觉得当时自己挺搞笑的。。。
问题解决:
在Target的General选项卡里, 选择EmbeddedBinaries选项, 将找不到的AliyunVodPlayerSDK.framework添加进来, 然后就一键解决了..
分析原因:
在生成Framework的时候, 缺少了生成了动态库,所以需要上面这一步, 改成静态库就不需要这一步了。
网友评论