如何更改 Flutter 上的应用程序启动器图标?

Posted

技术标签:

【中文标题】如何更改 Flutter 上的应用程序启动器图标?【英文标题】:How to change the application launcher icon on Flutter? 【发布时间】:2019-04-07 22:46:03 【问题描述】:

当我使用flutter create 命令创建应用程序时,flutter 徽标被用作两个平台的应用程序图标。

如果我想更改应用程序图标,我应该去两个平台目录并在那里替换图像吗?平台目录是指 iosmyapp/ios/Runner/Assets.xcassets/AppIcon.appiconsetandroidmyapp/android/app/src/main/res

或者是否可以将图像定义为Flutter Asset 并以某种方式生成图标?

【问题讨论】:

你可以用两种方式更新appicon,我提到过两种方式检查here 【参考方案1】:

Flutter Launcher Icons 旨在帮助快速生成适用于 Android 和 iOS 的启动器图标:https://pub.dartlang.org/packages/flutter_launcher_icons

将包添加到您的 pubspec.yaml 文件(在您的 Flutter 项目中)以使用它 在 pubspec.yaml 文件中指定您希望用于应用的图标的路径,然后选择是否要将图标用于 iOS 应用、Android 应用或两者。 运行包 瞧!默认启动器图标现已替换为您的自定义图标

我希望在 GitHub README 中添加一个视频来演示它

可以在here找到演示如何运行该工具的视频。

如果有人想提出改进建议/报告错误,请add it as an issue on the GitHub project。

更新:自 2018 年 1 月 24 日星期三起,您应该能够在不覆盖 Flutter 项目中旧的现有启动器图标的情况下创建新图标。

更新 2:从 v0.4.0(2018 年 6 月 8 日)开始,您可以为您的 Android 图标指定一个图像,为您的 iOS 图标指定一个单独的图像。

更新 3:从 v0.5.2(2018 年 6 月 20 日)开始,您现在可以为 Flutter 项目的 Android 应用添加自适应启动器图标

【讨论】:

对图片有要求吗? 您有推荐的image_path 图像尺寸吗? 我只找到了一种尺寸的参考,710x599。选择它的原因是什么?我本来希望512x5121000x1000 或其他任何东西。 @Suragch 刚刚在 Google 上快速搜索了一个图标,所以我可以快速测试它。我添加了另外两个图标尺寸,以便人们可以试用该软件包(1024x1024 和 128x128),您可以在这里找到这些:github.com/fluttercommunity/flutter_launcher_icons/tree/master/… 我可以建议包 read.me 应该提供有关图像大小的建议。【参考方案2】:

像原生开发者一样设置启动器图标

我在使用和理解 flutter_launcher_icons 包时遇到了一些问题。如果您在本地创建适用于 Android 或 iOS 的应用程序,那么这个答案就是您将如何做到的。完成几次后,它非常快速和简单。

安卓

Android 启动器图标同时具有前景层和背景层。

(图片改编自Android documentation)

为 Android 创建启动器图标的最简单方法是使用 Android Studio 中提供的 Asset Studio。你甚至不必离开你的 Flutter 项目。 (VS Code 的用户,你可以考虑使用 Android Studio 只是为了这一步。真的很方便,熟悉另一个 IDE 也没有什么坏处。)

右键单击项目大纲中的android 文件夹。转到新建 > 图片资源。 (如果您没有看到 Image Asset 选项,请尝试右键单击 android/app 文件夹。另请参阅下面的 cmets 以获得更多建议。)现在您可以选择一个图像来创建启动器图标.

注意:我通常使用1024x1024 像素图像,但您当然应该使用 使用比512x512 更小的东西。如果您使用 Gimp 或 Inkscape,您 应该有两层,一层用于前景,一层用于 背景。前景图像应具有透明区域 要显示的背景层。

(来自here 的狮子剪贴画)

这将替换当前的启动器图标。您可以在mipmap 文件夹中找到生成的图标:

如果您希望手动创建启动器图标,请参阅 this answer 获取帮助。

最后,确保 AndroidManifest 中的启动器图标名称与您在上面调用的名称相同(默认为ic_launcher):

application android:icon="@mipmap/ic_launcher"

在模拟器中运行应用,确认启动器图标创建成功。

iOS

我过去常常手动单独调整 iOS 图标的大小,但如果您有 Mac,Mac App Store 中有一个名为 Icon Set Creator 的免费应用程序。你给它一个图像(至少1024x1024 像素),它会吐出你需要的所有尺寸(加上Contents.json 文件)。感谢this answer 的建议。

iOS 图标不应该有任何透明度。查看更多指南here。

创建图标集后,启动 Xcode(假设您有 Mac)并使用它打开 Flutter 项目中的 ios 文件夹。然后转到 Runner > Assets.xcassets 并删除 AppIcon 项。

然后右键单击并选择导入...。选择您刚刚创建的图标集。

就是这样。通过在模拟器中运行应用程序来确认图标是创建的。

如果您没有 Mac...

您仍然可以手动创建所有图像。在您的 Flutter 项目中转到 ios/Runner/Assets.xcassets/AppIcon.appiconset

您需要的图像大小是文件名中的乘积大小。例如,Icon-App-29x29@3x.png 将是29 乘以3,即87 像素正方形。您要么需要保持相同的图标名称,要么编辑 JSON 文件。

【讨论】:

@MarkO'Sullivan,谢谢。我的猜测是包装很好。只是文档对我来说很难理解。例如,初始图像使用什么尺寸,为 Android 创建的背景层等等。有一个详细的教程来指导初学者完成整个过程会非常有帮助。 这有帮助。在 Android Studio 中,没有添加 Image Asset 的选项。我从 github/flutter 问题中学到的解决方法是将 /android 文件夹(在 Flutter 项目中)作为 Android Studio 中的标准单独“Android”项目打开。当您右键单击 /res 文件夹时,该选项将出现。 @MwamiTovi 是对的,但是你需要等待 gradle 同步才能右键单击甚至手动同步,否则不会显示“new -> image assets”。 很高兴看到带有相关屏幕截图等的分步回答。 对我来说,当我点击新建 > 图像资产时,什么也没有发生。对于遇到此问题的任何人,只需转到 File > Open,导航到 Flutter 项目的“android”文件夹并打开它。等待 Android Studio 同步(我花了大约 2 分钟)。加载后,打开“app”文件夹,右键单击“res”文件夹,然后新建>图像资源。这对我有用。 (来源:github.com/flutter/flutter-intellij/issues/…)【参考方案3】:

遵循简单的步骤:

1.flutter_launcher_icons插件添加到pubspec.yaml

例如

dev_dependencies: 
  flutter_test:
    sdk: flutter

  flutter_launcher_icons: "^0.9.0"

flutter_icons:
  image_path: "icon/icon.png" 
  android: true
  ios: true
  # optionally, as transparency is not allowed on app store
  # remove_alpha_ios: true

2.为指定路径准备一个应用图标。 e.g. icon/icon.png

3.在终端执行命令创建应用图标:

$ flutter pub get

$ flutter pub run flutter_launcher_icons:main

要检查所有可用选项并为 android 和 iOS 设置不同的图标,请参考this

更新:

flutter_launcher_icons 0.8.0 版本(2020 年 9 月 12 日)添加了风味支持

Flavors 通常用于为不同的环境构建您的应用,例如 devprod

社区编写了一些您可能会觉得有用的文章和软件包。这些articles 地址适用于 iOS 和 Android。

【讨论】:

这对我有用;只有一次我会运行最后一行flutter pub pub run flutter_launcher_icons:main。感谢您的提示! 我收到错误 android.dart:164:25: 错误:位置参数太多:允许 1 个,但找到了 4 个。 开启暗模式可以切换图标吗? @ir2pid 解决错误需要将版本更新为flutter_launcher_icons: 0.7.5 这对我帮助很大。【参考方案4】:

您必须将 Flutter 图标文件替换为您自己的图像。本网站将帮助您将 png 转换为各种大小的启动器图标:

https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html

【讨论】:

您的链接只会生成正确大小的 Android 图标【参考方案5】:

我已按以下步骤更改:

1) 请在您的 pubspec.yaml 页面上添加此依赖项

 dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_launcher_icons: ^0.7.4

2) 您必须在您的项目上上传一个图像/图标,您希望将其视为启动器图标。 (我在我的项目中创建了一个文件夹名称:图像,然后将 logo.png 上传到图像文件夹中)。现在您必须添加以下代码并将您的图像路径粘贴到 image_path: 在 pubspec.yaml 页面中。

flutter_icons:
  image_path: "images/logo.png"
  android: true
  ios: true

3) 转到终端并执行以下命令:

flutter pub get

4) 执行命令后输入以下命令:

flutter pub run flutter_launcher_icons:main

5) 完成

N.B: (当然从

添加更新的依赖项

https://pub.dev/packages/flutter_launcher_icons#-installing-tab-

)

【讨论】:

【参考方案6】:

我建议您使用以下链接的网站

App Icon Creator

第 1 步:上传图片,

第2步:进行必要的更改并点击下载(不要更改文件名)

步骤 3:在相应文件夹中提取下载的 Zip 文件

android/app/src/main/res

【讨论】:

这个建议对IOS没有帮助 这个解决方案对我有用(仅针对 Android) 最佳安卓解决方案 也适用于 ios,使用 xcode 添加 xassets【参考方案7】:

最佳推荐方式在 Flutter 中设置 App Icon。

我找到了一个名为 flutter_launcher_icons 的插件来设置 Flutter 中的应用图标。我们可以使用这个插件来设置flutter中的应用图标。

    在项目根目录的 pubspec.yaml 文件中添加这个插件。请检查以下代码,
dependencies:    
 flutter:    
  sdk: flutter    
 cupertino_icons: ^0.1.2    
 flutter_launcher_icons: ^0.7.2+1**    

保存文件并在终端上运行flutter pub get。

    在文件夹 assets 中项目的根目录中创建文件夹 assets 也创建一个文件夹图标并将您的应用程序图标放置在此文件夹中。我会向用户推荐 1024x1024 的应用程序图标大小。我已将应用程序图标放置在图标文件夹中,现在我将应用程序图标路径设置为 assets/icon/icon.png

    现在,在 pubspec.yaml 中添加以下代码,

flutter_icons:    
 android: "launcher_icon"    
 ios: true    
 image_path: "assets/icon/icon.png"
    保存文件并在终端上运行 flutter pub get。运行命令后运行第二个命令如下
flutter pub run flutter_launcher_icons:main -f pubspec.yaml 

然后运行应用程序

【讨论】:

虽然你回答了同样的旧正确答案,但至少你强调了其中的要点。【参考方案8】:

Flutter 在其 Android 和 Ios 文件夹中的每个应用都有自己的默认图标,因此我想展示几个步骤来更改应用图标。

    前往https://appicon.co/ 并使用 图标图像(zip 文件包含两个主要文件夹 androidAssets.xcassets) 对于 android:进入 Flutter 应用的 android\app\src\main\res 并粘贴 android 文件夹内容。 对于 IOS:进入 Flutter 应用中的 ios\Runner 并粘贴 Assets.xcassets 内容 重新启动您的模拟器或重建您的应用程序?

【讨论】:

为什么使用原生插件 ;) 不,我不是在谈论插件,我正在分享链接以生成图标,稍后我们将在本机代码中使用它。【参考方案9】:

最好的方法是分别更改 iOS 和 Android 的启动器图标。

分别更改iOS和Android模块中的图标。 该插件从相同的图标生成不同大小的图标,这些图标被扭曲了。

点击此链接: https://flutter.dev/docs/deployment/android

【讨论】:

【参考方案10】: 你可以使用this link的flutter_launcher_icons 0.9.0 如果需要flutter中如何更改图标启动器的democheck this out

希望我的回答能帮到你兄弟。如果您有任何问题,请在下方评论。 祝兄弟好运。

【讨论】:

【参考方案11】:

标记为正确答案的还不够,你还需要一步,在终端输入这个命令来创建图标:

flutter pub 运行 flutter_launcher_icons:main

【讨论】:

您可以编辑正确答案或添加评论。事实上,这个答案可能很快就会得到 -1 很高兴知道,谢谢。我在这里回答的那一刻,我还不能添加 cmets。【参考方案12】:

当一个新的 Flutter 应用被创建时,它有一个默认的启动器图标。要自定义此图标,您可能需要查看 flutter_launcher_icons 包。

或者,您可以使用以下步骤手动完成。此步骤包括将这些占位符图标替换为您应用的图标:

安卓

    查看Material Design product icons 图标设计指南。

    <app dir>/android/app/src/main/res/ 目录中,将您的图标文件放在使用配置限定符命名的文件夹中。默认的mipmap- 文件夹展示了正确的命名约定。

    AndroidManifest.xml 中,更新应用程序标签的android:icon 属性以引用上一步中的图标(例如<application android:icon="@mipmap/ic_launcher" ..。)。

    要验证图标是否已被替换,请运行您的应用并在启动器中检查应用图标。

iOS

    查看iOS App Icon 指南。 在 Xcode 项目导航器中,选择 Runner 文件夹中的 Assets.xcassets。使用您自己的应用图标更新占位符图标。 通过使用flutter run 运行您的应用程序来验证图标是否已被替换。

【讨论】:

【参考方案13】:

按照以下步骤操作:-

1.pubspec.yaml文件中添加flutter_luncher_icons的依赖。你可以从here找到这个插件。

2.asstes文件夹pubspec.yaml文件中添加您需要的图片,如下所示。

pubspec.yaml

name: NewsApi.org
description: A new Flutter application.

# The following line prevents the package from being accidentally published to
# pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 1.0.0+1

environment:
  sdk: ">=2.7.0 <3.0.0"

dependencies:
  flutter:
      sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.1
  fluttertoast: ^7.1.6
  toast: ^0.1.5
  flutter_launcher_icons: ^0.8.0




dev_dependencies:
  flutter_test:
    sdk: flutter

flutter_icons:
  image_path: "assets/icon/newsicon.png"
  android: true
  ios: false

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true
  assets:
    - assets/images/dropbox.png



  fonts:
    - family: LangerReguler
      fonts:
        - asset: assets/langer_reguler.ttf




  # fonts:
  #   - family: Schyler
  #     fonts:
  #       - asset: fonts/Schyler-Regular.ttf
  #       - asset: fonts/Schyler-Italic.ttf
  #         style: italic
  #   - family: Trajan Pro
  #     fonts:
  #       - asset: fonts/TrajanPro.ttf
  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages

3.然后在终端运行命令flutter pub get然后flutter_luncher_icon。这是我运行成功后得到的结果命令 。午餐图标也生成成功了。

我的终端

[E:\AndroidStudioProjects\FlutterProject\NewsFlutter\news_flutter>flutter pub get
Running "flutter pub get" in news_flutter...                       881ms

E:\AndroidStudioProjects\FlutterProject\NewsFlutter\news_flutter>flutter pub run flutter_launcher_icons:main
  ════════════════════════════════════════════
     FLUTTER LAUNCHER ICONS (v0.8.0)
  ════════════════════════════════════════════

• Creating default icons Android
• Overwriting the default Android launcher icon with a new icon

✓ Successfully generated launcher icons

【讨论】:

【参考方案14】:

我使用一些方法来更改 Flutter 应用程序的图标,但只有手动方法有点简单和好。因为你会知道它是如何工作的。

所以要更改flutter ios图标。首先获取您的图标 1024×1024 像素的副本,并使用 appicon.co 生成器为 android 和 ios 生成一组图标。 当您获得 zip 文件时,它可以联系两个文件夹 ios 和 android 打开 ios 文件夹并复制文件夹并替换 ios/runner 目录中的一个。

对于 android,复制 android 文件夹中存在的所有文件夹,并在此处替换 android/app/src/main/res/drawable 中存在的文件夹。

在 ios 和 android 上替换文件夹后,停止应用并重新运行,您的图标将被更改。

【讨论】:

【参考方案15】:

您可以通过在 pubspec.yaml 中使用 flutter_launcher_icons 来实现此目的

另一种方法是使用一种用于 android 和另一种用于 iOS

【讨论】:

以上是关于如何更改 Flutter 上的应用程序启动器图标?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改颤振网络应用程序上的图标[重复]

Flutter Maps:如何更改标记点击上的标记图标

Flutter 发布版启动器图标

如何在启动动画期间更改 iOS 应用程序图标背景颜色?

切换应用 iOS 无法更改默认启动图标

Flutter - 一段时间后自动刷新地图上的标记图标