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

将targetSdkVersion设为31后Flutter应用在Android12崩溃求助

解决Flutter应用targetSdkVersion 31下WorkManager重复初始化崩溃问题

问题根源

java.lang.IllegalStateException: WorkManager is already initialized 明确指向重复初始化WorkManager的冲突。Android 12(targetSdkVersion 31)对组件初始化的校验更严格,原本在低版本中被隐藏的重复初始化问题会触发崩溃。

分步解决方案

1. 禁用WorkManager自动初始化

在AndroidManifest.xml中添加元数据,阻止系统自动初始化WorkManager,将控制权收归手动:

<application ...>
    <!-- 禁用自动初始化 -->
    <meta-data
        android:name="androidx.work.workmanager.disableAutoInitialization"
        android:value="true" />
</application>

2. 全局唯一手动初始化

创建自定义Application类,在onCreate()中仅执行一次WorkManager初始化:

class MyFlutterApp : FlutterApplication() {
    override fun onCreate() {
        super.onCreate()
        // 配置并初始化WorkManager
        val workConfig = Configuration.Builder().build()
        WorkManager.initialize(this, workConfig)
    }
}

在AndroidManifest.xml中绑定这个自定义Application:

<application
    android:name=".MyFlutterApp"
    ...>
    <!-- 其他组件配置 -->
</application>

3. 强制统一WorkManager依赖版本

执行./gradlew app:dependencies查看依赖树,若存在多版本WorkManager冲突,在app级build.gradle中强制统一版本:

configurations.all {
    resolutionStrategy.force 'androidx.work:work-runtime-ktx:2.7.0'
    resolutionStrategy.force 'androidx.work:work-runtime:2.7.0'
}

4. 排查第三方插件冲突

部分Flutter插件会内置WorkManager并自行初始化,检查你的插件列表:

  • 优先更新所有插件到最新版本
  • 若某插件明确存在WorkManager初始化逻辑,查看其适配Android 12的文档,或暂时移除插件验证是否解决问题

验证操作

  1. 清理项目缓存:./gradlew clean
  2. 重新构建:flutter build apk
  3. 在Android 12设备上安装测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:10:27