ijkplayer打包framework,支持https和Bitcode

準備工具

  • homebrew 
      ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • git
    brew install git
  • yasm
    brew install yasm

獲取源代碼

#在桌面建立一個ijkplayer的文件夾 
cd ~/Desktop 
mkdir ijkplayer 
cd ijkplayer 
#clone 
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-ios 
# 進入源碼目錄 
cd ijkplayer-ios 
#切換成最新的分支(當前爲k0.8.8,許久未更新了) 
git checkout -B latest k0.8.8複製代碼

配置編解碼器支持

  • module-default.sh
  • module-lite-hevc.sh
  • module-lite.sh

根據本身的須要進行配置,本文選用最多的編解碼器支持module-default.shphp

cd config
#移除 module.sh
rm module.sh
#創建軟連接,可自行根據須要進行修改
ln -s module-default.sh module.sh

cd ..
cd ios
sh compile-ffmpeg.sh clean複製代碼

獲取FFmpeg以及初始化

cd ..
#注意點:若是須要支持armv7s架構,則修改init-ios.sh中FF_ALL_ARCHS=$FF_ALL_ARCHS_IOS7_SDK
./init-ios.sh
複製代碼


添加https支持

./init-ios-openssl.sh
cd ios
# 在模塊文件中添加一行配置 以啓用 openssl 組件
echo 'export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-openssl"' >> ../config/module.sh(也能夠自行添加)
./compile-ffmpeg.sh clean複製代碼

編譯

#編譯openssl
./compile-openssl.sh all
#編譯ffmpeg
./compile-ffmpeg.sh all複製代碼

若是出現以下錯誤
ios

./libavutil/arm/asm.S:50:9: error: unknown directive
        .arch armv7-a
        ^複製代碼

若是你的應用不須要支持armv7架構,則能夠在compile-ffmpeg.sh中刪除,修改成
git

FF_ALL_ARCHS_IOS8_SDK="arm64 i386 x86_64"複製代碼


若是須要armv7以及armv7s等架構支持,則須要下載舊版本的Xcode,選擇Xcode9.1進行下載,完成後再終端執行sudo xcode-select -s /Applications/Xcode9.1.app/Contents/Developer
github

而後修改compile-ffmpeg.sh腳本 FF_ALL_ARCHS=$FF_ALL_ARCHS_IOS7_SDK
xcode


而後執行./compile-ffmpeg.sh allruby

打包framework

打開IJKMediaPlayer.xcodeproj,若是須要https支持,則將ios/build/universal目錄下生成的libcrypto.a以及libssl.a拖入Target "IJKMediaFramework", 而後在Build Settings裏添加User-Defined BITCODE_GENERATION_MODE=bitcode,而後進行編譯生成framework
bash


備註

以前怕openssl不支持bitcode致使ijkplayer沒法支持bitcode,特地找了個支持bitcode的ssl
markdown

查看framework是否支持bitcode的方式
架構

otool -l IJKMediaFramework.framework/IJKMediaFramework
#而後在終端搜索bitcode,若是有結果且size不爲0x0000000000000001,則爲支持
#若是framework已合併。需使用下面的方法
otool -arch arm64 -l IJKMediaFramework.framework/IJKMediaFramework複製代碼


查看支持的架構
app

lipo -info IJKMediaFramework.framework/IJKMediaFramework複製代碼

參考資料

ijkplayer 的編譯、打包 framework 和 https 支持

相關文章
相關標籤/搜索