Flutter安卓构建失败::app:checkDebugAarMetadata任务执行出错
Flutter安卓构建失败:无法解析AndroidX依赖POM文件,提示"Content is not allowed in prolog"
我的Flutter项目在Web端运行正常,但安卓设备构建时失败。执行Gradle的assembleDebug任务时,报错Execution failed for task ':app:checkDebugAarMetadata',具体表现为无法解析多个AndroidX依赖的POM文件,提示“Content is not allowed in prolog”。已尝试升级gradle wrapper.properties中的Gradle版本、将compileSdkVersion和targetSdkVersion修改为31,问题仍未解决。
相关配置文件
app/build.gradle
def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { localPropertiesFile.withReader('UTF-8') { reader -> localProperties.load(reader) } } def flutterRoot = localProperties.getProperty('flutter.sdk') if (flutterRoot == null) { throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") } def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { flutterVersionCode = '1' } def flutterVersionName = localProperties.getProperty('flutter.versionName') if (flutterVersionName == null) { flutterVersionName = '1.0' } apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { compileSdkVersion 31 ndkVersion flutter.ndkVersion compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { applicationId "com.example.ccounterr" minSdkVersion flutter.minSdkVersion targetSdkVersion 31 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } buildTypes { release { signingConfig signingConfigs.debug } } } flutter { source '../..' }
android/build.gradle
buildscript { ext.kotlin_version = '1.7.10' repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } allprojects { repositories { google() mavenCentral() } } rootProject.buildDir = '../build' subprojects { project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects { project.evaluationDependsOn(':app') } task clean(type: Delete) { delete rootProject.buildDir } rootProject.allprojects { configurations.all { resolutionStrategy { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'androidx.core') { details.useVersion "1.0.2" } if (details.requested.group == 'androidx.lifecycle') { details.useVersion "2.0.0" } if (details.requested.group == 'androidx.versionedparcelable') { details.useVersion "1.0.0" } if (details.requested.group == 'androidx.fragment') { details.useVersion "1.0.0" } if (details.requested.group == 'androidx.appcompat') { details.useVersion "1.0.1" } if (details.requested.group == 'androidx.annotation') { details.useVersion "1.0.2" } } } } }
错误日志
Launching lib\main.dart on RMX1831 in debug mode... Running Gradle task 'assembleDebug'... [Fatal Error] tracing-1.0.0.pom:2:1: Content is not allowed in prolog. [Fatal Error] window-java-1.0.0-beta04.pom:2:1: Content is not allowed in prolog. [Fatal Error] loader-1.0.0.pom:2:1: Content is not allowed in prolog. [Fatal Error] customview-1.0.0.pom:2:1: Content is not allowed in prolog. [Fatal Error] viewpager-1.0.0.pom:2:1: Content is not allowed in prolog. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:checkDebugAarMetadata'. > Could not resolve all files for configuration ':app:debugRuntimeClasspath'. > Could not resolve androidx.tracing:tracing:1.0.0. Required by: project :app > io.flutter:flutter_embedding_debug:1.0.0-1837b5be5f0f1376a1ccf383950e83a80177fb4e > Could not resolve androidx.tracing:tracing:1.0.0. > Could not parse POM https://dl.google.com/dl/android/maven2/androidx/tracing/tracing/1.0.0/tracing-1.0.0.pom > Content is not allowed in prolog. > Could not resolve androidx.window:window-java:1.0.0-beta04. Required by: project :app > io.flutter:flutter_embedding_debug:1.0.0-1837b5be5f0f1376a1ccf383950e83a80177fb4e > Could not resolve androidx.window:window-java:1.0.0-beta04. > Could not parse POM https://dl.google.com/dl/android/maven2/androidx/window/window-java/1.0.0-beta04/window-java-1.0.0-beta04.pom > Content is not allowed in prolog. > Could not resolve androidx.loader:loader:1.0.0. Required by: project :app > io.flutter:flutter_embedding_debug:1.0.0-1837b5be5f0f1376a1ccf383950e83a80177fb4e > androidx.fragment:fragment:1.0.0 project :app > io.flutter:flutter_embedding_debug:1.0.0-1837b5be5f0f1376a1ccf383950e83a80177fb4e > androidx.fragment:fragment:1.0.0 > androidx.legacy:legacy-support-core-utils:1.0.0 > Could not resolve androidx.loader:loader:1.0.0. > Could not parse POM https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader-1.0.0.pom > Content is not allowed in prolog. > Could not resolve androidx.customview:customview:1.0.0. Required by: project :app > io.flutter:flutter_embedding_debug:1.0.0-1837b5be5f0f1376a1ccf383950e83a80177fb4e > androidx.fragment:fragment:1.0.0 > androidx.legacy:legacy-support-core-ui:1.0.0 project :app > io.flutter:flutter_embedding_debug:1.0.0-1837b5be5f0f1376a1ccf383950e83a80177fb4e > androidx.fragment:fragment:1.0.0 > androidx.legacy:legacy-support-core-ui:1.0.0 > androidx.coordinatorlayout:coordinatorlayout:1.0.0 project :app > io.flutter:flutter_embedding_debug:1.0.0-1837b5be5f0f1376a1ccf383950e83a80177fb4e > androidx.fragment:fragment:1.0.0 > androidx.legacy:legacy-support-core-ui:1.0.0 > androidx.drawerlayout:drawerlayout:1.0.0 project :app > io.flutter:flutter_embedding_debug:1.0.0-1837b5be5f0f1376a1ccf383950e83a80177fb4e > androidx.fragment:fragment:1.0.0 > androidx.legacy:legacy-support-core-ui:1.0.0 > androidx.slidingpanelayout:slidingpanelayout:1.0.0 > Could not resolve androidx.customview:customview:1.0.0. > Could not parse POM https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0.pom > Content is not allowed in prolog. > Could not resolve androidx.viewpager:viewpager:1.0.0. Required by: project :app > io.flutter:flutter_embedding_debug:1.0.0-1837b5be5f0f1376a1ccf383950e83a80177fb4e > androidx.fragment:fragment:1.0.0 > androidx.legacy:legacy-support-core-ui:1.0.0 > Could not resolve androidx.viewpager:viewpager:1.0.0. > Could not parse POM https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0.pom > Content is not allowed in prolog. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 26s Exception: Gradle task assembleDebug failed with exit code 1
已尝试的解决方法
- 升级gradle wrapper.properties中的Gradle版本
- 将compileSdkVersion修改为31
- 将targetSdkVersion修改为31
可行解决方案
清理Gradle缓存
- 执行命令:
gradlew clean build --refresh-dependencies(Windows)或./gradlew clean build --refresh-dependencies(Mac/Linux) - 手动删除本地Gradle缓存目录:Windows路径为
C:\Users\<你的用户名>\.gradle\caches,Mac/Linux路径为~/.gradle/caches
- 执行命令:
移除强制指定的AndroidX版本约束
在android/build.gradle中删除以下代码块,让Gradle自动适配兼容的依赖版本:rootProject.allprojects { configurations.all { resolutionStrategy { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'androidx.core') { details.useVersion "1.0.2" } if (details.requested.group == 'androidx.lifecycle') { details.useVersion "2.0.0" } if (details.requested.group == 'androidx.versionedparcelable') { details.useVersion "1.0.0" } if (details.requested.group == 'androidx.fragment') { details.useVersion "1.0.0" } if (details.requested.group == 'androidx.appcompat') { details.useVersion "1.0.1" } if (details.requested.group == 'androidx.annotation') { details.useVersion "1.0.2" } } } } }这段代码强制锁定了老旧AndroidX版本,与Flutter嵌入依赖的版本冲突,导致POM解析异常。
优化仓库访问配置
如果网络无法正常访问Google Maven仓库,可在android/build.gradle的仓库配置中添加国内镜像:buildscript { ext.kotlin_version = '1.7.10' repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } // 其他内容不变 } allprojects { repositories { maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } }更新Flutter SDK和依赖
执行flutter upgrade更新到最新稳定版Flutter,再执行flutter pub get重新拉取项目依赖。
内容的提问来源于stack exchange,提问作者anam zaki
相关产品推荐
相关产品推荐

