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

Expo + Firebase:如何区分开发与生产环境的应用包名?

处理Expo应用多环境Firebase的包名及发布问题

一、多环境包名的处理方式

Firebase要求应用包名与项目唯一绑定,不同Firebase项目不能共享同一个包名。因此开发和生产环境必须使用不同的包名,常见命名方案是给开发环境包名添加后缀:

  • 生产环境:com.yourapp.main
  • 开发环境:com.yourapp.main.dev 或 com.yourapp.dev

二、Expo中用环境变量动态切换包名

完全可以通过app.config.js(替代静态app.json)结合环境变量实现动态包名,无需手动修改配置:

  1. 将项目根目录的app.json重命名为app.config.js,改为导出函数的格式。
  2. 在函数中读取环境变量,根据当前环境返回对应的包名及应用配置。

示例代码:

export default () => {
  const env = process.env.APP_ENV || 'development';
  const isProduction = env === 'production';
  
  return {
    expo: {
      name: isProduction ? '你的应用' : '你的应用-开发版',
      slug: isProduction ? 'yourapp' : 'yourapp-dev',
      ios: {
        bundleIdentifier: isProduction ? 'com.yourapp.main' : 'com.yourapp.main.dev',
        googleServicesFile: isProduction ? './GoogleService-Info.plist' : './GoogleService-Info-Dev.plist'
      },
      android: {
        package: isProduction ? 'com.yourapp.main' : 'com.yourapp.main.dev',
        googleServicesFile: isProduction ? './google-services.json' : './google-services-dev.json'
      }
    }
  };
};

构建时通过设置环境变量切换环境:

  • 生产构建:APP_ENV=production expo build:android(或build:ios)
  • 开发构建:APP_ENV=development expo build:android

三、应用商店发布的版本区分

需要分别构建开发版本和生产版本:

  • 内部测试版本:使用开发环境包名、关联开发Firebase项目,构建后上传至应用商店的测试渠道(如Google Play内部测试、Apple TestFlight),供团队内部测试使用。
  • 正式生产版本:使用生产环境包名、关联生产Firebase项目,构建后上传至正式发布渠道,面向普通用户。

注意:两个版本的包名独立,应用商店会将它们视为两个不同的应用,测试版本不会影响正式版本的用户数据和体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 08:12:06