如何根据不同的Flavor更改Flutter应用程序名称?

17

我有一个Flutter应用程序的开发和生产版本。

问题是标签和启动器对于开发和生产应用程序都是相同的,因此无法看到差异。(实际上不能同时将它们安装在设备上)

有没有简单的方法根据不同版本更改Flutter应用程序的名称?

我知道可以通过修改AndroidManifest.xml和Xcode info.plist来更改应用程序标签和启动器。但这并不简单:必须创建额外的文件以供xml和plist文件引用。这样的修改与Flutter的目标背道而驰。

有人知道解决方案吗?

谢谢!


简单的答案是没有简单的方法来做到这一点,您的持续部署系统必须进行这些更改和其他更改,例如不同的项目/数据库/身份验证等网址,所有这些都取决于您的环境。 - Feu
https://flutter.io/docs/deployment/flavors - Shyju M
5个回答

45

在 Android 项目中,只需将以下内容添加到应用 gradle 文件

flavorDimensions "default"
productFlavors {
    dev {
        resValue "string", "app_name", "AppName_DEV"
    }
    demo {
        resValue "string", "app_name", "AppName_Demo"
    }

    prod {
        resValue "string", "app_name", "AppName"
    }
}

接着在你的AndroidManifest中使用以下代码:

android:label="@string/app_name"

它将生成未解决的app_name,完成!


1
这就是我所缺少的!谢谢 @Vahab - Martins
1
...那iOS呢? - Justin

8
对于Android,在每个风味下创建一个名为“src”的目录。在每个源文件夹中,创建一个名为“res”的文件夹,然后在里面创建一个名为“values”的文件夹。
然后,在每个“values”文件夹中创建名为“strings.xml”的文件。
将以下内容添加到此文件中:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">App 1</string>
</resources>

这将创建一个名为app_name的字符串,可用于Android清单文件。

要使用该字符串,请按照以下方式更改AndroidManifest.xml文件中应用标签中的android:label:

    <application
        android:name="io.flutter.app.FlutterApplication"
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher">


同时,在主资源值目录中添加一个默认的strings.xml。在其中设置该值为“Default Flavor Res”,以便提醒您该风格没有字符串资源文件。 参考: http://cogitas.net/creating-flavors-of-a-flutter-app/

3

0

在pubspec.yaml中添加 flutter_flavor: dimensions: android: "flutter-flavor" ios: "flutter-flavor"

flavors: apple: android: name: "苹果应用" applicationId: "com.example.apple" googleAdsId: "ca-app-pub-1234567890123456~1234567890" ios: name: "苹果应用" bundleId: "com.example.apple" googleAdsId: "ca-app-pub-1234567890123456~1234567890"

bannana:
  app:
    name: "Bannana App"
    id: "com.example.bannana"
  android:
    googleAdsId: "ca-app-pub-1234567890123456~1234567890"
  ios:
    googleAdsId: "ca-app-pub-1234567890123456~1234567890"

#] 生成不同的风味

flutter pub run flutter_flavor:main


0

你确定你已经保持了项目结构的正确性,例如在安卓中将口味文件夹放在 src 包之外可能会导致此问题,请参见我为安卓准备的口味包结构如下。

flavor depiction


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接