解决Flutter中shared_preferences引发的flutter_embedding_debug POM标记错误
问题描述
在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的实际路径):
示例路径:Windows为org.gradle.java.home=/path/to/your/java17C:\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
相关产品推荐
相关产品推荐

