打包合并iOS的ijkplayer静态库

ijkplayer介绍

B站开源的视频播放框架,基于ffmpeg,支持Android和iOS
github链接

编译生成静态库

  • Build iOS(按照ijkplayer文档执行)
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios
cd ijkplayer-ios
git checkout -B latest k0.8.0
./init-ios.sh
cd ios
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
  • 创建一个新项目,并将ijkplayer-ios/ios/IJKMediaPlayer目录下的IJKMediaPlayer.xcodeproj拉进项目中.

  • 选择TargetIJKMediaFramework,然后点击Edit Scheme按钮

    打包合并iOS的ijkplayer静态库_第1张图片
    Edit.png

  • 设置Run -> info -> Build Configuration 的值为Release

    打包合并iOS的ijkplayer静态库_第2张图片
    Release.png

  • 分别选择模拟器真机,进行一次Bunild.在Products文件夹下就可以看到生成的.framework

  • 右击IJKMediaFramework.framework,选择Show in Finder,可以找到适用于模拟器真机的两个静态库
    打包合并iOS的ijkplayer静态库_第3张图片
    Products.png
  • lipo -info查看信息
cd Release-iphonesimulator/IJKMediaFramework.framework
lipo -info IJKMediaFramework
//输出Architectures in the fat file: IJKMediaFramework are: i386 x86_64
cd Release-iphoneos/IJKMediaFramework.framework
lipo -info IJKMediaFramework
//输出Architectures in the fat file: IJKMediaFramework are: armv7 arm64 
  • 最后在Product目录下执行合并的命令,你就可以得到一个即支持模拟器又支持真机的静态库了
lipo -create Release-iphonesimulator/IJKMediaFramework.framework/IJKMediaFramework Release-iphoneos/IJKMediaFramework.framework/IJKMediaFramework -output IJKMediaFramework
  • 将生成的IJKMediaFramework文件,复制到Release-iphoneos/IJKMediaFramework.framework目录下,替换掉原来的IJKMediaFramework.
  • 至此完整的IJKMediaFramework.framework已经生成,可以直接放到项目中使用了.

注意事项

ijkplayer的文档中列出了一些可能需要添加的依赖库 (Maybe something else, if you get any link error)

  • 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

我遇到的问题

Undefined symbols for architecture x86_64:

打包合并iOS的ijkplayer静态库_第4张图片
Undefined symbols for architecture x86_64.png

解决方法:添加 libstdc++.tbd

你可能感兴趣的:(打包合并iOS的ijkplayer静态库)