上一篇 iOS - ijkplayer集成【一】我和你们介绍了如何对ijkplayer的获取和编译后,今天让我和你们继续说一下,如何打包使用ijkplayer。
【集成方式】
在项目中,我们要使用和集成ijkplayer可以有2种方式。
第一种方式:导入IJKMediaPlayer.xcodeproj
和demo里面一样,直接把整个ijkplayer的项目导入进去。这种方法虽然来的简单,但真的一点都不高大上。而且在多人维护的时候,很容易会出现一种误操作,进行了修改。导致了一些异常的bug的出现。
具体方式请查考demo中的方式,这里不作进一步的描述。
第二种方式:编译成framework
把ijkplayer编译成framework然后拖动到项目里面进行集成。其实对于一般的开源作者来说,大家都希望以这样的方式进行集成和使用的。正如pod一样。而且真的不一点都不难,就算是刚刚入门的玩家,也可以简单完成。
现在开始进入正题:
【编译framework】
1. 打开ijkplayer项目工程后,然后选择需要的framework,有2个版本的framework。一为SSL,另外一个是不带SSL。正如上一篇所说的,带SSL就是可以访问https的URL。选择自己需要的版本,然后设置工程的 scheme 为release。如图
2. 随便选择一个模拟器版本,然后进行编译即可。如图:
3. 然后连接真机,选择真机进行编译即可。
但因为ijkplayer对armv7的机器降低的支持,所以我们在使用iphone5s的机器以上,则会出现编译失败。主要是说不支持armv7的错误。主要的报错信息为:armv7/avconfig.h file not found 如图:
要解决这个问题也是十分简单的,我们只要把对armv7的支持去除即可,如图:
需要注意的是,因为有2个版本的framework,所以需要在target中选中你需要的framework,然后进行删除armv7的支持即可。
这样我们就完成了framework。
可能有些好奇宝宝会问,为什么要在模拟器和真机下分别进行编译了?一共编译了2次?是我吃饱没事情做?还是纯粹无聊?
其实不是的,因为framework在什么环境下进行编译,则只能在对应的环境进行编译。如模拟器进行编译的,则集成在自己的项目后,只能在模拟器进行使用。在真机下是会报错的。
那这样使用framework不就很麻烦,还要切换来切换去。莫急,以下就是把两个framework合并成一个可以通用的framework
1. 首先把两个framework都找到。在项目的product文件夹中,找到编译好的framework,然后右键show in the finder.如图:
2. 分别在模拟器和真机下找到framework进行合成
3. 记住我们要找的是【IJKMediaFrameworkWithSSL】,而不是外面的【IJKMediaFrameworkWithSSL.framework】如图:
4. 执行命令 lipo -create "真机framework路径" "模拟器framework路径" -output "合并后的文件路径"
5. 执行完后,就可以进行合并了。把刚刚已经合成的文件,进行替换即可。如图:
【使用ijkplayer】
1. 把刚刚替换好的framework拖到工程即可,一定!一定!一定!要勾选Copy items if needed和对应的target
2. 添加下列依赖到工程
libc++.tbd
libz.tbd
libbz2.tbd
AudioToolbox.framework
UIKit.framework
CoreGraphics.framework
AVFoundation.framework
CoreMedia.framework
CoreVideo.framework
MediaPlayer.framework
MobileCoreServices.framework
OpenGLES.framework
QuartzCore.framework
VideoToolbox.framework