关于IJKPlayer的静态库合并生成以及引用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Ginhoor/article/details/69525652
根据IJKPlayer的README来配置项目



下面逐句解释下
【1】git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
    通过git下载ijkplayer的项目
【2】cd ijkplayer-ios
   git checkout -B latest k0.7.8.
【3】./init-ios.sh
    执行init-ios.sh脚本 初始化项目,主要是下载依赖库ffmpeg。
【4】cd ios
    ./compile-ffmpeg.sh clean
    执行compile-ffmpeg.sh 的clean命令 清除ffmpeg已有静态库构建
    ./compile-ffmpeg.sh all
    执行compile-ffmpeg.sh 的all命令 重新生成ffmpeg所有静态库构建

接下去一大块是ijkplayer导入项目的操作,这里并不推荐大家使用这种方法,这种做法对原有项目结构的侵入性比较强,复用性也比较差,下面介绍下另一种方法,将ijkplayer打包成静态库使用。

【1】打开IJKMediaPlayer.xcodeproj 项目(默认路径:ijkplayer-ios/ios/IJKMediaPlayer/IJKMediaPlayer.xcodeproj)
【2】选择Target -> IJKMediaFramework,再Edit Scheme -> info -> Build Configuration 设置为 Release(通常Release环境下的性能更优越)
【3】选择任意模拟器执行一次Build操作,再选择真机(或Generic iOS Device)执行一次Build。
【4】在Xcode项目中找到Product目录,右键生成的IJKMediaFramework.framework,选择Show in Finder,你便可以查看到生成的静态库(PS:路径类似/Users/xxxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dugubsjzusmazvdbkmftndxbzhpi/Build/Products/Release-iphoneos/IJKMediaFramework.framework)

至此为止,你已经得到了一个模拟器静态库与一个真机静态库。

接下去要讲如果将两个静态库合成(这是为了方便开发,如果是生产环境,只使用真机静态库更为有效,可以减少App的体积大小)。

lipo XCode 提供的关于查看库文件信息的工具,也可以合成或者拆分库文件。
lipo -create "真机静态库路径/IJKMediaFramework" "模拟器静态库路径/IJKMediaFramework" -output "输出文件路径/IJKMediaFramework"

例如:lipo -create "/Users/xxxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dugubsjzusmazvdbkmftndxbzhpi/Build/Products/Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework" "/Users/xxxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dugubsjzusmazvdbkmftndxbzhpi/Build/Products/Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework" -output "/Users/xxxx/Library/Developer/Xcode/DerivedData/IJKMediaPlayer-dugubsjzusmazvdbkmftndxbzhpi/Build/Products/IJKMediaFramework"

这样你就能获得到一个IJKMediaFramework 文件。
将这个文件覆盖到真机静态库下(xxx/IJKMediaFramework.framework/IJKMediaFramework)替换原有文件,然后这个静态库就可以使用啦。

下面在你的项目中,导入这个合并好的IJKMediaFramework.framework

在引入依赖库 Build Phases -> Link Binary with Libraries

AudioToolbox.framework
AVFoundation.framework
CoreGraphics.framework
CoreMedia.framework
CoreVideo.framework
libbz2.tbd
libz.tbd
MediaPlayer.framework
MobileCoreServices.framework
OpenGLES.framework
QuartzCore.framework
UIKit.framework
VideoToolbox.framework

在你想使用ijkplayer的文件中,引入#import <IJKMediaFramework/IJKMediaFramework.h>(切记不可使用#import <IJKMediaFramework.framework/IJKMediaFramework>),就可以愉快的使用ijkplayer啦。


如果有同学碰到这个问题 请再引入libc++.tbd(README中没有提起


猜你喜欢

转载自blog.csdn.net/Ginhoor/article/details/69525652