git clone https://github.com/ShikinChen/ijkplayer-android --recursive -b ijk0.8.8--ff7.1- Common
- Mac OS X 14.3/Ubuntu 22.04
- Android
- NDK r27
- Android Studio 2023.1.1 Patch 2
- Gradle 7.2
- Xcode 12.5.1
- Python 3.9.x
- HomeBrew
- ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- brew install git
# install homebrew, git, yasm
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm
brew install pyenv配置 pyenv
#编辑环境变量文件
vim ~/.bash_profile
#追加下面内容
export PYENV_ROOT=/usr/local/var/pyenv
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
eval "$(pyenv init --path)"# 将Shell的解释器改为dash,执行dpkg-reconfigure dash命令,然后选择no
sudo dpkg-reconfigure dash
sudo apt install -y ninja-build git
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash配置 pyenv
#编辑环境变量文件
vim ~/.bashrc
#追加下面内容
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"pyenv install 3.9.19终端环境变量配置
# add these lines to your ~/.bash_profile or ~/.profile
# export ANDROID_SDK=<your sdk path>
# export ANDROID_NDK=<your ndk path>
git clone https://github.com/ShikinChen/ijkplayer-android --recursive如果拉取部分模块出错,需要重新拉取项目模块
cd ijkplayer-android
git submodule update --init --remote --recursive --progress在 MacOS 的 ndk 27 以下没办法进行 ld 引入 ssl 和 crypto 库,导致在 FFmpeg 编译的检测时候出现错误,而 ndk 27 是没办法编译 armv7a 版本,如果需要编译 armv7a 版本需要在 Ubuntu 进行
cd ijkplayer-android
./init-android-openssl.shcd ijkplayer-android
#编译ffmpeg一定要使用ndk r27
export ANDROID_NDK=NDK r27的路径
#ndk r27已经不支持armeabi-v7a
cd android/contrib
./compile-ffmpeg.sh arm64执行完 compile-ffmpeg.sh arm64 编译完 ffmpeg 的 arm64 静态库后,用 android studio 直接将 ijkplayer-android/android/ijkplayer/android/ijkplayer 导入整个项目,并且在设置修改 Gradle JDK 为 java-11
执行之前一样要定义 ANDROID_NDK 环境变量,并且 ffmpeg 已经编译好
export ANDROID_NDK=NDK r27的路径cd ijkplayer-android/android/ijkplayer
./gradlew :ijkplayer-java:assembleRelease最后生成的 ijkplayer-java-release.aar 在 ijkplayer-android/android/ijkplayer/ijkplayer-java/build/outputs/aar/目录下
export ANDROID_NDK=NDK r21的路径然后修改 ijkplayer-android/android/ijkplayer/ijkplayer-java/build.gradle 的 ndk 和 ndkVersion,如果需要运行 ijkplayer-example 项目也一样修改它的 build.gradle 的 ndk 和 ndkVersion
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a'
} ndkVersion '21.4.7075529'重新进行 ffmpeg 编译的 armv7a 和 arm64
cd ijkplayer-android
cd android/contrib
./compile-ffmpeg.sh armv7a
./compile-ffmpeg.sh arm64打包 aar
cd ../..
cd android/ijkplayer
./gradlew :ijkplayer-java:assembleRelease