Androidは8以降アダプティブランチャーアイコンというものがあるのでそれに対応してみる。
Flutterプロジェクトでの作業なのでunityなどでアプリアイコンが必要な人は空のプロジェクトでも作成してから作業してみてください。
flutterではflutter_launcher_iconsという簡単にアイコンを設定できるものがありますが、細かい調整が面倒そうだったのでツールを使ってみます。
Flutterでアプリを作成中なので作成も今後記事に出来れば。
アダプティブアイコンとはこんなものです。
準備
android studioにあるImage Asset Studioというツールを使用します。
- 背景なし(透過)画像(1024*1024くらい、拡縮は後で可能)
- 背景画像(必要なければツールで色は指定できる)
Android StudioでImage Asset Studioを起動
Image Asset Studioが見つからない場合があるので確認してみてください。
Flutterプロジェクトの場合
プロジェクト名で右クリック>Flutter>Open Android…でFlutterアプリではなくAndroidアプリ作成用のAndroid Studioを開く。
Androidアプリ作成用ウィンドウ
resフォルダーで右クリック>New>Image Assetsを選択
それでも出てこない場合
※Flutterの場合初めに出てこなかった・・・Androidアプリ作成用として開いたプロジェクトのTerminalで
flutter clear
でクリアして再度gradlesを同期したら一覧に表示された。
Image Asset Studioでアダプティブアイコンを設定する
真剣にこのツールを調べたことはないですが、全面と背面のレイヤーを設定する。
前面画像を選択してサイズを調整
自分のアプリアイコンの画像を設定してサイズを調整。
背景画像設定
今回背景画像を用意はしませんでしたが、画像も設定できます。グラデーションなど行いたい場合などには画像を用意して設定しましょう。
設定完了(書き出し)
書き出す場所はそのままで設定完了です。
Flutterの場合
flutter_launcher_iconsを使用してアダプティブアイコンを簡単に設定したい場合は
pubspec.yamlに下記のように設定します。
※adaptive_icon_backgroundにも画像を設定できます。
flutter_icons:
android: true
ios: true
image_path: "assets/icons/hoge.png"
adaptive_icon_background: '#ffffff'
adaptive_icon_foreground: 'assets/icons/hoge_adaptive_foreground.png'
設定できたら
flutter pub run flutter_launcher_icons:main
を実行して確認すると反映されていました。
Flutterで作業していてハマったポイント
プロジェクトルートがおかしくなる
Androidアプリ作成用⇔Flutterと行き来しているとプロジェクトルートがおかしくなるのか、一度クリアしてから毎回更新する必要があった、AndroidStudioを閉じて開きなおしてもいいが再読み込みでも行けそう。
flutter clear
を行い再読み込み。
ファイル競合?
自分が作業をしていた時には
- flutter_launcher_iconsでアイコン設定
- 画像一つだけだと見栄えが悪かったのでflutter_launcher_icons機能でアダプティブアイコンを設定(背景はカラーを指定)
- あまりよくなかったのでImage Asset Studioから視覚的に設定
という作業で行っていました。
最終的にAndroidはImage Asset Studioから書き出したものを使用するのでpubspec.yamlは
flutter_icons:
android: false
ios: true
image_path: "assets/icons/hoge.png"
としましたがFlutterプロジェクトでうまくビルドできなくなってしまった。
* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
> [color/ic_launcher_background] D:\flutter\projects\prj_zenchan\android\app\src\main\res\values\colors.xml [color/ic_launcher_background] D:\flutter\projects\prj_zenchan\android\app\src\main\res\values\ic_launcher_background.xml: Error: Duplicate resources
みたいなエラーが出たのでcolors.xmlを削除するとうまくできた。
android/app/src/main/res/values/colors.xml
おそらく
flutter pub run flutter_launcher_icons:main
を実行したときに作られたものがImage Asset Studioで作成したのと競合を起こしたみたい。
おわりに
FlutterでもAndroidは素直にImage Asset Studioを使用してflutter_launcher_iconsはiOSだけにするのが良さそうという結論にしました。
unityなどで設定したい場合はresに書き出された画像をunityにアイコンを設定する場所に指定すればいいと思います。
コメント