Flutter应用提交Google Play因崩溃遭拒,自测无崩溃求排查原因
Flutter应用Google Play审核因崩溃被拒的排查方案
核对环境差异
- 设备架构:本地测试可能只覆盖了常用的arm64,但审核会测试多架构(armv7、x86等),打包时要指定全架构:
flutter build appbundle --target-platform android-arm,android-arm64,android-x64。 - Android版本:别只测高版本,覆盖到你设置的minSdkVersion对应的系统,比如minSdk是21,就得测Android 5.0的设备,避免低版本兼容问题。
- 权限场景:模拟权限拒绝的情况,比如用户拒绝相机权限后,你的代码有没有做异常处理,直接调用相机大概率会崩。
- 设备架构:本地测试可能只覆盖了常用的arm64,但审核会测试多架构(armv7、x86等),打包时要指定全架构:
扒Google的崩溃日志
- 去Play Console的「质量」→「Android vitals」→「崩溃」里找审核期间的崩溃记录,看堆栈信息:
- 要是Native层崩溃,大概率是第三方SDK(推送、支付这类)或Flutter引擎版本的锅,试试升级Flutter稳定版。
- 要是Dart层崩溃,查未捕获的异常,比如null安全没处理好,审核场景里的特定操作触发了空指针。
- 去Play Console的「质量」→「Android vitals」→「崩溃」里找审核期间的崩溃记录,看堆栈信息:
模拟审核测试场景
- 用Play Console的「预发布报告」自动测试,看报告里的崩溃点。
- 测后台杀进程后重启的情况:系统回收内存后重启应用,要是没保存必要状态,访问空对象肯定崩。
- 切换多语言/地区,比如你没测试过的小语种,字符串资源缺失或格式化错误也会崩。
检查打包配置
- 混淆规则别瞎写,确保Flutter核心类没被混淆,proguard-rules.pro里加上:
-keep class io.flutter.app.** { *; } -keep class io.flutter.plugin.** { *; } -keep class io.flutter.util.** { *; } -keep class io.flutter.view.** { *; } -keep class io.flutter.** { *; } -keep class io.flutter.plugins.** { *; } - 试试暂时关闭R8压缩,在gradle.properties里设
android.enableR8=false,过度优化也可能搞崩应用。
- 混淆规则别瞎写,确保Flutter核心类没被混淆,proguard-rules.pro里加上:
排查第三方依赖
- 升级所有第三方包到最新稳定版,有些旧版本在新系统上有已知崩溃问题。
- 删掉没用的依赖,减少潜在的崩溃风险。
内容的提问来源于stack exchange,提问作者Benial Pearl
相关产品推荐
相关产品推荐

