执行eas build -p android时AAPT编译assets_images_bgbanner.png失败求助
解决Expo EAS Android构建的两个错误:
:app:mergeReleaseResources失败与java.lang.StackOverflowError 一、处理:app:mergeReleaseResources失败(AAPT无法编译assets_images_bgbanner.png)
可能原因
- 第三方依赖库内部引用了
bgbanner.png资源,但项目未提供对应文件 - EAS远程构建缓存残留了旧的资源引用
assetBundlePatterns设置为**/*导致扫描范围过大,误触发不存在的资源引用
解决步骤
排查第三方依赖
搜索项目所有文件(包括node_modules),查找是否有bgbanner.png的引用。如果找到对应依赖库,要么将符合尺寸要求的bgbanner.png放入assets目录,要么修改该库配置移除资源依赖。清理EAS构建缓存
执行命令强制清理远程构建缓存,避免旧引用残留:eas build --clear-cache -p android缩小资源扫描范围
修改app.json中的assetBundlePatterns,从**/*改为精确路径,只扫描项目自身资源:"assetBundlePatterns": [ "assets/**/*" ]清理本地缓存(若本地构建过)
如果之前在本地执行过Android构建,运行./gradlew clean清理本地gradle缓存后再触发EAS构建。
二、处理java.lang.StackOverflowError
可能原因
- Gradle编译时JVM栈内存不足
- 旧版本buildTools/compileSdk存在递归调用bug
解决步骤
增加Gradle JVM内存
在项目根目录创建android/gradle.properties文件(若不存在),添加配置提升堆内存:org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8升级Android构建版本
修改app.json中expo-build-properties的配置,使用更高版本的编译工具:"plugins": [ [ "expo-build-properties", { "android": { "compileSdkVersion": 33, "targetSdkVersion": 33, "buildToolsVersion": "33.0.2" }, "ios": { "deploymentTarget": "13.0" } } ] ]更高版本的构建工具通常会修复内存溢出相关问题。
检查依赖冲突
运行expo doctor检查项目依赖是否存在冲突,按照提示修复所有报错项后重新构建。
内容的提问来源于stack exchange,提问作者T. Phustyri
相关产品推荐
相关产品推荐

