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

执行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设置为**/*导致扫描范围过大,误触发不存在的资源引用

解决步骤

  1. 排查第三方依赖
    搜索项目所有文件(包括node_modules),查找是否有bgbanner.png的引用。如果找到对应依赖库,要么将符合尺寸要求的bgbanner.png放入assets目录,要么修改该库配置移除资源依赖。

  2. 清理EAS构建缓存
    执行命令强制清理远程构建缓存,避免旧引用残留:

    eas build --clear-cache -p android
    
  3. 缩小资源扫描范围
    修改app.json中的assetBundlePatterns,从**/*改为精确路径,只扫描项目自身资源:

    "assetBundlePatterns": [
      "assets/**/*"
    ]
    
  4. 清理本地缓存(若本地构建过)
    如果之前在本地执行过Android构建,运行./gradlew clean清理本地gradle缓存后再触发EAS构建。

二、处理java.lang.StackOverflowError

可能原因

  • Gradle编译时JVM栈内存不足
  • 旧版本buildTools/compileSdk存在递归调用bug

解决步骤

  1. 增加Gradle JVM内存
    在项目根目录创建android/gradle.properties文件(若不存在),添加配置提升堆内存:

    org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    
  2. 升级Android构建版本
    修改app.json中expo-build-properties的配置,使用更高版本的编译工具:

    "plugins": [
      [
        "expo-build-properties",
        {
          "android": {
            "compileSdkVersion": 33,
            "targetSdkVersion": 33,
            "buildToolsVersion": "33.0.2"
          },
          "ios": {
            "deploymentTarget": "13.0"
          }
        }
      ]
    ]
    

    更高版本的构建工具通常会修复内存溢出相关问题。

  3. 检查依赖冲突
    运行expo doctor检查项目依赖是否存在冲突,按照提示修复所有报错项后重新构建。


内容的提问来源于stack exchange,提问作者T. Phustyri

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:11:13