您的位置:首页 > 其它

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

2017-11-30 14:18 656 查看
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。
完事儿
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐