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

根据IJKPlayer的README来配置项目


关于IJKPlayer的静态库合并生成以及引用_第1张图片

下面逐句解释下

【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的体积大小)。

lipoXCode提供的关于查看库文件信息的工具,也可以合成或者拆分库文件。

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 (切记不可使用#import ),就可以愉快的使用ijkplayer啦。

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


关于IJKPlayer的静态库合并生成以及引用_第2张图片

你可能感兴趣的:(关于IJKPlayer的静态库合并生成以及引用)