从The Twelve-Factor App: V. Build, release, run获取灵感,我正在努力更新我们的CI / CD管道,并考虑到使用react-native-web构建应用的三个不同步骤。
具体来说,我想:
这对于网络来说是微不足道的,这就是 The Twelve-Factor App 的想法。我的问题是我如何阅读移动平台上的配置文件?如何将其与react-native-web构建工件结合使用?我的工件是否需要包含所有源代码和依赖项,以便我可以在发布时提取配置然后构建?
理想情况下,每个工件都包含为每个平台编译的代码,这些代码以某种方式知道如何引入配置文件并对其执行某些操作。接下来最好的是拥有每个平台的源代码,我可以在发布时使用配置文件进行编译。第三好的方法是在发布时为每个发行版提供足够的信息,以便它可以在运行时请求配置。
完全披露,我对构建和部署移动应用程序一无所知,所以如果有明显的解决方案,我会道歉!
答案 0 :(得分:2)
与Android相似。一旦创建了构建二进制文件,它就是不可变的。 所以不幸的是,否定了选项#1。一旦我们构建二进制文件,我们就无法对二进制文件做任何其他事情。
我认为反应本地选项二是最好的方法。 基本上,一旦解决了您的配置需求,您就需要在发布时构建应用程序。这避免了在选项#3中在运行时加载内容的任何开销,并且仍然与Twelve Factor很好地匹配。您仍然拥有与您的发布类型匹配相同配置的移动二进制文件。
要实际读取这些值,您可以将配置文件放到项目的根目录中,我们可以帮助您完成设置。 如果您愿意,我很乐意讨论这些细节。
更新:
我们可以做任何iOS(几乎同样)
当前构建工具将所有代码编译为字节码classes.dex
并将所有重新编译压缩为resrouces.arc
,但res/raw
保持不变。
这为我们提供了一个注入文件的地方。
从那里,应用程序将能够在运行时读取和解析。
答案 1 :(得分:1)
对于iOS,构建和(非App Store)发布过程在高级别上如此工作:
.xcarchive
工件。.ipa
文件。.ipa
文件(使用其他一些元数据文件)或将其上传到HockeyApp等服务进行分发。有几种方法可以在Xcode项目中管理配置。一种相当常见和直接的方法是使用info.plist
文件来存储自定义键和值。然后,应用程序可以在运行时查找并使用这些值。
在您描述的场景中,听起来您希望能够在步骤2之后但在步骤3之前注入特定的配置值。幸运的是,可以提取在步骤2中生成的.ipa
文件,这将揭示包含Payload
文件的.app
文件夹。可以检查此文件,在内部您将看到应用程序的Info.plist
。修改此文件将允许注入您想要设置的任何配置值。
这将节省管理Xcode项目内部配置的需要,并为应用程序的每个配置创建单独的存档。但是没有解决的是第3步。您仍然需要单独分发每个已配置的.ipa
文件。