You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android设备频繁崩溃:找不到libavutil.so库问题求助

解决Android中java.lang.UnsatisfiedLinkError: libavutil.so找不到的崩溃问题

问题背景

设备出现大量崩溃,报错信息:

Fatal Exception: java.lang.UnsatisfiedLinkError dlopen failed: library "libavutil.so" not found

现有配置:

  • 初始化代码:
init {
    try{
        System.loadLibrary("avutil")
        System.loadLibrary("avcodec")
        System.loadLibrary("avformat")
        System.loadLibrary("swscale")
        System.loadLibrary("avfilter")
    }
    catch (e:Exception){
        Log.i("error","${e.message}")
    }
}
  • app/build.gradle中的NDK配置:
ndk {
    abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}

解决方案

  • 检查.so文件存放路径
    确认libavutil.so等库文件是否放在src/main/jniLibs/对应ABI子目录下(如src/main/jniLibs/armeabi-v7a/libavutil.so),每个在abiFilters中声明的ABI目录都必须有完整的对应库文件,不能缺失。若通过CMake/ndk-build编译生成库,需确保编译脚本将产物输出到对应目录,且gradle正确引入该路径。

  • 补全gradle路径配置
    若自定义了.so文件存放目录(如libs/),需在android块中添加路径映射:

    sourceSets {
        main {
            jniLibs.srcDirs = ['libs'] // 根据实际路径调整
        }
    }
    

    同时确认abiFilters的声明与实际提供的.so文件ABI完全匹配,避免出现配置了x86但无对应库文件的情况。

  • 优化异常排查与加载顺序
    FFmpeg库存在依赖关系,当前加载顺序(avutil→avcodec→avformat等)是正确的,但需确认是否遗漏隐式依赖库(如部分FFmpeg版本需加载swresample)。另外修改catch块打印完整异常栈,获取更多错误细节:

    catch (e: Exception) {
        Log.e("FFmpegLoadError", "加载失败", e)
    }
    
  • 检查打包完整性
    执行./gradlew assembleDebug后,查看app/build/intermediates/merged_jni_libs/debug/out/lib目录,确认所有指定ABI下的libavutil.so都存在。若缺失,排查库文件来源是否正确,是否在打包过程中被过滤。

  • 适配Android 12+限制
    Android 12及以上版本对动态库加载有严格限制,需在buildTypes块中添加配置避免库文件被压缩:

    buildTypes {
        release {
            packagingOptions {
                doNotStrip "*/armeabi-v7a/*.so"
                doNotStrip "*/arm64-v8a/*.so"
                doNotStrip "*/x86/*.so"
                doNotStrip "*/x86_64/*.so"
            }
        }
        debug {
            packagingOptions {
                doNotStrip "*/armeabi-v7a/*.so"
                doNotStrip "*/arm64-v8a/*.so"
                doNotStrip "*/x86/*.so"
                doNotStrip "*/x86_64/*.so"
            }
        }
    }
    

内容的提问来源于stack exchange,提问作者sejn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 15:46:02