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

Google Play Console发布Flutter应用报错 缺失libflutter.so无法启动Activity

问题根因

崩溃核心报错为java.lang.UnsatisfiedLinkError: couldn't find "libflutter.so",触发场景为x86架构环境。
本地无法复现的原因非常明确:日常测试基本使用arm/arm64架构的实体安卓设备,debug模式下Flutter默认会打包当前连接设备对应架构的native库,不会触发x86架构的so加载逻辑。而Google Play预发布检测使用的是内置x86架构的官方测试爬虫(日志中可见androidx.test.tools.crawler进程),当上传的App Bundle生成了x86架构的分包split_config.x86.apk,但包内没有对应架构的libflutter.so文件时,启动就会直接崩溃。
这个问题是Flutter打包App Bundle时的常见配置问题,和是否修改原生配置没有直接关系,属于默认构建配置和Google Play测试环境的适配冲突。

可行解决方案

根据使用的Flutter版本选对应方案操作即可:

  • 若使用Flutter 3.10以下版本(仍支持32位x86架构)
    打开项目路径下的android/app/build.gradle文件,在android > defaultConfig代码块中新增ndk架构过滤配置,明确指定需要打包的所有ABI架构:
    android {
        defaultConfig {
            // 其他已有配置保持不变
            ndk {
                abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64', 'x86'
            }
        }
    }
    
  • 若使用Flutter 3.10及以上版本(官方已移除32位x86架构release构建支持)
    不需要强行打包x86架构的so,直接在同个build.gradle文件中新增bundle配置,告诉Google Play不要生成32位x86的分包,避免爬虫加载空的x86分包触发崩溃:
    android {
        // 其他已有配置保持不变
        bundle {
            abi {
                enableSplit true
                exclude 'x86'
            }
        }
    }
    
  • 修复后本地验证
    注意:修改配置后必须先执行flutter clean清除历史构建缓存,否则旧的构建产物会导致新配置不生效。
    清理缓存后重新打release包,在Android Studio中创建一个x86架构的Android 9(API 28,和报错日志中的系统版本一致)模拟器,安装release包确认可以正常启动无崩溃,再重新上传构建包到Google Play Console即可,预发布检测不会再触发该崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 22:45:50