Flutter安卓应用Android App Bundle构建后安装启动崩溃问题求助
解决步骤
核心原因说明
你遇到的问题是Google Play分发AAB时,会根据用户设备的ABI架构拆分安装包,仅下发对应架构的资源与so库。APK正常是因为通用APK打包了全量架构的so文件,而AAB拆分后对应你测试设备的架构包缺失libflutter.so,才会出现包体大幅缩小、启动闪退的情况。
具体排查操作
- 检查
android/app/build.gradle的ABI过滤配置
在defaultConfig块下补充ndk abi配置,确保覆盖你需要支持的所有架构,不要加入Flutter不再支持的32位x86架构:android { defaultConfig { // 原有配置保持不变 ndk { // 按需保留需要支持的ABI,Flutter正式版默认支持以下三类架构 abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64' } } } - 确认AAB构建命令正确
不要在构建命令中指定单一目标平台,使用官方标准构建命令即可:flutter build appbundle --release
如果之前加了--target-platform android-arm这类限制单架构的参数,会导致其他架构的libflutter.so缺失,直接删除该参数即可。 - 本地验证AAB的so完整性
打开Android Studio,选择顶部菜单栏的Build > Analyze APK,导入你构建好的AAB包,查看lib目录下每个架构子文件夹中是否存在libflutter.so,确保所有你配置的ABI架构下都有对应文件。 - 本地测试AAB拆分后的安装效果
可以使用官方bundletool工具,在本地将AAB转换为对应测试设备的拆分APK,直接安装测试是否正常运行,不用每次上传到Play商店验证。 - 排查第三方原生插件的ABI冲突
部分第三方原生插件可能仅打包了部分架构的so库,导致整体AAB的对应架构下缺失libflutter.so,可以通过abiFilters统一过滤掉插件不支持的架构,保持所有so库的架构一致即可。
内容的提问来源于stack exchange,提问作者Arifur Rahman
相关产品推荐
相关产品推荐

