Everything written this session that has not been through the device: rounds 43 to 48 (each patch adversarially verified, 43's transient-notice expectation fixed), a partial round 49, the pipeline scripts, the Android Auto design and the icon comparison mock. Also the two harness changes that were never A/B'd — adaptive waits, which may only shorten a declared wait and never lengthen it, and a ship that runs the mock walk and the deploy at the same time. The A/B and its 255-step baseline are in handoff/tools; main stays at what the phone has actually walked.
33 lines
2.2 KiB
Plaintext
33 lines
2.2 KiB
Plaintext
android: the falcon on the launcher — a real adaptive icon, with the monochrome layer
|
||
|
||
The phone has been wearing tauri's logo. `tauri android init` writes the
|
||
generated project's `res/` from its own template and never reads
|
||
`src-tauri/icons/android/`, which has carried the falcon since 50afa6a, and the
|
||
detour build runs cargo and Gradle directly — so nothing ever copied it across:
|
||
the two dominant colours in the packaged `mipmap-xxxhdpi/ic_launcher.png` are
|
||
`#24c8db` and `#ffc131`, tauri's own brand cyan and amber. `src-tauri/android/res/`
|
||
is the app module's res now, tracked, and `build.sh` and `dev.sh` copy the whole
|
||
tree into `gen/android` before Gradle, because that project is regenerated and
|
||
gitignored and an asset that only lives there is an asset that disappears.
|
||
|
||
It is a real adaptive icon: the kit's foreground and its **monochrome** layer at
|
||
five densities, the legacy mipmaps under it, and the background as one
|
||
`#FF05080B` colour resource rather than five identical flat PNGs, so the gradient
|
||
being mocked separately replaces one file. The kit's own XML could not ship — it
|
||
points every layer at `@drawable/` while shipping them as PNGs under `mipmap-*`,
|
||
and in the generated project two of those three references resolve to Android
|
||
Studio's template robot rather than failing — so the overlay's XML says
|
||
`@mipmap/` and `@color/`, and its colour file takes the same name tauri's does,
|
||
because two files declaring one colour is a hard aapt2 error.
|
||
|
||
Losing the copy would be silent — the APK still builds, still installs, and wears
|
||
the old logo with nothing in the log — so `verify-icon.sh` opens every APK both
|
||
scripts make and reads the resources back out: the two `mipmap-anydpi-v26` XMLs
|
||
present, and four PNG names at five densities byte for byte from the overlay. A
|
||
release APK keeps neither the bytes nor the names — AGP re-encodes every PNG and
|
||
shortens every resource path — so that path asks `aapt2 dump resources` what each
|
||
name points at and compares pixel dimensions instead; 72×72 at hdpi still tells
|
||
the kit's icon from tauri's 49×49. No walk step: a launcher icon is not reachable
|
||
from inside the app, and the masking and the themed layer want a minute with the
|
||
phone's home screen.
|