Flutter:不同的应用程序图标和应用程序名称取决于 release/production 构建或 debug/development 构建?

Flutter: different app icon and app name depending on release/production build or debug/development build?

是否有任何方法可以根据所选的构建模式(开发或生产)更改应用程序的名称and/or应用程序的图标?

release mode -> Logo A & <app_name>
debug mode -> Logo B & <app_name>-dev

我一直在寻找但找不到任何东西 — 或者没有在正确的地方搜索。有人可以帮忙吗?

如果您尝试构建 Android 应用程序,则应遵循几个步骤

请注意,如果您想将这两个应用程序保留在一台设备中,您应该更改应用程序的包名称,这可以通过在应用程序级别内添加后缀轻松完成 build.gradle projectName/android/app/build.gradle调试模式的构建类型的后缀,如下所示:

buildTypes {
        release {
            signingConfig signingConfigs.release
        }

        debug {
            applicationIdSuffix ".debug"
        }
    }

应用名称:

  1. 在你的项目文件夹中有一个名为android/app/src的文件夹,在里面,你会发现另外三个文件夹

  2. 移动到这个debug目录中并添加一个名为res的文件夹,在那里你将能够存储将在开发(调试)模式中使用的资源并在其中创建一个名为 values

    的目录
  3. 创建一个名为strings.xml的文件,在此文件夹中,您可以存储动态应用程序的名称

  4. 在这里您将定义您的应用程序的名称,将以下代码复制到其中:

<?xml version="1.0" encoding="utf-8"?> 
<resources>
    <string name="app_name">app_name-DEV</string>

</resources>
  1. 此外,您还必须将 string.xml 文件添加到主文件夹(在调试文件夹下)的相同路径中 main/res/values 中,您应该应用不同的名称对于键 app_name 这样的:
<?xml version="1.0" encoding="utf-8"?> 
<resources>
    <string name="app_name">app_name-DEV</string>

</resources>
  1. 在主文件夹中,有一个名为:AndroidManifest.xml的文件,在里面删除行android:name="${applicationName}"因为它会引起一些冲突并更改行:android:label:"some_label" -> android:label="@string/app_name"
  2. 从此文件中,复制整个标签,并将其粘贴到调试文件夹 AndroidManifest.xml 中,并在行 android:label="@string/app_name" 之前添加此行 tools:replace="android:label",这将启用调试清单覆盖应用程序的名称。

-> projectFolder/android/app/src/debug/AndroidManifest.xml

对于应用程序的图标:

  1. projectFolder/android/app/src/debug/res 中你应该创建 mipmap 文件夹(你可以从 projectFolder/android/app/src/main/res 文件夹中复制它们然后修改图标)
  2. 在里面,你应该添加一个相同的开发模式的图标,为此,你可以按照下面的包flutter_launcer_icon(请确保最后你会运行 这个命令: flutter pub run flutter_launcher_icons:main ,但你仍然可以手动添加它们)

就是这样。 希望我足够彻底:) 如果您有任何问题,请告诉我

最终,我使用了一个名为 flavors 的 flutter 功能,它适用于 Android 和 iOS。

这是我遵循的指南:https://youtu.be/Vhm1Cv2uPko

对于使用 VS Code 的开发人员,我创建了一个 VS Code 配置文件,以便更轻松地启动不同风格的应用程序:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Development",
            "request": "launch",
            "type": "dart",
            "program": "lib/main_dev.dart",
            "args" : ["--flavor", "development", "--target", "lib/main_dev.dart"],
            // ? Keep flutterMode
            "flutterMode": "debug",
        },
        {
            "name": "Launch Production",
            "request": "launch",
            "type": "dart",
            "program": "lib/main_prod.dart",
            "args": ["--flavor", "production", "--target", "lib/main_prod.dart"],
            // ? Keep flutterMode
            "flutterMode": "release",
        },
        {
            "name": "Run All Tests",
            "type": "dart",
            "request": "launch",
            "program": "./test/",
        },
    ]
}

此主题在链接的视频中处理。