我有一个React Native应用程序(iOS和Android),需要为两个客户端构建。我想在构建时替换应用程序的徽标和颜色。
我考虑过的一些选项:
- 分支/分叉存储库。问题:维护两个版本需要做更多的工作
- 将资产保留在构建时要提供的源树之外。问题:设置起来更难,尤其是CI(?)
- 签入所有资产,并使用环境变量在它们之间切换。问题:当应用程序在设备上运行时,不知道如何设置环境变量。它也不可扩展,但目前还可以
如何参数化React Native应用程序,尤其是使用Fastlane部署的应用程序。。也许通过传递这样的参数?
一种可能的设置包括:
- 将
react-native-config
包添加到您的ReactNative项目中(https://github.com/luggit/react-native-config) - 在ReactNative项目中设置
.env.someEnv
文件(上面的包使用这些文件) - 根据所需环境设置图像路径等的变量
-
根据软件包自述执行所需的安装工作,包括在构建之前需要运行命令
echo .env.client1 > /tmp/envfile
。有几个选项包括:a。在package.json文件中设置一个包脚本,并在快速通道命令之前运行该命令,例如
echo .env.client1 /tmp/envile && bundle exec fastlane ios release
b。这有点棘手,但在Xcode项目中为不同的环境设置xcconfig文件,并在其中有一个名为ENVFILE的变量。然后通过
gym
中的xcconfig
参数告诉fastlane使用正确的xcconfig文件。最后,使用命令echo $ENVFILE > /tmp/envfile
在Xcode方案中设置预构建操作
抱歉没有时间写更详细的文章,如果你喜欢更多细节,请随时回复,我会尽我所能提供帮助。