Flutter安卓应用运行报错:无法加载libflutter.so求助
libflutter.so找不到的问题 问题描述
运行Flutter安卓应用时触发崩溃,核心错误信息如下:
E/AndroidRuntime(27978): Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[...] couldn't find "libflutter.so"
应用运行在armv7l架构设备上,native库目录仅包含ffmpeg相关的.so文件,缺失Flutter核心库libflutter.so
已尝试在gradle中添加ABI过滤配置,但问题未解决:
ndk { abiFilters "arm64-v8a", "armeabi-v7a", "x86", "x86_64" }
解决方案
确认gradle配置位置正确
确保ndk配置块放在android/app/build.gradle的defaultConfig节点下,完整配置示例:android { defaultConfig { applicationId "your.app.id" minSdkVersion 21 targetSdkVersion 33 versionCode 1 versionName "1.0" ndk { abiFilters "arm64-v8a", "armeabi-v7a", "x86", "x86_64" } } }清理构建缓存并重新构建
执行以下命令彻底清理缓存后重新编译:flutter clean rm -rf android/.gradle android/app/build flutter pub get flutter build apk --split-per-abi使用
--split-per-abi参数会生成对应每个ABI的独立APK,确保目标架构的包包含完整的native库。检查Flutter SDK的架构支持
确认本地Flutter SDK包含对应架构的libflutter.so文件,路径为flutter/bin/cache/artifacts/engine/android-<arch>/libflutter.so,如果缺失,切换到稳定版SDK:flutter channel stable flutter upgrade排查第三方依赖的ABI冲突
你使用的ffmpegkit等第三方库可能仅支持特定ABI,或打包时覆盖了Flutter的native库:- 确保第三方依赖的ABI配置与Flutter一致
- 若ffmpegkit仅支持armeabi-v7a和arm64-v8a,可修改abiFilters为这两个值,减少不必要的架构适配
验证测试设备/模拟器的架构
确保测试设备的架构在配置的abiFilters列表中(armv7l对应armeabi-v7a,属于支持范围),模拟器需选择对应ABI的系统镜像,避免使用不兼容的架构。
内容的提问来源于stack exchange,提问作者Mona Mandor

