Flutter应用在x86设备崩溃:libflutter.so缺失问题求助
Flutter应用在x86架构Android设备上启动崩溃,报错信息如下:
java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/-1/base.apk"],nativeLibraryDirectories=[/data/app/-1/lib/x86, /data/app/-1/base.apk!/lib/x86, /system/lib, /vendor/lib]]] couldn't find "libflutter.so"
at java.util.concurrent.FutureTask.report(FutureTask.java:94)
at java.util.concurrent.FutureTask.get(FutureTask.java:164)
at mc.f.g()
at io.flutter.embedding.engine.a.() -1/base.apk"],nativeLibraryDirectories=[/data/app/-1/lib/x86, /data/app/-1/base.apk!/lib/x86, /system/lib, /vendor/lib]]] couldn't find "libflutter.so"
at io.flutter.embedding.engine.a.()
at io.flutter.embedding.android.d.G()
at io.flutter.embedding.android.d.p()
at io.flutter.embedding.android.h.K2()
at androidx.fragment.app.Fragment.p3()
at androidx.fragment.app.u.c()
at androidx.fragment.app.u.m()
at androidx.fragment.app.m.d0()
at androidx.fragment.app.m.d1()
at androidx.fragment.app.m.a0()
at androidx.fragment.app.m.S()
at androidx.fragment.app.m.y()
at androidx.fragment.app.h.c()
at androidx.fragment.app.e.onStart()
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248)
at android.app.Activity.performStart(Activity.java:6679)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2609)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/
at java.lang.Runtime.loadLibrary0(Runtime.java:972)
at java.lang.System.loadLibrary(System.java:1530)
at io.flutter.embedding.engine.FlutterJNI.loadLibrary()
at mc.f$a.b()
at mc.f$a.call()
已尝试方案
- 在应用级build.gradle中添加配置:
defaultConfig {ndk.abiFilters 'armeabi-v7a', 'arm64-v8a','x86_64'} - 尝试过相关Issue的解决方案,但崩溃问题仍未解决
可行解决办法
- 补充x86架构的ABI支持
当前配置仅包含x86_64,而x86设备需要对应的x86架构库,修改build.gradle的abiFilters:defaultConfig { ndk { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } } - 升级Flutter SDK到稳定版
部分旧版SDK对x86架构的编译支持存在缺陷,执行命令升级:flutter upgrade - 彻底清理并重新构建
清理项目缓存后重新编译,避免旧缓存干扰:flutter clean flutter pub get flutter build apk - 检查APK拆分配置
若开启了APK拆分,确保x86架构被包含在内,避免打包时遗漏:splits { abi { enable true reset() include 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' universalApk true // 生成包含所有架构的通用APK,便于测试 } } - 验证编译产物
构建完成后解压APK,查看lib/x86目录下是否存在libflutter.so文件,若不存在则需检查Flutter编译环境是否正常。
内容的提问来源于stack exchange,提问作者A User

