You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio版本迁移后开启shrinkResources发布打包失败求助

解决Android Studio迁移后shrinkReleaseRes执行失败的问题

排查与解决步骤

1. 检查自动生成的XML文件

资源收缩会扫描build/generated目录下的自动生成资源,这些文件可能存在格式问题:

  • 手动打开build/generated/res等子目录下的XML文件,查看文件开头是否有空格、特殊字符或BOM头(UTF-8编码的隐藏前缀)。
  • 若发现异常文件,执行./gradlew clean删除构建目录后重新生成,若问题依旧,检查生成该文件的插件或配置是否存在兼容性问题。

2. 排查第三方依赖库的XML资源

部分第三方库可能包含格式不规范的XML资源,触发解析错误:

  • 执行./gradlew app:dependencies导出依赖树,排查近期新增或更新的依赖。
  • 临时注释掉可疑依赖,重新构建测试,定位到问题库后,尝试升级该库版本或替换为替代库。

3. 修复XML文件的BOM头问题

即使XML声明为UTF-8,部分编辑器保存时会添加UTF-8 BOM头,导致解析器报错:

  • 用Notepad++或VS Code打开XML文件,将编码切换为UTF-8 without BOM后重新保存。
  • 批量检测BOM头文件:在终端执行grep -r $'\xef\xbb\xbf' app/src/main/res/(Linux/macOS),找到带BOM头的文件并修复。

4. 检查资源收缩配置文件

若自定义了资源保留规则,需确保配置文件格式正确:

  • 查看res/raw/keep.xml,确认文件开头无多余字符,XML语法正确(比如根标签为<?xml version="1.0" encoding="utf-8"?><resources>...</resources>)。
  • 尝试添加临时资源收缩规则,在build.gradle的release构建类型中添加:
    resourceProguardFiles 'resource-rules.pro'
    
    然后在resource-rules.pro中写入:
    keep public class * extends android.content.res.Resources
    
    重新构建测试,若成功再逐步缩小规则范围定位问题资源。

5. 匹配AGP与Android Studio版本

Android Studio版本需对应匹配的Android Gradle Plugin(AGP)版本:

  • Electric Eel对应AGP 7.4.x,Dolphin对应AGP 7.3.x。修改项目根目录build.gradle中的AGP版本:
    dependencies {
        classpath 'com.android.tools.build:gradle:7.4.2' // 适配Electric Eel
        // 或 classpath 'com.android.tools.build:gradle:7.3.1' // 适配Dolphin
    }
    
    同步后重新构建。

6. 启用详细日志定位问题文件

执行以下命令获取资源收缩的详细日志,精准定位报错的XML文件:

./gradlew app:shrinkReleaseRes --info

日志中会显示触发ParseError的具体文件路径,针对该文件进行修复即可。

内容的提问来源于stack exchange,提问作者AmiiiR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 03:52:45