如何在终端设置ENVFILE以生成React Native Expo Android发布版AAB?
解决React Native Expo构建AAB时环境变量未生效的问题
确认环境变量配置规范
若使用.env文件,需确保安装@expo/env(Expo官方推荐)或dotenv依赖。客户端可访问的公开变量必须以EXPO_PUBLIC_为前缀,示例:EXPO_PUBLIC_API_BASE=https://your-api.com EXPO_PUBLIC_APP_VERSION=1.0.0仅构建阶段使用的私有变量无需前缀,但需保证构建流程能正确读取。
代码中正确读取变量
Expo 49及以上版本支持直接通过process.env访问带前缀的公开变量,也可通过expo-constants读取配置中的extra字段:import Constants from 'expo-constants'; // 方式1:直接访问process.env(Expo 49+) const apiBase = process.env.EXPO_PUBLIC_API_BASE; // 方式2:通过expoConfig.extra const appVersion = Constants.expoConfig?.extra?.appVersion;避免直接使用未加
EXPO_PUBLIC_前缀的process.env变量,这类变量不会被打包到客户端代码中。用动态配置文件注入变量
静态app.json无法读取环境变量,需改用app.config.js或app.config.ts,从.env读取变量并注入到extra字段:import '@expo/env/config'; export default { expo: { name: 'YourApp', slug: 'your-app', extra: { apiBase: process.env.EXPO_PUBLIC_API_BASE, // 私有构建变量 buildKey: process.env.BUILD_KEY, }, }, };构建AAB时保证变量注入
- 本地构建:运行
eas build --platform android --local,Expo会自动读取本地.env文件中的变量,确保文件存在且路径正确。 - 云端构建:本地
.env不会被上传,需通过Expo CLI添加项目密钥,或在Expo Dashboard的项目设置中配置环境变量:eas secret:create --scope project --name EXPO_PUBLIC_API_BASE --value "https://your-api.com"
- 本地构建:运行
清理构建缓存
旧缓存可能导致变量未更新,执行以下命令清理:expo r -c eas build --clear-cache验证变量打包情况
本地预构建后,检查android/app/src/main/assets/expo-constants.json文件,若其中包含你配置的extra变量,说明配置生效;若未出现,需检查.env或app.config.js的配置是否有误。
内容的提问来源于stack exchange,提问作者n9p4
相关产品推荐
相关产品推荐

