使用配置文件释放移动(React Native)工件

问题描述 投票:4回答:2

十二因素应用程序中获取灵感:V。构建,发布,运行 ,我正在考虑使用react-native-web构建的应用程序,考虑这三个不同的步骤来更新我们的CI / CD管道。

具体来说,我想:

  1. 构建:为每个平台(web,android,ios)生成代码的环境不可知的工件
  2. 发布:获取工件和配置文件(API URL,API密钥,调试设置等),并发布到每个平台

这对于网络来说是微不足道的,这就是十二因素应用程序的想法。 我的问题是如何在移动平台上读取配置文件 ,如何将其与react-native-web构建工件结合使用? 我的工件是否需要包含所有源代码和依赖项,以便我可以在发布时提取配置然后构建?

理想情况下,每个工件都包含为每个平台编译的代码,这些代码以某种方式知道如何引入配置文件并对其执行某些操作。 接下来最好的是拥有每个平台的源代码,我可以在发布时使用配置文件进行编译。 第三好的方法是在发布时为每个发行版提供足够的信息,以便它可以在运行时请求配置。

完全披露,我对构建和部署移动应用程序一无所知,所以如果有明显的解决方案我会道歉!

android ios react-native mobile release-management
2个回答
2
投票

这与Android类似。 一旦创建了构建二进制文件,它就是不可变的。 所以不幸的是,否定了选项#1。 一旦我们构建它,我们就无法对二进制文件做任何其他事情。

我认为反应本地选项二是最好的方法。 基本上,一旦解决了您的配置需求,您就需要在发布时构建应用程序。 这避免了在选项#3中在运行时加载内容的任何开销,并且仍然与Twelve Factor很好地匹配。 您仍然拥有与发布类型匹配相同配置的移动二进制文件。

为了实际读取这些值,您可以将配置文件放到项目的根目录中,我们可以帮助设置将它们拉进去。如果您愿意,我很乐意讨论这些细节。

更新:

我们可以做任何iOS(几乎一样)

当前构建工具将所有代码编译为字节码classes.dex并将所有resrouces压缩为resrouces.arcres/raw保持不变。 这为我们提供了一个注入文件的地方。 从那里,应用程序将能够在运行时读取和解析。


1
投票

对于iOS,构建和(非App Store)发布过程在高级别上如下工作:

  1. 在Xcode中存档您的项目,这会产生.xcarchive工件。
  2. 导出存档标记并生成.ipa文件。
  3. 要么自己托管这个.ipa文件(带有一些额外的元数据文件),要么将其上传到像HockeyApp这样的服务进行分发。

有几种方法可以在Xcode项目中管理配置。 一种相当常见和直接的方法是使用info.plist文件来存储自定义键和值。 然后,应用程序可以在运行时查找并使用这些值。

在您描述的场景中,听起来您希望能够在步骤2之后但在步骤3之前注入特定的配置值。幸运的是,可以提取在步骤2中生成的.ipa文件,这将显示包含的Payload文件夹.app文件。 这个文件可以被检查,在里面你会看到应用程序的Info.plist 。 修改此文件将允许注入您要设置的任何配置值。

这将节省管理Xcode项目内部配置的需要,并为应用程序的每个配置创建单独的存档。 但是,这没有解决的是第3步。您仍然需要单独分发每个已配置的.ipa文件。

© www.soinside.com 2019 - 2024. All rights reserved.