如何在 React Native 上下文中将环境变量传递给 Android 构建

izi*_*drw 4 android react-native

我的 React Native 代码使用环境变量来指定它所访问的 API 的 URL,因此我可以在 React-Native js 代码中执行类似的操作: const endpoint = process.env['API_URL']

当在计算机上运行应用程序时,启动捆绑器时很容易传入环境变量: API_URL='http://myapiurl.com' react-native start

但是,当我生成发布 apk 时,API_URL 未设置。

我应该在 gradle 构建(或其他地方)中的哪里进行配置,以便为生成的发布 apk 正确设置 API_URL?

小智 6

让它工作的快速方法:

确保将环境变量传递给 gradle build 命令 API_URL='myapiurl.com' ./gradlew assembleRelease

另一种更可持续的方法:

我建议您研究一下这个项目:

https://github.com/luggit/react-native-config

它允许您指定 .env 文件以将变量导入到代码中。

您甚至可以通过命名文件来指定不同的环境

.env.{environment}
Run Code Online (Sandbox Code Playgroud)

例如

.env.development
.env.production
Run Code Online (Sandbox Code Playgroud)

它还允许您指定捆绑应用程序时要使用的环境。

这是一个安卓的例子:

project.ext.envConfigFiles = [
    debug: ".env.development",
    release: ".env.production",
]

apply from: project(':react-native-config').projectDir.getPath() + "/dotenv.gradle"
Run Code Online (Sandbox Code Playgroud)

这些示例取自该项目的自述文件。