Flutter应用卡在启动页:libflutter.so缺失异常排查求助
Flutter应用发布至应用商店后卡在启动页,报错找不到libflutter.so
发布Flutter应用APK到应用商店后,出现应用卡在启动页无法加载的问题。最初误以为是main()函数负载过高导致,从Play市场获取logcat日志后,核心报错如下:
03-30 10:55:19.813: E/AndroidRuntime(6738): FATAL EXCEPTION: main 03-30 10:55:19.813: E/AndroidRuntime(6738): Process: com.portalapp.portal, PID: 6738 03-30 10:55:19.813: E/AndroidRuntime(6738): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.portalapp.portal/com.portalapp.portal.MainActivity}: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/system/framework/android.test.mock.jar", zip file "/data/app/androidx.test.tools.crawler-0JLHc7wgxFmUsfRw2mmkng==/base.apk", zip file "/data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/base.apk", zip file "/data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.en.apk", zip file "/data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.x86.apk", zip file "/data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.xxhdpi.apk"],nativeLibraryDirectories=[/data/app/androidx.test.tools.crawler-0JLHc7wgxFmUsfRw2mmkng==/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/lib/x86, /data/app/androidx.test.tools.crawler-0JLHc7wgxFmUsfRw2mmkng==/base.apk!/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/base.apk!/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.en.apk!/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.x86.apk!/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.xxhdpi.apk!/lib/x86, /system/lib]]] couldn't find "libflutter.so" 03-30 10:55:19.813: E/AndroidRuntime(6738): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913) 03-30 10:55:19.813: E/AndroidRuntime(6738): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 03-30 10:55:19.813: E/AndroidRuntime(6738): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 03-30 10:55:19.813: E/AndroidRuntime(6738): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 03-30 10:55:19.813: E/AndroidRuntime(6738): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 03-30 10:55:19.813: E/AndroidRuntime(6738): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 03-30 10:55:19.813: E/AndroidRuntime(6738): at android.os.Handler.dispatchMessage(Handler.java:106) 03-30 10:55:19.813: E/AndroidRuntime(6738): at android.os.Looper.loop(Looper.java:193) 03-30 10:55:19.813: E/AndroidRuntime(6738): at android.app.ActivityThread.main(ActivityThread.java:6669) 03-30 10:55:19.813: E/AndroidRuntime(6738): at java.lang.reflect.Method.invoke(Native Method) 03-30 10:55:19.813: E/AndroidRuntime(6738): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 03-30 10:55:19.813: E/AndroidRuntime(6738): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 03-30 10:55:19.813: E/AndroidRuntime(6738): Caused by: java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/android.test.runner.jar", zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/system/framework/android.test.mock.jar", zip file "/data/app/androidx.test.tools.crawler-0JLHc7wgxFmUsfRw2mmkng==/base.apk", zip file "/data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/base.apk", zip file "/data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.en.apk", zip file "/data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.x86.apk", zip file "/data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.xxhdpi.apk"],nativeLibraryDirectories=[/data/app/androidx.test.tools.crawler-0JLHc7wgxFmUsfRw2mmkng==/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/lib/x86, /data/app/androidx.test.tools.crawler-0JLHc7wgxFmUsfRw2mmkng==/base.apk!/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/base.apk!/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.en.apk!/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.x86.apk!/lib/x86, /data/app/com.portalapp.portal-2hUT7KMv3Ptgtpso_o2Pxw==/split_config.xxhdpi.apk!/lib/x86, /system/lib]]] couldn't find "libflutter.so" 03-30 10:55:19.813: E/AndroidRuntime(6738): at bb.f.g(Unknown Source:472) 03-30 10:55:19.813: E/AndroidRuntime(6738): at io.flutter.embedding.engine.a.<init>(Unknown Source:178) 03-30 10:55:19.813: E/AndroidRuntime(6738): at io.flutter.embedding.engine.a.<init>(Unknown Source:12) 03-30 10:55:19.814: E/AndroidRuntime(6738): at io.flutter.embedding.android.c.G(Unknown Source:106) 03-30 10:55:19.814: E/AndroidRuntime(6738): at io.flutter.embedding.android.c.p(Unknown Source:7) 03-30 10:55:19.814: E/AndroidRuntime(6738): at io.flutter.embedding.android.FlutterActivity.onCreate(Unknown Source:13) 03-30 10:55:19.814: E/AndroidRuntime(6738): at android.app.Activity.performCreate(Activity.java:7136) 03-30 10:55:19.814: E/AndroidRuntime(6738): at android.app.Activity.performCreate(Activity.java:7127) 03-30 10:55:19.814: E/AndroidRuntime(6738): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 03-30 10:55:19.814: E/AndroidRuntime(6738): at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:2) 03-30 10:55:19.814: E/AndroidRuntime(6738): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) 03-30 10:55:19.814: E/AndroidRuntime(6738): ... 11 more
已尝试移除webview_flutter、flutter_html等所有webview相关依赖包,但问题仍未解决,多数情况下应用启动仍会卡顿。以下是pubspec.yaml中的依赖列表:
cupertino_icons: ^1.0.2 dynamic_height_grid_view: ^0.0.3 table_calendar: ^3.0.8 flutter_svg: ^2.0.0+1 rive: ^0.10.0 flutter_native_splash: ^2.2.16 flutter_slidable: ^2.0.0 keyboard_dismisser: ^3.0.0 flutter_bloc: ^8.1.1 equatable: ^2.0.5 dio: ^4.0.6 calendar_date_picker2: ^0.3.6 path_provider: ^2.0.11 cron: ^0.5.1 hydrated_bloc: ^9.0.0 blur: ^3.1.0 email_validator: ^2.1.17 flutter_launcher_icons: ^0.11.0 video_player: ^2.5.2 flutter_spinkit: ^5.1.0 audioplayers: ^3.0.1 image_picker: ^0.8.6+1 image_cropper: ^3.0.1 flutter_html: ^3.0.0-alpha.6 url_launcher: ^6.1.8 just_audio: ^0.9.31 audio_video_progress_bar: ^1.0.0 rxdart: ^0.27.7 just_audio_background: ^0.0.1-beta.9 photo_view: ^0.14.0 font_awesome_flutter: ^10.4.0 googleapis: ^10.1.0 googleapis_auth: ^1.3.1 mp3_info: ^0.2.0 fluttertoast: ^8.2.1 firebase_core: ^2.7.0 firebase_analytics: ^10.1.4 flick_video_player: ^0.5.0 webview_flutter: ^4.0.7 firebase_messaging: ^14.2.5 flutter_inappwebview: ^5.7.2+3 overlay_support: ^2.1.0 firebase_in_app_messaging: ^0.7.0+15 firebase_dynamic_links: ^5.0.16 huawei_push: ^6.7.0+300 huawei_analytics: ^6.9.0+302
可能的原因分析
- ABI打包配置问题:如果开启了ABI拆分,部分架构的
libflutter.so可能未被正确打包。检查android/app/build.gradle中的ndk.abiFilters配置,确保覆盖目标设备的架构,或尝试打包包含所有ABI的APK测试。 - 签名损坏:发布版签名过程中可能损坏了native库文件,导致系统无法加载
libflutter.so。重新生成签名文件并重新打包发布版APK。 - Flutter版本兼容性:部分Flutter版本在特定打包模式下存在native库打包不全的bug,尝试升级或降级到Flutter稳定版后重新打包。
- 第三方依赖干扰:部分依赖(如华为、Firebase系列)可能修改了native打包规则,导致
libflutter.so未被正确包含。检查android/app/build.gradle中的packagingOptions是否存在排除libflutter.so的规则。 - App Bundle拆分异常:若上传的是App Bundle,Play商店的自动拆分机制可能在生成特定架构APK时遗漏了
libflutter.so。尝试直接构建全架构APK上传测试,或在build.gradle中配置强制包含必要ABI。 - 混淆规则问题:ProGuard/R8混淆时可能误处理了
libflutter.so,检查混淆配置文件,确保保留Flutter相关native库的规则。
内容的提问来源于stack exchange,提问作者BleedThemWhite
相关产品推荐
相关产品推荐

