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

我的Flutter应用上架Play商店后Android 6设备启动崩溃求助

崩溃原因

该问题仅出现在Android 6系统设备上,本质是运行时核心类加载失败,具体诱因分为三类:

  • 多dex(Multidex)配置不完整:Android 6系统虽然原生支持多dex,但如果应用方法数超过65536,Firebase Firestore、gRPC、Guava相关的启动核心类没有被打包到主dex中,启动时就会加载失败。
  • 混淆规则缺失:R8/ProGuard打包时错误混淆、移除了Guava、gRPC相关的核心类,堆栈中出现的d.e.c.a.c就是被混淆后的类名。
  • 依赖版本冲突:不同Firebase组件依赖的Guava、gRPC版本不一致,打包时缺失对应类文件。
解决方案

按以下步骤依次操作即可修复:

1. 完善Multidex配置

打开android/app/build.gradle文件,修改配置:

android {
    defaultConfig {
        // 原有其他配置保持不变
        multiDexEnabled true
    }
}

dependencies {
    // 原有其他依赖保持不变
    implementation "androidx.multidex:multidex:2.0.1"
}

如果你的应用自定义了Application类,需要继承MultiDexApplication,或在attachBaseContext方法中调用MultiDex.install(this);如果没有自定义Application,需要在AndroidManifest.xml的application标签中添加属性android:name="androidx.multidex.MultiDexApplication"。

可选配置:将核心类强制打包到主dex,在android/app/目录下新建multidex-config.pro文件,添加内容:

-keep class com.google.common.** { *; }
-keep class io.grpc.** { *; }
-keep class com.google.firebase.firestore.** { *; }

然后在build.gradle的release构建配置中引用该规则:

buildTypes {
    release {
        // 原有其他配置保持不变
        multiDexKeepProguard file('multidex-config.pro')
    }
}

2. 补全混淆规则

在android/app/proguard-rules.pro文件中添加如下规则,避免相关类被误删:

# 保留Guava类
-keep class com.google.common.** { *; }
-dontwarn com.google.common.**

# 保留gRPC类
-keep class io.grpc.** { *; }
-dontwarn io.grpc.**

# 保留Firebase Firestore类
-keep class com.google.firebase.firestore.** { *; }
-dontwarn com.google.firebase.firestore.**

3. 统一依赖版本

使用FlutterFire官方BoM统一所有Firebase依赖版本,避免版本冲突;如果手动引入了Guava、gRPC相关依赖,确保版本和Firebase依赖的对应版本一致,避免多版本依赖共存。

4. 验证修复

打包release版本,在Android 6的真机或模拟器上运行测试,确认崩溃不再触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 12:33:03