一、下載編譯庫文件
1.1 編譯庫文件環境:ubuntu 20.04 版本
liangtao:ffmpeg$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.6 LTS
Release: 20.04
Codename: focal
1.2?項目源碼下載
使用 git 下載 ijkplayer;wget 下載 NDK
# 下載 ijkplayer 命令
git clone https://github.com/bilibili/ijkplayer# 下載 ndk 命令
wget https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
1.3 臨時配置 NDK
# 解壓 NDK
unzip android-ndk-r14b-linux-x86_64.zip# 重命名 NDK
mv android-ndk-r14b ndk-r14b# 臨時配置 NDK; YourPath 是自己的路徑
export ANDROID_NDK=/YourPath/ndk-r14b
export PATH=$ANDROID_NDK:$PATH
1.4 初始化 ijkplayer
# 進入 ijkplayer 目錄
cd ijkplayer# 切換到最新版本
git checkout -B k0.8.8# 初始化
./init-android.sh
初始化時會失敗,將?armv5、x86、x86_64 注釋掉就行;如果還是下載失敗,可以使用國內的源,具體方法可以百度,或者在 B 站上找;
#pull_fork "armv5"
pull_fork "armv7a"
#pull_fork "arm64"
#pull_fork "x86"
#pull_fork "x86_64"
1.5 編譯,我沒有編譯 openssl 庫,因為我暫時用不到;
配置了 NDK 環境變量的前提下才能編譯;
## 編譯 ffmpeg
# 進入 ijkplayer/android/contrib 目錄
cd ijkplayer/android/contrib# 先清除再編譯
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh armv7a## 編譯 ijkplayer.so
# 進入 ijkplayer/android 目錄
cd ijkplayer/android# 先清除再編譯
./compile-ijk.sh clean
./compile-ijk.sh armv7a
二、使用 android studio(4.0.2 版本) 編譯出 demo apk
電腦系統版本為:win11
android studio 歷史版本在以下網址可以找到
https://developer.android.google.cn/studio/archive
我選擇的是:Android Studio 4.0.2 October 6,2020 版本的 64-bit 的 exe 文件;
android studio 的 jdk 我使用的是 java 8,具體版本為:corretto-1.8.0_462
將剛剛編譯的?ijkplayer/android 目錄下的?ijkplayer 文件夾打包,拷貝到 windows 下,使用 Android Studio 打開;
會報錯,修改如下:
# 修改文件如下
ijkplayer/build.gradle# 將以下信息注釋
//classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7'# 將以下信息替換為阿里源
# 修改前
allprojects {repositories {jcenter()}
}# 修改后
allprojects {repositories {// 阿里云 Maven 鏡像maven { url 'https://maven.aliyun.com/repository/public' }// 阿里云 Google Maven 鏡像(可選)maven { url 'https://maven.aliyun.com/repository/google' }// 阿里云 JCenter 鏡像(可選)maven { url 'https://maven.aliyun.com/repository/jcenter' }// 本地倉庫mavenLocal()// 原本的 Maven Central(可以保留)mavenCentral()}
}
重新加載完畢就能編譯出 apk 在以下路徑;如果還有報錯,就將工程關閉重新打開就行;