hello,大家好,我是那個太監(jiān)許久的郭同學,這段時間發(fā)生了一些不愉悅的事情,進入了不務正業(yè)的狀態(tài),但是···┑( ̄Д  ̄)┍ who care呢?我也知道沒人會想念我的,所以就沒怎么更新了,絕對不是因為懶喲。︿( ̄︶ ̄)︿
同志,github來過沒?右轉不屑 ----> https://github.com/CarGuo
1、前言
為什么要編譯?因為默認IJK居然不帶HTTPS?Why?因為愛情,不會輕易悲傷···這就是愛吧((/- -)/。
編譯IJK的動態(tài)鏈接庫,絕對是對于win黨最大的打擊,經(jīng)常是褲子脫了一半,發(fā)現(xiàn)拉鏈卡住,而且還很痛,上也不是,不上也不是的蛋碎感(ノ?益?)ノ彡┻━┻,官方都說了:on Cygwin (unmaintained),Linux和Mac的勝利。如果你堅持,也許你就會遇上它們:
- 安裝Cygwin的時候,記得把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)境
作為一個win黨,頭頂青天,個人馬上把電腦里塵封已久的虛擬機搬出來了,個人裝的是Ubuntu,加上VMtools,妥妥的,環(huán)境搭建我就不嘮叨了,這里走起《VMware安裝Ubuntu教程,Linux下搭建Android開發(fā)環(huán)境》。家中常備,總有一天你會用得上。注意NDK r10e以上,虛擬機硬盤盡量選大一點,不然后面擴展容量又是一番功夫。
3、編譯帶HTTPS的so
到了這里你就簡單多了,因為是親生的啊,這時候就是機械化流程啦(??)。
- 打開終端命令,安裝需要程序。
sudo apt-get install git
sudo apt-get install yasm
- 下載IJKPlayer源碼,在命令終端里cd到ijk的根目錄
- 切換到release版本的tag下,當然,你也可以直接在master
git checkout -B k0.7.5 //這個版本參考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
這里會同步下載對應的代碼,所以可能會比較耗時喲,
./init-android-openssl.sh
./init-android.sh
3、編譯
cd到android/contrib下,執(zhí)行清除命令,然后編譯需要的so,這里的all是生成所有版本的,如果只需要對應版本的,可以把all替換成armv7a等你需要的版本。編譯需要一段時間,這時候你可以找個妹子先吹吹水。︿( ̄︶ ̄)︿
./compile-openssl.sh clean//清除
./compile-ffmpeg.sh clean//清除
./compile-openssl.sh all//編譯
./compile-ffmpeg.sh all//編譯
4、生成對應so
切換到android目錄下,執(zhí)行腳本就可以生成so啦,感覺一路順暢,一瀉千里有木有。
./compile-ijk.sh all
生成的so每種類型有三個,傳說,ffmepg的so大于3M就是https成功的標志啦!

最后注意
1、最后不要忘記,在你的gradle里面加入下方的配置喲,不然app會找不到你的so的。

2、如果你覺得你的包so太大了,可以使用下圖的ndk過濾,隨時控制你想支持的so,具體可參看Android蹲坑的疑難雜癥集錦(兼Gradle) 二

3、如果需要編譯其他播放類型支持,可以修改module.sh下的配置來使能。
相關的so已經(jīng)集成到播放器里面,需要的可以直接拿出來用,下方鏈接走起<( ̄︶ ̄)>,點我點我。
https://github.com/CarGuo/GSYVideoPlayer
