在iOS上使用Flutter的Flavors:${PRODUCT_NAME}未按预期工作

7ajki6be  于 12个月前  发布在  iOS
关注(0)|答案(1)|浏览(142)

所以我尝试在我的Flutter项目的iOS应用程序中设置 flavors。我的目标是能够在我的iPhone上同时安装多个 flavors 应用程序。
为了实现这一点,我偶然发现了这个官方指南:https://docs.flutter.dev/deployment/flavors
但我也遇到过这样的问题,应用程序最终被命名为“跑步者”,我甚至不能在iPhone上安装多个应用程序。
"让我们从头开始"
我有三种口味(方案):

  • dev
  • mr,以及
  • prod的值。该值为


的数据



每一个都是为DebugProfileRelease定义的,我已经删除了原始的。

下一步,本指南将说明如何为每个方案定义唯一的捆绑包标识符,在我的示例中,这些标识符如下所示:



然后我们继续讨论Product Name,我做得和指南完全一样:

最后一步是编辑Info.plist中的一些字段。

这就是该指南非常混乱的地方,因为它说要将${PRODUCT_NAME}设置为Bundle Display Name,但是在下面的截图中,它清楚地显示了CF Bundle Display Name。我试图在Xcode中找到后者,但在浏览可用键时没有这样的选择(“信息属性列表”旁边的“+”按钮)。
然后,我打开Info.plist在Android工作室编写以下键:

<key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleName</key>
<string>My Flutter App</string>

字符串
回到Xcode,现在看起来是这样的:

除非我错了,以我的理解:

  • CFBundleDisplayName对应于指南中的书面文本的Bundle Display Name
  • 而指南屏幕截图中的Bundle Display Name对应于我的Info.plist中的Bundle Name(或原始版本中的CFBundleName)。

然后,我尝试使用dev风格构建应用程序:

但在我运行iOS 12的iPhone上,这款应用的标题是“Runner”。然后,如果我使用main.dart (mr) Build Config(使用mr风格),新的Build将取代现有的Build,它仍然被命名为“Runner”。
所以我相信:

  • 命名无效
  • 调味剂系统不能很好地起作用。

还有一点让我更困惑的是,为什么指南要求写产品名称,如“Debug Free”(或在我的例子中为Debug Dev)?这应该是应用程序的名称吗?我目前实际上并不在寻找不同的名称,但我希望能够在我的iPhone上安装这三种风格的应用程序。
我做错了什么?

  • 注意:口味系统在Android上运行良好 *
2jcobegt

2jcobegt1#

我也有过这样的经历。教程只说在项目级别进行更改。但是,当我在目标级别检查时,产品名称设置为“Runner”。因此,所有产品名称都将命名为Runner。
因此,我将目标产品名称更改为$(PRODUCT_NAME)。然后,它将正确使用项目级别的PRODUCT_NAME值。
x1c 0d1x的数据

相关问题