问题描述
FAILURE: Build failed with an exception.
- What went wrong: Execution failed for task ':app:processDebugResources'.
A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction Android resource linking failed aapt2.exe E 04-11 13:44:20 25968 17680 LoadedArsc.cpp:94] RES_TABLE_TYPE_TYPE entry offsets overlap actual entry data. aapt2.exe E 04-11 13:44:20 25968 17680 ApkAssets.cpp:149] Failed to load resources table in APK 'D:\Android\Sdk\platforms\android-35\android.jar'. error: failed to load include path D:\Android\Sdk\platforms\android-35\android.jar.
- 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 14s
┌─ Flutter Fix ────────────────────────────────────────────────────────────────────────────────────┐ │ [!] Using compileSdk 35 requires Android Gradle Plugin (AGP) 8.1.0 or higher. │ │ Please upgrade to a newer AGP version. The version of AGP that your project uses is likely │ │ defined in: │ │ D:\WORK\workingSource\fangfangtong66\android\settings.gradle, │ │ in the 'plugins' closure (by the number following "com.android.application"). │ │ Alternatively, if your project was created with an older version of the templates, it is likely │ │ in the buildscript.dependencies closure of the top-level build.gradle: │ │ D:\WORK\workingSource\fangfangtong66\android\build.gradle, │ │ as the number following "com.android.tools.build:gradle:". │ │ │ │ Finally, if you have a strong reason to avoid upgrading AGP, you can temporarily lower the │ │ compileSdk version in the following file: │ │ D:\WORK\workingSource\fangfangtong66\android\app\build.gradle │ └──────────────────────────────────────────────────────────────────────────────────────────────────┘ Error: Gradle task assembleDebug failed with exit code 1
问题分析
根据错误信息和提示,问题的核心是 compileSdkVersion 35
需要 Android Gradle Plugin (AGP) 版本为 8.1.0 或更高,而当前项目使用的 AGP 版本较低,导致 aapt2
无法正确处理资源文件。以下是详细的解决步骤:
1. 检查并升级 Android Gradle Plugin (AGP)
问题原因:
- 当前项目使用了
compileSdkVersion 35
,但 AGP 版本低于 8.1.0,导致不兼容。
解决步骤:
-
修改
android/build.gradle
文件:- 打开
D:\WORK\workingSource\fangfangtong66\android\build.gradle
。 - 将
classpath
更新到最新版本(如 8.1.0 或更高):buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:8.1.0' // 确保版本 >= 8.1.0
}
}
- 打开
-
更新 Gradle Wrapper 版本:
- 打开
android/gradle/wrapper/gradle-wrapper.properties
文件,确保使用支持 AGP 8.1.0 的 Gradle 版本:distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
- 打开
-
清理并重新构建项目:
- 运行以下命令:
flutter clean
flutter pub get
flutter build apk
- 运行以下命令:
2. 回退 compileSdkVersion
和 targetSdkVersion
如果暂时无法升级 AGP,可以选择回退 compileSdkVersion
和 targetSdkVersion
到较低版本(如 33)。
解决步骤:
-
修改
android/app/build.gradle
文件:- 打开
D:\WORK\workingSource\fangfangtong66\android\app\build.gradle
。 - 修改以下内容:
android {
compileSdkVersion 33 // 回退到较低版本
defaultConfig {
targetSdkVersion 33 // 同样回退到较低版本
}
}
- 打开
-
清理并重新构建项目:
- 运行以下命令:
flutter clean
flutter pub get
flutter build apk
- 运行以下命令:
3. 检查 Flutter 和 Android SDK 配置
操作步骤:
-
**运行
flutter doctor
**:- 确保所有依赖项都已正确安装,尤其是 Android 工具链。
- 如果有未解决的警告或错误,请按照提示修复。
-
检查 Android SDK Build Tools:
- 在 Android Studio 的 SDK Manager 中,确保安装了对应版本的 Build Tools(如 33.0.2 或 35.0.0)。
4. 替换 aapt2
工具
如果问题仍未解决,可能是 aapt2
工具本身存在问题。
解决步骤:
-
**下载最新版本的
aapt2
**:- 下载地址:Android SDK Build Tools。
- 替换路径:
D:\Android\Sdk\build-tools\<version>\aapt2.exe
。
-
验证
aapt2
是否正常工作:- 运行以下命令测试:
aapt2 version
- 运行以下命令测试:
5. 使用 --stacktrace
和 --info
获取更多信息
操作步骤:
- 运行以下命令以获取更详细的错误日志:
flutter build apk --stacktrace --info
- 根据日志中的具体错误定位问题。
总结
通过上述步骤逐一排查,问题应能得到解决。以下是优先级建议:
- 首选升级 AGP 和 Gradle(步骤 1),这是最推荐的解决方案。
- 次选回退
compileSdkVersion
和targetSdkVersion
(步骤 2),适用于无法升级的情况。 - 最后尝试替换工具链或清理缓存(步骤 3 和 4)。
如果问题仍然存在,请提供以下信息以便进一步分析:
flutter doctor
的输出结果。android/build.gradle
和android/app/build.gradle
的完整内容。- 使用
--stacktrace
或--info
获取的详细错误日志。
结束语 Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!