如何本地生成可共享的Expo调试构建包用于Firebase应用分发
本地构建可离线运行的Expo调试APK
核心思路
普通的debug构建默认不打包JS bundle,必须连开发服务器才能跑。咱们要做的就是让debug构建也把JS bundle和资源打进APK里,同时保留调试能力,这样既不用开bundler,速度又比release构建快很多。
具体操作步骤
1. 预生成开发环境的离线Bundle
先在本地生成带调试信息的JS bundle和静态资源,这一步只需要在代码/资源变更后执行:
npx expo export --platform android --dev
--dev参数会保留调试符号和详细错误提示,完全适合内部测试用- 执行完会在
dist/android目录下生成index.android.bundle和对应的资源文件
2. 修改Android项目的Bundle加载逻辑
打开Expo项目里的android/app/src/main/java/com/[你的包名]/MainApplication.java,找到ReactNativeHost中的getJSBundleFile()方法,改成下面这样:
@Override protected String getJSBundleFile() { // 优先用本地打包好的bundle,不存在再 fallback 到开发服务器(可选保留) File bundleFile = new File(getFilesDir(), "index.android.bundle"); if (bundleFile.exists()) { return bundleFile.getAbsolutePath(); } return "http://localhost:8081/index.android.bundle?platform=android&dev=true&minify=false"; }
3. 把Bundle和资源复制到Android项目目录
- 创建
android/app/src/main/assets目录(如果没的话),把dist/android/index.android.bundle复制进去 - 把
dist/android/res里的所有资源文件,对应复制到android/app/src/main/res的子目录里(比如drawable、mipmap这些)
4. 构建调试APK
现在直接跑debug构建命令就行,生成的APK自带bundle,不用开服务器:
./gradlew assembleDebug
这个速度和普通debug构建差不多,因为跳过了release的混淆、压缩这些耗时步骤。
额外优化
- 每次代码/资源更新后,只需要重新跑
npx expo export --platform android --dev,再复制文件重新构建就行 - 嫌手动复制麻烦的话,搞个shell脚本自动化:
#!/bin/bash npx expo export --platform android --dev mkdir -p android/app/src/main/assets cp dist/android/index.android.bundle android/app/src/main/assets/ cp -r dist/android/res/* android/app/src/main/res/
验证
装完APK直接打开就能用,不用启动任何开发服务器,同时还保留了debug模式的所有调试功能,比如Hermes调试、React DevTools连接这些都能用。
内容的提问来源于stack exchange,提问作者Veeresh Charantimath
相关产品推荐
相关产品推荐

