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

解决Flutter中shared_preferences引发的flutter_embedding_debug POM标记错误

解决Flutter添加shared_preferences后的构建错误及JDK版本配置问题

问题描述

在Flutter项目中添加shared_preferences依赖后构建时出现以下错误,移除该依赖后问题消失,说明错误与该包直接相关;同时本地安装Java 17,但Android Studio构建时使用Java 21,可能也是诱因之一:

Warning: SDK processing. This version only understands SDK XML versions up to 3 but an SDK XML file of version 4 was encountered. This can happen if you use versions of Android Studio and the command-line tools that were released at different times.
[Fatal Error] flutter_embedding_debug-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom:2:90: The markup in the document following the root element must be well-formed.
[Fatal Error] flutter_embedding_debug-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom:2:90: The markup in the document following the root element must be well-formed.
[Fatal Error] flutter_embedding_debug-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom:2:90: The markup in the document following the root element must be well-formed.
[Fatal Error] flutter_embedding_debug-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom:2:90: The markup in the document following the root element must be well-formed.
[Fatal Error] flutter_embedding_debug-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom:2:90: The markup in the document following the root element must be well-formed.
warning: [options] source value 8 is obsolete and will be removed in a future release
warning: [options] target value 8 is obsolete and will be removed in a future release
warning: [options] To suppress warnings about obsolete options, use -Xlint:-options.
3 warnings

环境信息

  • Java版本:17.0.12 LTS
  • Flutter版本:3.24.5(稳定通道)
  • Android Studio版本:Ladybug | 2024.2.1 Patch 3
  • shared_preferences版本:^2.3.2

已尝试操作

  • 通过Build, Execution, Deployment > Build Tools > Gradle修改JDK版本无效
  • 在gradle.properties中添加JDK路径无效
  • 新版Android Studio中找不到修改Gradle JDK的选项

解决方案

1. 解决flutter_embedding_debug POM文件格式错误

  • 清理缓存:执行以下操作彻底清理缓存
    flutter clean
    
    手动删除项目根目录下的.android/cache和.gradle/cache文件夹,然后执行flutter pub get重新拉取依赖。
  • 升级shared_preferences版本:将pubspec.yaml中的shared_preferences版本升级到与Flutter 3.24.5兼容的最新稳定版(如^2.20.0),保存后执行flutter pub get。
  • 手动修复POM文件:找到本地Gradle缓存中的flutter_embedding_debug-1.0.0-a18df97ca57a249df5d8d68cd0820600223ce262.pom文件(路径一般为~/.gradle/caches/modules-2/files-2.1/io.flutter/flutter_embedding_debug/...),打开后检查XML格式,删除根元素后的多余内容,确保XML结构完整。

2. 确保Android Studio构建时使用Java 17

  • 通过项目结构配置:打开Android Studio,依次点击File > Project Structure > Project,在Gradle JDK下拉菜单中选择已安装的Java 17;若未找到,点击Download JDK选择17版本进行安装。
  • 通过gradle.properties强制指定:在项目根目录的gradle.properties文件中添加以下配置(替换为本地Java 17的实际路径):
    org.gradle.java.home=/path/to/your/java17
    
    示例路径:Windows为C:\Program Files\Java\jdk-17.0.12,Mac为/Library/Java/JavaVirtualMachines/jdk-17.0.12.jdk/Contents/Home。
  • 配置模块级JDK:进入File > Project Structure > Modules,选中android模块,在Sources标签设置Language level为17 - Sealed classes, pattern matching for instanceof,在Dependencies标签设置Module SDK为Java 17。

3. 其他修复依赖冲突或POM问题的步骤

  • 检查Flutter插件兼容性:确保Android Studio的Flutter插件版本与Flutter SDK 3.24.5匹配(推荐插件版本79.0.3及以上),可通过Settings > Plugins查看并更新。
  • 升级Gradle版本:
    • 在android/build.gradle文件中修改Gradle插件版本:
      dependencies {
          classpath 'com.android.tools.build:gradle:8.5.0'
          // 其他依赖...
      }
      
    • 在android/gradle/wrapper/gradle-wrapper.properties中修改Gradle分发版本:
      distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-all.zip
      
  • 临时禁用Gradle缓存:在gradle.properties中添加org.gradle.caching=false,完成一次构建后再改回true,排查缓存导致的异常。
  • 更新Android SDK组件:打开SDK Manager,确保Android Build Tools、Platform Tools为最新兼容版本,SDK Platform选择Flutter 3.24.5要求的版本(推荐Android 34)。

内容的提问来源于stack exchange,提问作者No-one

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:15:11