0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Flutter】アイコンの設定で詰まったところ(毎日Flutter生活13日目)

Posted at

こんにちは!tatata-keshiです:smiley:

11日目の記事でアプリケーションのアイコンを設定しましたが、Android端末で検証した際にアイコンがうまく設定できていませんでした。

今回の記事では、原因と解決法について紹介します。

1. そもそも何が起きていたか

11日目の記事で紹介したように、flutter_launcher_iconsパッケージを用いてアイコンの設定を行いました。

アイコン用画像にはこちらのラーメンの画像を設定しようとしました:ramen: 美味しそうですね

icon.jpg

こちらの画像をicon.jpgとしてassets/iconディレクトリに配置し、設定ファイルであるflutter_launcher_icons.yamlファイルを以下のように記述しました。

# flutter pub run flutter_launcher_icons
flutter_launcher_icons:
  image_path: "assets/icon/icon.jpg"

  android: "launcher_icon"
  # image_path_android: "assets/icon/icon.png"
  min_sdk_android: 21 # android min sdk min:16, default 21
  # adaptive_icon_background: "assets/icon/background.png"
  # adaptive_icon_foreground: "assets/icon/foreground.png"
  # adaptive_icon_foreground_inset: 16
  # adaptive_icon_monochrome: "assets/icon/monochrome.png"

  ios: true
  # image_path_ios: "assets/icon/icon.png"
  remove_alpha_ios: true
  # image_path_ios_dark_transparent: "assets/icon/icon_dark.png"
  # image_path_ios_tinted_grayscale: "assets/icon/icon_tinted.png"
  # desaturate_tinted_to_grayscale_ios: true
  # background_color_ios: "#ffffff"

  web:
    generate: true
    image_path: "path/to/image.png"
    background_color: "#hexcode"
    theme_color: "#hexcode"

  windows:
    generate: true
    image_path: "path/to/image.png"
    icon_size: 48 # min:48, max:256, default: 48

  macos:
    generate: true
    image_path: "path/to/image.png"

この状態でアプリを実行し、iPhoneの実機で検証した際は、アプリのアイコンに問題なく設定されていました。

スクリーンショット 2025-12-17 22.41.14.png

しかしAndroidでは問題がありました。
実行したアプリのアイコンを確認したところ...

image.png

このように、白い丸の中心にポツンと :ramen: が表示されてしまいました...これでは台無しです。

2. 何が原因だったか

アイコン画像が思ったように設定されなかった原因は、大きく分けて3つありました。

  • 画像がjpg形式だった
  • 指定しているandroid sdkのバージョンが古かった
  • アダプティブアイコンの設定をしていなかった

前者2つについては、文字通りの理由です。

アイコン画像はpng形式が推奨されているためjpg画像を設定しているのはそもそも望ましくない状況でした。

また、min_sdk_androidの値が21となっておりましたが、現行は26であり古いバージョンを指定している状態でした。

アダプティブアイコンの設定ができていなかった

3つ目の理由こそ、今回アイコン画像が設定できていなかった一番の原因でした。

Androidではデバイスや個別のカスタマイズによるテーマ設定に対応させるため、アダプティブアイコンを用いて各々のUIに適した形のアイコンを表示させています。

これに対応させるためには、flutter_launcher_icons.yamlでコメントアウトされていたアダプティブアイコンに関する設定を行う必要があったのです。

  # adaptive_icon_background: "assets/icon/background.png"
  # adaptive_icon_foreground: "assets/icon/foreground.png"
  # adaptive_icon_foreground_inset: 16

3. アダプティブアイコンを設定する

アダプティブアイコンはbackgroundforegroundの二層からなるアイコンです。

本来であればforegroundにはアプリのアイコンなどコアの部分を、backgroundにはさまざまなアイコン形状に適応させるための余白という役割が想定されていますが、今回はただラーメンの画像を設定したいだけなので

  • backgroundにラーメンの画像
  • foregroundには透明なpng画像

をそれぞれ設定します。

  adaptive_icon_background: "assets/icon/icon.png"
  adaptive_icon_foreground: "assets/icon/foreground_transparent_1024.png"
  adaptive_icon_foreground_inset: 0

最終的にyamlファイルは以下のようになります。

# flutter pub run flutter_launcher_icons
flutter_launcher_icons:
  image_path: "assets/icon/icon.png"

  android: "launcher_icon"
  # image_path_android: "assets/icon/icon.png"
  min_sdk_android: 26
  adaptive_icon_background: "assets/icon/icon.png"
  adaptive_icon_foreground: "assets/icon/foreground_transparent_1024.png"
  adaptive_icon_foreground_inset: 0
  # adaptive_icon_monochrome: "assets/icon/monochrome.png"

  ios: true
  # image_path_ios: "assets/icon/icon.png"
  remove_alpha_ios: true
  # image_path_ios_dark_transparent: "assets/icon/icon_dark.png"
  # image_path_ios_tinted_grayscale: "assets/icon/icon_tinted.png"
  # desaturate_tinted_to_grayscale_ios: true
  # background_color_ios: "#ffffff"

  web:
    generate: true
    image_path: "path/to/image.png"
    background_color: "#hexcode"
    theme_color: "#hexcode"

  windows:
    generate: true
    image_path: "path/to/image.png"
    icon_size: 48 # min:48, max:256, default: 48

  macos:
    generate: true
    image_path: "path/to/image.png"

yamlファイルを書き換えた後はアイコンを再生成する必要があるため以下のコマンドを実行します。

flutter clean
flutter pub get
flutter pub run flutter_launcher_icons

この状態でアプリを再度実行すれば、アイコンがAndroid版でも問題なく表示されるはずです。

image.png

まとめ

このように、Flutterでアプリアイコンを設定する際はAndroidのアダプティブアイコンを考慮して設定する必要があります。

このようにOSによって挙動や設定が異なる場合があるため、どちらの端末でも動作確認を行うことは必要不可欠ですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?