编译环境
- 系统:ubuntu18.04
- NDK: android-ndk-r10e
- **sdk:**android-sdk_r24.4.1-linux
下载
sudo wget http://dl.google.com/android/repository/android-ndk-r10e-linux-x86_64.zip
sudo wget http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
下载后解压到路径/xxx/xxx
配置环境变量
sudo gedit /etc/profile
#替换成文件的路径
export PATH="/xxx/xxx/android-sdk-linux/platform-tools:$PATH"
export PATH="/xxx/xxx/android-sdk-linux/tools:$PATH"
export ANDROID_NDK="/xxx/xxx/android-ndk-r10e"
export PATH="$ANDROID_NDK:$PATH"
# 加载环境变量
source /etc/profile
//测试ndk是否生效,如果有打印相关版本信息等,即是生效
ndk-build -v
//测试sdk是否生效,如果有打印相关版本信息等,即是生效
adb --version
代码拉取和配置修改
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer
cd ijkplayer
git checkout -B latest k0.8.8
1、init-android.sh修改 FFmpeg 的版本(改成 4.0 版本):
IJK_FFMPEG_UPSTREAM=https://github.com/Bilibili/FFmpeg.git
IJK_FFMPEG_FORK=https://github.com/Bilibili/FFmpeg.git
#IJK_FFMPEG_COMMIT=ff3.4--ijk0.8.7--20180103--001
IJK_FFMPEG_COMMIT=ff4.0--ijk0.8.8--20210426--001
2、编译类型(完整版)
cd config
rm module.sh
ln -s module-default.sh module.sh # 完整版
编译
1、初始化下载
# 初始化Android环境
./init-android.sh
# 下载 openssl 源码
./init-android-openssl.sh
2、编译
# 在项目根目录下执行
cd android/contrib
# 编译 openssl
./compile-openssl.sh clean
./compile-openssl.sh all
# 编译 FFmpeg
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
# 编译 ijkplayer
cd ..
./compile-ijk.sh all
遇到的问题
1、Unknown option "--disable-ffserver".
config/module.sh 文件,注释掉以下两行:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-ffserver"
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-vda"
2、error: undefined reference to 'ff_ac3_parse_header'
config/module.sh 文件,增加如下一行:
# 在 export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --enable-bsfs" 下方添加:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-bsf=eac3_core"
3.error:x0000000 这个问题折腾了好久

大多数网上文章建议多是把大B改成小b,很麻烦。后来在issus找到了回复,验证可行。
解决原文 (https://github.com/bilibili/ijkplayer/issues/4093)
在module-default.sh增加:
export COMMON_FF_CFG_FLAGS="$COMMON_FF_CFG_FLAGS --disable-linux-perf"