Expo v52预览APK中如何实现构建后可配置EXPO_PUBLIC_API_URL用于本地测试?
Expo v52预览APK中如何实现构建后可配置EXPO_PUBLIC_API_URL用于本地测试?
嘿,我来帮你搞定这个问题!首先得明确一点:默认的EXPO_PUBLIC_*环境变量是构建时就嵌入到APP代码里的,构建完成后就没法直接修改了。不过针对你的本地测试需求,有几个实用的方案可以让你不用重新打包APK就能修改API地址,下面一步步给你讲:
方案1:本地静态配置文件(最适合本地测试,灵活度拉满)
这个方法是把API地址放在一个可直接修改的本地文件里,APP运行时读取这个文件的内容,步骤超简单:
- 在你的项目根目录下创建一个
assets/env.json文件,内容如下:{ "EXPO_PUBLIC_API_URL": "http://192.168.57.53:3000/api" } - 在APP代码里读取这个文件的内容,比如在你的主入口文件(比如
App.js)里:import envConfig from '../assets/env.json'; const API_URL = envConfig.EXPO_PUBLIC_API_URL; // 之后直接用API_URL发起请求就行 - 构建预览APK后,你可以用解压工具(比如WinRAR、7-Zip)打开APK包,找到
assets/env.json文件,直接修改里面的URL,然后重新把文件打包回APK。注意:如果是Debug版预览APK,修改后只需要重新打包就能安装;如果是Release版,可能需要重新签名,但本地测试用Debug版就足够了。
方案2:用EAS Update远程更新(适合需要快速切换环境的场景)
如果你不仅想本地改,还希望能远程给测试设备推送新的API地址,可以用Expo的EAS Update功能——它能在不重新安装APK的情况下,推送JS代码和配置更新:
- 先初始化EAS Update:
eas update:configure - 在
eas.json的preview构建配置里,设置环境变量关联EAS Secrets:{ "build": { "preview": { "env": { "EXPO_PUBLIC_API_URL": "$EXPO_PUBLIC_API_URL" }, "distribution": "internal", "android": { "buildType": "apk" } } } } - 把你的API地址添加到EAS Secrets里(这样不用把敏感信息提交到代码库):
eas secret:create --name EXPO_PUBLIC_API_URL --value "http://192.168.57.53:3000/api" - 构建预览APK:
eas build --platform android --profile preview - 之后要修改API地址时,不用重新构建APK,只需要更新EAS Secrets的值,然后推送一个更新:
测试设备上的APP会自动拉取更新,用上新的API地址。eas update --branch preview --message "更新API地址"
关于EAS Secrets的说明
你提到的EAS Secrets是用来存储敏感环境变量的,但它是构建时注入到APP里的,构建完成后就没法直接修改了。不过搭配EAS Update的话,你可以通过推送更新的方式,让APP加载新的环境变量值,相当于间接实现了“动态修改”。
第一次构建预览APK的完整步骤
因为你还没构建过APK,这里给你走一遍流程:
- 安装EAS CLI:
npm install -g eas-cli - 登录你的Expo账号:
eas login - 初始化项目的EAS配置:
eas build:configure - 按照上面的方案配置好API地址的读取方式,然后执行构建命令:
构建完成后,你会收到下载APK的链接,直接安装到测试设备即可。eas build --platform android --profile preview
内容来源于stack exchange
相关产品推荐
相关产品推荐

