AndroidX迁移与Gradle更新后构建报错:Already seen doctype
问题原因及解决方案
可能原因
- 本地Gradle/Maven缓存损坏:报错依赖的POM文件在本地缓存中存在重复DOCTYPE声明,多由网络中断、缓存写入异常导致文件损坏。
- Gradle版本升级后的校验严格性提升:新版Gradle的
checkDebugAarMetadata任务对POM文件XML格式校验更严格,旧依赖的POM可能存在格式瑕疵,此前未触发校验。 - 依赖源异常:配置的Maven仓库(如镜像源)提供的POM文件本身格式错误。
解决步骤
清理本地缓存
找到本地Gradle缓存目录(默认路径:~/.gradle/caches/modules-2/files-2.1),搜索报错中的依赖包名(如com.journeyapps/zxing-android-embedded、com.sqlscout/sqlscout-server),删除对应缓存文件夹,再执行./gradlew clean build重新构建。强制刷新依赖
在终端执行以下命令,强制Gradle重新下载所有依赖:
./gradlew clean build --refresh-dependencies
- 替换或升级问题依赖
检查这些依赖的更新版本:
- zxing-android-embedded 3.4.0版本较旧,建议升级到4.x及以上适配AndroidX的版本;
- searchablespinnerlibrary 1.3.1可查找维护更新的替代库或新版本,避免使用停止维护的旧依赖。
替换后重新构建,旧依赖的POM格式问题通常在新版本中已修复。
- 检查仓库配置
若使用自定义Maven镜像源,尝试切换至官方Maven仓库(mavenCentral()),排除镜像源返回损坏POM的可能。修改项目根目录build.gradle,确保仓库优先使用官方源:
repositories { mavenCentral() // 其他仓库配置后置 }
内容的提问来源于stack exchange,提问作者Gabriel Rogath
相关产品推荐
相关产品推荐

