Интеграция LibYUV в мой проект Android Studio

Мне было интересно, как включить библиотеку libyuv в мой проект Android Studio. У меня есть файл "libyuv_static.a", который является предварительно скомпилированным двоичным файлом, но я сделал все, чтобы включить его в свой проект. Я создал папку внутри src / main с именем jniLibs и загрузил двоичный файл внутри папки, но во время выполнения он не загружает библиотеку и дает мне следующее:

Причина: java.lang.UnsatisfiedLinkError: Не удалось загрузить libyuv2rgb из загрузчика dalvik.system.PathClassLoader[dexPath=/data/app/com.example.myproject-1.apk,libraryPath=/data/app-lib/com.example.myproject-1]: findLibrary вернул ноль

, Может кто-нибудь, пожалуйста, поделитесь своим опытом.

2 ответа

Чтобы включить нативную библиотеку в проект Android, вы должны получить файл.so (общая библиотека), а не.a (статическая библиотека).

то есть. вы должны в конечном итоге src/main/jniLibs/<abi>/libyuv_shared.so с <abi> armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips, mips64 (любая архитектура, которую поддерживает ваше приложение и lib).

Теперь есть пакет для Android: https://github.com/crow-misia/libyuv-android, устанавливаемый из mavenCentral:

      dependencies {
    implementation 'io.github.crow-misia.libyuv:libyuv-android:0.25.0'
}

Для использования см. https://github.com/crow-misia/libyuv-android/blob/main/sample/src/main/java/app/MainActivity.kt .

Другие вопросы по тегам