Gradle无法生成Release APK:ShrinkProtoResourcesAction报文件提前结束错误
Gradle构建Release APK失败:ShrinkProtoResourcesAction解析错误解决方法
构建Release APK时,会触发:app:shrinkReleaseRes任务失败,错误日志如下:
Execution failed for task ':app:shrinkReleaseRes'. > A failure occurred while executing com.android.build.gradle.internal.transforms.ShrinkProtoResourcesAction > ParseError at [row,col]:[21,1] Message: Premature end of file.
伴随的其他症状:
- 找不到或无法打开
ShrinkProtoResourcesAction文件 - ProGuard配置无异常
- 能正常生成
.aab安装包 - 执行
flutter build apk命令时也会出现相同问题
解决办法
1. 清理缓存后重新构建
直接执行以下命令清理项目缓存和旧构建文件,再重新打包:
# Flutter项目执行 flutter clean rm -rf android/app/build flutter build apk --release
原生Android项目对应命令:
./gradlew clean ./gradlew assembleRelease
2. 临时禁用资源压缩
如果着急打包,可先在android/app/build.gradle的release构建块中关闭资源压缩:
buildTypes { release { // 关闭资源压缩和代码混淆(临时方案) shrinkResources false minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } }
注意:这么做会让APK体积变大,只是应急用,后续还是要找根本问题。
3. 检查资源文件完整性
错误提示的Premature end of file说明有资源文件损坏或不完整,重点排查:
- 检查
res/目录下的XML文件,尤其是错误提示中第21行附近的文件,看是否有未闭合的标签或截断内容 - 排查第三方依赖的资源,试试更新依赖版本,或者排除有问题的依赖库
- 确认
assets/目录下的Proto文件是否完整,有没有被意外截断
4. 更新Gradle构建工具版本
旧版本的Gradle或Android Gradle Plugin可能存在已知bug,更新到稳定版试试:
在android/build.gradle中更新插件版本:
buildscript { repositories { google() mavenCentral() } dependencies { // 替换成最新稳定版,比如7.4.2 classpath 'com.android.tools.build:gradle:7.4.2' // Flutter项目还要更新Flutter Gradle插件 classpath "dev.flutter:flutter-gradle-plugin:2.10.5" } }
同时更新gradle/wrapper/gradle-wrapper.properties里的Gradle版本:
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

