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

Flutter运行报错:sqflite:compileDebugJavaWithJavac 求助

问题原因分析

这个编译冲突的核心原因是cached_network_image的间接依赖与sqflite的Java编译环境不兼容:

  • cached_network_image会引入Android端的第三方依赖(如Glide图片加载库),部分依赖可能使用了Java 11以上的语法特性,或者其Gradle配置覆盖了你全局设置的Java 11编译规则,导致sqflite模块编译时被迫适配更高版本的Java标准。
  • 你当前使用的Gradle 6.5对Java 16的支持不完善(Gradle官方仅在7.x及以上版本完全兼容Java 16),加上sqflite本身的Android代码基于Java 11及以下语法编写,多重不匹配最终触发编译失败。
解决方法

方案1:对齐Gradle与Java版本兼容性

升级Gradle到7.0及以上版本(适配Java 16):

  1. 编辑android/gradle/wrapper/gradle-wrapper.properties文件,修改distributionUrl:
    distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
    
  2. 同步修改android/build.gradle中的Android Gradle插件版本(Gradle 7.4对应插件版本7.2.0左右):
    dependencies {
        classpath 'com.android.tools.build:gradle:7.2.0'
        // 其他依赖项保持不变
    }
    
  3. 确保全局编译选项统一,在android/app/build.gradle中明确:
    android {
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_11
            targetCompatibility JavaVersion.VERSION_11
        }
        kotlinOptions {
            jvmTarget = '11'
        }
    }
    

方案2:锁定冲突子依赖版本

  1. 执行flutter pub deps命令,查看cached_network_image的依赖树,定位到可能引发冲突的子依赖(比如Glide相关包)。
  2. 在android/build.gradle的allprojects块中添加强制依赖规则,指定兼容Java 11的版本:
    allprojects {
        configurations.all {
            resolutionStrategy {
                force 'com.github.bumptech.glide:glide:4.12.0' // 替换为实际兼容的版本号
            }
        }
    }
    

方案3:降级Java版本到11

若不想升级Gradle,直接将Java版本切换为OpenJDK 11,与你设置的编译选项完全匹配,从根源避免版本兼容问题。

方案4:替换图片缓存依赖

如果上述方案均无效,可暂时使用其他轻量图片缓存库替代cached_network_image,或自行实现基础的图片本地缓存逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:33:22