[经验]Class MediaTransCoder is implemented in both One of the two will be used. Which one is undefined

来源:互联网 发布:数据库关键字查询 编辑:程序博客网 时间:2024/05/17 06:11
App中既有一个库叫:libMediaPlayer.a(播放器库)。本次需求需要加另外一个MediaTransCoder.framework(视频转码库)。在控制台遇到这个提示:
Class MediaTransCoder is implemented in both /private/var/containers/Bundle/Application/7D09FAA4-C843-44D9-89ED-132F614B5F5D/FSVideo.app/Frameworks/MediaTransCoder.framework/MediaTransCoder (0x10675c6d0) and /var/containers/Bundle/Application/7D09FAA4-C843-44D9-89ED-132F614B5F5D/FSVideo.app/FSVideo (0x10301d7e0). One of the two will be used. Which one is undefined.

运行framework中的方法crash。奇怪的是有些方法crash了。有些方法调用却正常。
排查可能的问题:
1. 库不对(framework的demo可以运行,framework直接拷贝的)
2. 对象释放了,但又是单例(不存在释放)
3. 没在other link flag中添加Objc,(已确认添加)
4. 新建一个空工程集成MediaTransCoder.framework。是可以运行framework中的方法。
5. 听说从xcode4.2 开始已经不用在-fore_load 和-load_all了


可以断定是客户端的问题,不是framework的问题。查了很久,最后还是根据控制台输出,找到了问题所在:
Class MediaTransCoder is implemented in both 
/private/var/containers/Bundle/Application/7D09FAA4-C843-44D9-89ED-132F614B5F5D/FSVideo.app/Frameworks/MediaTransCoder.framework/MediaTransCoder (0x10675c6d0) and 
/var/containers/Bundle/Application/7D09FAA4-C843-44D9-89ED-132F614B5F5D/FSVideo.app/FSVideo (0x10301d7e0). 
One of the two will be used. Which one is undefined.(两者中的一个将被使用。哪一个是未定义的。这下我知道问题在哪儿


[原因]:

MediaTransCoder.framework中含有MediaTransCoder,另外一个库libMediaPlayer.a也含有MediaTransCoder

MediaTransCoder.framework和libMediaPlayer.a都是一个团队提供的,让他们解决了,去除重复的MediaTransCoder。

完事儿

阅读全文
1 0
原创粉丝点击