react-native 为构建/存档设置 ENVFILE 文件

con*_*909 5 environment xcode android-studio react-native devops

我真的对 react-native 中的生产/开发版本感到困惑。通过在终端中使用包脚本,我可以让我的应用程序在 iOS 和 Android 上运行

ENVFILE='/path/to/.env' react-native run-ios
ENVFILE='/path/to/.env' react-native run-android
Run Code Online (Sandbox Code Playgroud)

这非常适合在本地运行我的应用程序,但是在通过 xcode 创建存档时如何运行此命令?

我成功安装了 react-native-config 并且我在 JS 和本机文件中有我需要的变量,这只是使用它的最后一步是为设备进行生产或暂存构建。

我已经设法创建了构建和部署我的应用程序的 fastlane 脚本(并且我可以在 fastlane 脚本中引用我的 .env 变量),但这仍然没有将我的应用程序与里面的 .env 变量捆绑在一起。它可能是显而易见的,但我根本不理解这个概念。

我一直在这里参考本教程,并注意到有关在 xcode 中为每个 Scheme 添加预脚本的部分:

".env" > /tmp/envfile
Run Code Online (Sandbox Code Playgroud)

但我不知道该脚本的当前工作目录是什么,我使用纱线工作区,所以我的 node_modules 文件夹不在 RN 项目的根目录下(这不重要吗?)。我已经尝试了从这里到我的 .env 的多个路径,但没有任何效果,但我也不知道如何测试这个脚本。

Ada*_*hel 0

我已经使用 Fastlane 成功使其工作。我按照本指南进行快速通道设置:

https://github.com/thecodingmachine/react-native-boilerplate/blob/master/documentation/docs/3_Guides/BetaBuild.md

按照指南进行操作后,我将 Fastlane 目录移动到项目的根目录(并更新了所有路径)。

然后在运行命令时添加 ENV 变量,例如:ENVFILE=.env.beta fastlane ios,很容易将其作为脚本添加到 package.json 中。

还可以在 Fastlane 中使用 dotenv 功能,请参阅https://github.com/fastlane/fastlane/issues/13494#issuecomment-428941643

最重要的是,Fastlane 在运行打包器时将使用环境变量,这意味着 react-native-config 将成功选择它并使用正确的环境文件。