生成签名APK时遇AAPT2异常及mergeReleaseResources任务失败求助
解决签名APK构建时
mergeReleaseResources失败的问题 我之前也碰到过一模一样的情况——普通调试构建、真机/虚拟机安装都没问题,偏偏打签名包就卡在资源合并这一步。给你几个亲测有效的排查和解决方向:
先清理缓存再重新构建
先在终端执行./gradlew clean(Windows系统用gradlew clean),彻底清理项目缓存后再尝试生成签名APK。很多时候是debug构建的缓存资源和release构建冲突,清理后就能解决大部分资源合并异常。排查Release专属的资源配置
检查这几个点:res目录下有没有大小写不一致的资源文件(比如Icon.png和icon.png,Windows不区分大小写,但打包时的Linux环境会识别为两个文件导致冲突);- 有没有只在
debug资源目录存在、但release目录缺失的资源(比如某些测试用的drawable或字符串); - 打开模块级
build.gradle,看看release构建是否开启了资源压缩,临时把shrinkResources设为false试试:
如果关闭后能正常打包,再逐步排查哪些资源被误判定为无用资源。android { buildTypes { release { shrinkResources false // 先关闭资源压缩测试 minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
检查资源文件本身的完整性
看看最近新增的资源有没有问题:比如损坏的图片文件、XML布局里引用了不存在的drawable、或者WebP格式资源在旧Gradle版本里的兼容问题。可以尝试删除或替换最近添加的资源,验证是否能解决问题。升级Gradle和Android Gradle Plugin版本
旧版本的插件可能存在资源合并的已知bug,打开项目级build.gradle,把插件和Gradle版本升级到最新稳定版,比如:dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 替换为当前最新稳定版 }同步项目后再尝试打包。
查看完整错误日志定位根源
你提供的日志是截断的,建议在终端执行./gradlew assembleRelease(Windows用gradlew assembleRelease),这样能看到完整的错误堆栈,里面会明确指出是哪个资源导致的合并失败(比如重复资源、资源引用不存在等),这是最快定位问题的方法。
内容的提问来源于stack exchange,提问作者Akram Bichri
相关产品推荐
相关产品推荐

