如何为Alpha/Beta测试分发React Native应用后端及部署问题排查
嘿,刚上手React Native + Firebase的话,确实会在发布这块有点摸不着头脑,我来一步步给你理清楚,解决你遇到的问题~
一、先搞定你遇到的Firebase Hosting部署问题
首先得明确:Firebase Hosting是用来托管Web应用的,而React Native本质是原生移动应用(iOS/Android),直接把RN项目丢去Hosting肯定不行——RN最终是编译成原生二进制文件,不是Web静态资源,所以你看到的空白index.html是Hosting的默认页面,自然没有你的应用内容。
如果你的目标是发布RN的Web版本(比如用react-native-web),那得先把RN项目编译成Web静态文件,再部署:
- 第一步:安装
react-native-web及相关依赖,配置Webpack(用Expo的话更简单,Expo支持一键导出Web版本) - 第二步:编译Web资源,比如Expo项目可以跑
expo export:web,会生成build文件夹;自定义Webpack的话,执行对应的构建命令生成静态文件目录 - 第三步:部署到Firebase Hosting:
- 先装Firebase CLI:
npm install -g firebase-tools - 登录你的Firebase账号:
firebase login - 初始化Hosting:
firebase init hosting,选择你的目标项目,把public目录设为刚才生成的build文件夹 - 部署:
firebase deploy --only hosting
这样部署后就能看到你的RN Web应用内容了。
- 先装Firebase CLI:
但如果你是要发布原生移动App,那Firebase Hosting根本不是用来托管App本身的,它可以用来托管后端静态资源或者Web服务,App的发布得走iOS/Android各自的应用商店流程,同时结合Firebase的其他服务来配合。
二、React Native原生App完整发布流程(结合Firebase)
1. 先把Firebase后端配置好
不管是测试还是正式发布,先把Firebase的后端服务(比如Auth、Firestore、Storage这些)搭好:
- 在Firebase控制台创建项目,分别添加iOS和Android应用,下载对应的
GoogleService-Info.plist(iOS用)和google-services.json(Android用),放到RN项目的对应目录里 - 安装RN的Firebase依赖,比如
@react-native-firebase/app、@react-native-firebase/auth等,按照要求链接原生模块(现在很多RN版本支持自动链接,不用手动搞)
2. Alpha/Beta测试分发(后端+App)
后端测试怎么搞?
- Firebase的后端服务默认支持测试环境,你可以给测试单独建一个Firebase项目(或者用同一个项目的不同环境,比如用Firebase Remote Config来区分测试和生产)
- 测试时,让App连接测试环境的Firebase项目就行——替换对应的
plist/json文件就行 - 本地开发测试的话,推荐用Firebase Emulators,跑
firebase emulators:start就能在本地模拟Auth、Firestore这些服务,不用连线上后端,调试起来更高效
App的测试版怎么给测试人员?
Android端:
最方便的是用Firebase App Distribution,这是Firebase专门做测试分发的工具:
- 先编译RN的Android测试包:进入
android目录,跑./gradlew assembleRelease(要Debug包的话就跑assembleDebug) - 打开Firebase控制台的App Distribution,上传编译好的APK或者AAB文件
- 加测试人员的邮箱,他们会收到邀请链接,点进去就能下载安装测试版App
当然也可以用Google Play Console的内部测试/封闭测试渠道,把App上传到Play Console,邀请测试人员加入测试组。
iOS端:
同样可以用Firebase App Distribution:
- 用Xcode把RN项目打包成IPA文件,或者用
xcodebuild命令生成归档文件 - 上传到Firebase App Distribution,添加测试人员——注意测试设备得在你的Apple开发者账户的设备列表里,或者用Ad Hoc分发方式
另外也可以用Apple的TestFlight:把IPA上传到App Store Connect,创建TestFlight测试组,邀请测试人员加入,他们就能通过TestFlight下载测试版。
3. 正式发布到应用商店
Android:
- 编译签名的Release包:进入
android目录,跑./gradlew bundleRelease(生成AAB格式,Google现在推荐用这个上传到Play Console) - 把AAB上传到Google Play Console,填好应用信息、截图、描述这些,提交审核,审核过了就能正式发布
iOS:
- 用Xcode打包成IPA,或者用
xcodebuild archive生成归档文件,然后上传到App Store Connect - 完善应用的所有信息,提交审核,通过后就能发布到App Store了
三、再给你梳理下当前的问题
你之前用Firebase Hosting部署RN项目,是混淆了Web托管和原生App发布的区别:
- 如果是做Web版RN:先编译成Web静态资源,再部署到Hosting
- 如果是做原生App:Hosting不用来托管App本身,而是配合Firebase的App Distribution做测试分发,或者用Firestore这些做后端服务
另外,Alpha/Beta测试时,后端可以用Firebase的测试项目或者本地模拟器,App分发优先用Firebase App Distribution,操作简单,测试人员也方便获取测试版。
内容的提问来源于stack exchange,提问作者Jens Kvist




