美文网首页
关于IJKPlayer的静态库合并生成以及引用

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

作者: Ginhoor | 来源:发表于2017-04-07 12:28 被阅读0次

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

    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的静态库合并生成以及引用

          本文链接:https://www.haomeiwen.com/subject/ceowtttx.html