Follow these steps to generate an AAR package containing libavif and the JNI wrapper.
1. Clone the repository
git clone https://github.com/AOMediaCodec/libavif.git
cd libavif
2. Configure Environment Variables
Set your SDK and NDK paths (NDK r25c is recommended):
export ANDROID_SDK_ROOT="/path/to/android/sdk"
export ANDROID_NDK_HOME="/path/to/android/ndk"
3. Build Codec Dependencies
By default, these instructions use dav1d.
To build dav1d:
cd ext
./dav1d_android.sh "${ANDROID_NDK_HOME}"
cd ..
To use libgav1 instead:
- Build libgav1:
cd ext
./libgav1_android.sh "${ANDROID_NDK_HOME}"
cd ..
- Update
avifandroidjni/src/main/jni/CMakeLists.txt:- Set
AVIF_CODEC_DAV1D to OFF - Set
AVIF_CODEC_LIBGAV1 to LOCAL
4. Build libyuv
cd ext
./libyuv_android.sh "${ANDROID_NDK_HOME}"
cd ..
Note: To disable libyuv, set AVIF_LIBYUV to OFF in avifandroidjni/src/main/jni/CMakeLists.txt.
5. Build the JNI Wrapper and AAR
cd android_jni
./gradlew build assembleRelease
The resulting AAR package will be located in: libavif/android_jni/avifandroidjni/build/outputs/aar.