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

如何在Expo应用中内置主JS Bundle以实现离线运行?

Expo离线内置JS Bundle:EAS构建AAB上传Play商店崩溃问题

问题背景

需要实现Expo应用内置JS Bundle离线运行,要求:

  • 无需本地运行Metro Bundler
  • 不从远程服务器获取JS Bundle

目前通过npx expo run:android --variant release命令构建的安装包能满足需求,但使用eas build --profile production --platform android --local生成的.aab文件,上传至Play商店进行内部测试时,应用会立即崩溃。已搜索相关方案但未找到有效解决办法,仅发现过时的expo publish命令。

排查与解决步骤

  1. 检查EAS配置文件
    确认eas.json中production配置是否正确开启离线bundle打包:

    {
      "build": {
        "production": {
          "android": {
            "buildType": "app-bundle",
            "gradleCommand": ":app:bundleRelease"
          },
          "ios": {
            "buildConfiguration": "Release"
          },
          "env": {
            "EXPO_NO_PUBLISH": "1"
          },
          "distribution": "store"
        }
      }
    }
    

    重点确保EXPO_NO_PUBLISH环境变量设置为1,强制构建时将JS Bundle内置到安装包,而非依赖远程发布版本。

  2. 验证本地AAB完整性
    用bundletool将本地生成的AAB转成通用APK,直接安装到真机测试:

    bundletool build-apks --bundle=./app.aab --output=./app.apks --mode=universal
    bundletool install-apks --apks=./app.apks
    

    若此APK运行正常,说明问题出在Play商店的签名或分发流程;若同样崩溃,说明本地构建过程存在问题。

  3. 核对签名配置
    EAS本地构建时,确认使用的签名密钥与Play商店要求一致。首次上传需确保eas.json配置了正确的签名信息,或构建时选择与Play商店关联的密钥库。

  4. 抓取崩溃日志
    通过Play商店控制台内部测试页面获取崩溃报告,或用Android Studio的Logcat连接真机抓取日志,定位具体崩溃原因(常见原因:bundle未正确内置、签名不匹配、权限缺失、原生依赖冲突等)。

  5. 对比两种构建方式的差异
    npx expo run:android --variant release是调用本地Gradle构建,而EAS构建使用Expo预配置环境。检查项目中android/app/build.gradle的自定义配置,确保EAS构建时能继承这些配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 05:33:19