React Native执行./gradlew bundleRelease时mergeReleaseResources失败求助
执行./gradlew bundleRelease构建Android Release版本时,抛出如下错误:
Task :app:mergeReleaseResources FAILED
ERROR:/Users/apple/.gradle/caches/transforms-3/ef7e3198104e6ed5b72438d3c2fc716c/transformed/material-1.9.0/res/values/values.xml: Resource and asset merger: Can't determine type for tag '?attr/shapeAppearanceCornerSmall '
FAILURE: Build failed with an exception.
- What went wrong:
Execution failed for task ':app:mergeReleaseResources'./Users/apple/.gradle/caches/transforms-3/ef7e3198104e6ed5b72438d3c2fc716c/transformed/material-1.9.0/res/values/values.xml: Error: Can't determine type for tag '
?attr/shapeAppearanceCornerSmall '
说明:未手动安装或升级过任何可能引发该问题的依赖,已在Stack Overflow搜索但未找到合适解决方案。
解决方案
强制降级Material库版本
在项目的android/app/build.gradle文件中,添加对Material库的强制依赖版本,指定为1.8.0(该版本无此macro标签解析问题):dependencies { // 保留原有其他依赖 implementation("com.google.android.material:material:1.8.0") { force = true } }原理:错误源于Material 1.9.0引入的
<macro>资源标签,旧版本Android Gradle Plugin(AGP)对这类标签的解析支持不足,降级到1.8.0可直接规避该问题。清理Gradle缓存
执行以下命令清理本地Gradle缓存,避免缓存中残留的损坏资源干扰构建:./gradlew clean rm -rf ~/.gradle/caches/清理完成后重新执行
./gradlew bundleRelease。升级Android Gradle Plugin(AGP)版本
查看项目android/build.gradle中的AGP版本,若版本低于7.4.0,建议升级到兼容Material 3的版本(如7.4.2或更高):buildscript { dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 保留原有其他classpath依赖 } }注意:升级AGP后需同步Gradle,并处理可能出现的其他依赖兼容问题。
内容的提问来源于stack exchange,提问作者Ahmad Habib

