在 iOS 中配置多个方案会导致风格不匹配

Posted

技术标签:

【中文标题】在 iOS 中配置多个方案会导致风格不匹配【英文标题】:Configuring multiple scheme in iOS causes mismatch in flavors 【发布时间】:2020-05-13 14:30:26 【问题描述】:

我有一个 Flutter 项目,我创建了两个单独的 firebase 项目(不是同一个 firebase 项目中的两个应用程序)。我正在为我的 ios 应用程序设置两种不同的方案。我有以下命令可以相应地使用不同的项目

1.flutter run --release --flavor prod 2.flutter run --release --flavor dev

对于开发风格,它需要使用在 firebase 中创建的开发项目,但它使用生产 firebase 项目,反之亦然。

该配置适用于 android,不适用于 iOS。

我正在按照以下 iOS 设置教程进行操作

https://www.tengio.com/blog/multiple-firebase-environments-with-flutter/ https://www.youtube.com/watch?v=gdqnxcV7_FY&feature=emb_logo

如下图所示,我是如何设置我的 Google 服务文件的。我已经检查了很多次,我并没有通过将 prod 放入 dev 来使这些文件不匹配,反之亦然。

以下是我的脚本

我还将 Google 服务文件添加到目标。 我尝试删除目标的复选标记以及 Google 服务文件,但仍然是同样的问题。

我注意到的一件事是,如果我在 dev google 服务文件之后将 prod google 服务文件添加到我的 iOS 项目中,它总是使用 prod 环境而不管其风格如何。如果我在 prod 之后添加 dev ,那么它会使用 firebase 的 dev 环境,而不管其风格如何。即使更改 xcode 中的命令行构建选项对我也不起作用。

【问题讨论】:

您好,您还在面对这个问题吗??你也能告诉我你是否使用多个目标吗?您可以发布目标面板的屏幕截图吗?? 我有 React Native 应用程序,它有 3 个 tragets 1 个用于调试,1 个 staging,1 个 release 我所做的只是为 GoogleService-Info.plist 设置正确的目标成员,它按预期工作。我根本不需要使用任何脚本,也只有一个 plist 在根目录中,其他 2 个在子文件夹中都可以顺利运行 @HarshalBhavsar 但这种方法对我不起作用 你有多个目标吗?? 能发一下目标面板的截图吗 【参考方案1】:

GoogleService-Info.plist 必须在项目的根目录中。 将所有 GoogleService-Info.plist 移动到项目的根目录,更改它们的名称。例如将方案添加到名称中,例如 GoogleService-Info-prod.plist

并将您的命令更改为

cp -r "$PATH_TO_GOOGLE_PLISTS/GoogleService-Info-prod.plist" "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app/GoogleService-Info.plist"

对所有方案都这样做

【讨论】:

感谢您的回答。在 Native ios 开发中,info plist 应该在根目录下,但在 Flutter 中 plist 应该在 Runner 的根目录下。我很确定这些不会解决问题 我试过了,但它不起作用。你是 Flutter 开发者吗? 我建议仅针对 iOS 版本执行此操作。我对 Flutter 知之甚少,但是当您想使用 Xcode 构建项目时,它应该位于项目的根目录中。 是的,这是一个 Flutter 问题。看看这个github.com/flutter/flutter/issues/18342

以上是关于在 iOS 中配置多个方案会导致风格不匹配的主要内容,如果未能解决你的问题,请参考以下文章

更简单的 python 等价于 R 风格的 grep,包括多个要匹配的东西

Ant 风格路径表达式

Ant 风格路径表达式

如何设置Qt Quick Controls2的风格

tcl列表操作lsearch

Scala 风格:一个文件中有多个类?