hello榆鼠,大家好,我是那個(gè)太監(jiān)許久的郭同學(xué)亥鸠,這段時(shí)間發(fā)生了一些不愉悅的事情妆够,進(jìn)入了不務(wù)正業(yè)的狀態(tài),但是···┑( ̄Д  ̄)┍ who care呢负蚊?我也知道沒人會想念我的神妹,所以就沒怎么更新了,絕對不是因?yàn)閼袉鸭易薄&? ̄︶ ̄)︿
同志鸵荠,github來過沒?右轉(zhuǎn)不屑 ----> https://github.com/CarGuo
1揩徊、前言
為什么要編譯腰鬼?因?yàn)槟J(rèn)IJK居然不帶HTTPS嵌赠?Why塑荒?因?yàn)閻矍椋粫p易悲傷···這就是愛吧((/- -)/姜挺。
編譯IJK的動態(tài)鏈接庫齿税,絕對是對于win黨最大的打擊,經(jīng)常是褲子脫了一半炊豪,發(fā)現(xiàn)拉鏈卡住凌箕,而且還很痛,上也不是词渤,不上也不是的蛋碎感(ノ?益?)ノ彡┻━┻牵舱,官方都說了:on Cygwin (unmaintained)
,Linux和Mac的勝利缺虐。如果你堅(jiān)持芜壁,也許你就會遇上它們:
- 安裝Cygwin的時(shí)候,記得把make選上。
- $'\r': 未找到命令 : dos2unix xxx慧妄,把所有你會編譯到的.sh都輪一遍顷牌,你以為完了?不塞淹,編譯生成出來的version.sh和configure也需要窟蓝。
- mingw32-gcc.exe: error: CreateProcess: No such file or directory,據(jù)說是文件路徑太深了饱普,然而IJK的路徑运挫,本來就好深,所以你要把IJK的環(huán)境在整一遍套耕,反正到這里我就放棄了治療啦(ˉ ̄~) 滑臊。
2、VMware + Ubuntu編譯環(huán)境
作為一個(gè)win黨箍铲,頭頂青天雇卷,個(gè)人馬上把電腦里塵封已久的虛擬機(jī)搬出來了,個(gè)人裝的是Ubuntu颠猴,加上VMtools关划,妥妥的,環(huán)境搭建我就不嘮叨了翘瓮,這里走起《VMware安裝Ubuntu教程贮折,Linux下搭建Android開發(fā)環(huán)境》。家中常備资盅,總有一天你會用得上调榄。注意NDK r10e以上,虛擬機(jī)硬盤盡量選大一點(diǎn)呵扛,不然后面擴(kuò)展容量又是一番功夫每庆。
3、編譯帶HTTPS的so
到了這里你就簡單多了今穿,因?yàn)槭怯H生的啊缤灵,這時(shí)候就是機(jī)械化流程啦(??)。
- 打開終端命令蓝晒,安裝需要程序腮出。
sudo apt-get install git
sudo apt-get install yasm
- 下載IJKPlayer源碼,在命令終端里cd到ijk的根目錄
- 切換到release版本的tag下芝薇,當(dāng)然胚嘲,你也可以直接在master
git checkout -B k0.7.5 //這個(gè)版本參考ijk的依賴庫版本
- 流程化腳本編譯
1、編譯前選擇你的配置
If you prefer more codec/format
cd config
rm module.sh
ln -s module-default.sh module.sh
If you prefer less codec/format for smaller binary size (include hevc function)
cd config
rm module.sh
ln -s module-lite-hevc.sh module.sh
If you prefer less codec/format for smaller binary size (by default)
cd config
rm module.sh
ln -s module-lite.sh module.sh
2洛二、初始化openSSL和FFMPEG
這里會同步下載對應(yīng)的代碼馋劈,所以可能會比較耗時(shí)喲立倍,
./init-android-openssl.sh
./init-android.sh
3、編譯
cd到android/contrib下侣滩,執(zhí)行清除命令口注,然后編譯需要的so,這里的all是生成所有版本的君珠,如果只需要對應(yīng)版本的寝志,可以把a(bǔ)ll替換成armv7a等你需要的版本。編譯需要一段時(shí)間策添,這時(shí)候你可以找個(gè)妹子先吹吹水材部。︿( ̄︶ ̄)︿
./compile-openssl.sh clean//清除
./compile-ffmpeg.sh clean//清除
./compile-openssl.sh all//編譯
./compile-ffmpeg.sh all//編譯
4、生成對應(yīng)so
切換到android目錄下唯竹,執(zhí)行腳本就可以生成so啦乐导,感覺一路順暢,一瀉千里有木有浸颓。
./compile-ijk.sh all
生成的so每種類型有三個(gè)物臂,傳說,ffmepg的so大于3M就是https成功的標(biāo)志啦产上!
最后注意
1棵磷、最后不要忘記,在你的gradle里面加入下方的配置喲晋涣,不然app會找不到你的so的仪媒。
2、如果你覺得你的包so太大了谢鹊,可以使用下圖的ndk過濾算吩,隨時(shí)控制你想支持的so,具體可參看Android蹲坑的疑難雜癥集錦(兼Gradle) 二
3佃扼、如果需要編譯其他播放類型支持偎巢,可以修改module.sh下的配置來使能。
相關(guān)的so已經(jīng)集成到播放器里面,需要的可以直接拿出來用翠订,下方鏈接走起<( ̄︶ ̄)>,點(diǎn)我點(diǎn)我遵倦。
https://github.com/CarGuo/GSYVideoPlayer