Give the app a real icon, adaptive on Android

Desktop icons regenerated from the new artwork with `cargo tauri icon`.
It also emits Windows, macOS and iOS variants; those are left untracked,
since bundle.icon lists only the four PNGs and this project ships deb,
AppImage, Arch and APK.

The Android set is the IconKitchen output rather than Tauri's, because
Tauri's `icon` command produces only ic_launcher and a foreground layer.
The full set adds the background and monochrome layers, which is what
makes mipmap-anydpi-v26/ic_launcher.xml a real adaptive icon: the
launcher masks it to whatever shape the device uses instead of pasting a
circle into a square, and the monochrome layer means themed icons work on
Android 13+.

These live in src-tauri/android/src/main/res/, not gen/. gen/ is rewritten
by `tauri android init`, so an icon dropped there is one git has never
seen and the next init deletes -- the same trap the Kotlin sources are
kept out of. sync-android-sources.sh already loops over res/*/ and needed
no change to pick them up. Note that check-android-sources.sh only walks
src/main/java, so res/ has no equivalent guard; the icons are tracked here
by construction rather than by a check.

AndroidManifest already pointed at @mipmap/ic_launcher and has no
roundIcon, so nothing there had to change.

Verified in the built release APK: aapt2 reports application-icon at every
density resolving to the adaptive XML, with all three layers bound, and
versionCode=1100.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-21 18:27:29 +02:00
co-authored by Claude Opus 5
parent 33c92e38b7
commit a61a1c2c02
26 changed files with 6 additions and 0 deletions
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome"/>
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 682 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1006 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.5 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 361 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 194 KiB