2020年3月30日月曜日

Flutter flutter_launcher_iconsでAndroidのアイコンが変わらない

【環境】
Android Studio 3.6.1
Flutter 1.15.17

使用ライブラリ
flutter_launcher_icons: ^0.7.4
media_notification:
  git:
    url: git://github.com/coderkkc/media_notification.git

【症状】
flutter_launcher_icons でいくらアイコン生成しても
実際動かすとアプリのアイコンが緑色のドロイド君の
まま変わらなかった。

【原因】
原因はなんと、media_notification だった。このライブラリの生成物として
ic_launcher_foreground.pngとic_launcher_background.pngが
含まれており、生成物のマージの順序的にmedia_notification側の
ドロイド君で上書きされていたようだ。

【対策】
出力ファイルのファイル名を変更した。
pubspec.yaml
flutter_icons:
  android: 'my_launcher' ←ココ
  ios: true
  image_path: 'lib/assets/icon.png'
  adaptive_icon_background: '#ffffff'
  adaptive_icon_foreground: 'lib/assets/icon.png'

ただしこれだと、Oreo(API Level 26)よりも前のアイコンしか
指定したアイコン名称になってくれない。
Oreo(API Level 26)以降の「アダプティブアイコン(Adaptive Icon)」は
flutter_launcher_iconsでは未対応のようなので、手動で書き換えた。
android/app/src/main/res/mipmap-anydpi-v26/sodoku_launcher.xml
<xml version="1.0" encoding="utf-8"?><adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
  <background android:drawable="@color/ic_launcher_background"/>
  <foreground android:drawable="@drawable/my_launcher_foreground"/> ←書き換え箇所
</adaptive-icon>

あとは以下のフォルダ中の
「ic_launcher_foreground」を
「my_launcher_foreground」に書き換えて完了。
drawable-hdpi
drawable-mdpi
drawable-xhdpi
drawable-xxhdpi
drawable-xxxhdpi
※ ic_launcher_background も使用している場合は同様に修正。


【(参考)調査方法】
プロジェクト配下をファイル名「ic_launcher_foreground.png」で検索。
media_notificationビルドフォルダ中に問題のドロイド君アイコンが見つかった。


また、「merger.xml」中に以下の記述あり。
config=":media_notification" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~">

成果物をマージする設定か?ignore_patternに .png とか入ってないから
ic_launcher_foreground.pngもマージ対象になったのだろう。

なお、試行としてはmedia_notificationビルドフォルダ中のアイコンを
目的のアイコンで書き換えても、ビルド時に書きかわるのでダメ。
「merger.xml」ファイルに
config=":media_notification" ignore_pattern="!.png:!.svn:...
のようにpngファイルを除外させようとしても、
こちらもビルド時に「merger.xml」ファイル自体が書きかわるのでダメだった。

この場合はたまたまmedia_notificationだったが、このライブラリに限らず、ライブラリ作成者がアイコンのことまで意識しないでリソースに入れたままライブラリ化してしまうと、同じことになりそうである。
同じ症状の方は参考にしてもらえればと思います。

0 件のコメント:

コメントを投稿