And in **both**, the ground. This one is not a name or a byte but a resolution: `` is a reference, so the check asks `aapt2 dump resources` what `mipmap/ic_launcher` is at `anydpi`, reads that file's `` id, maps the id back through the table, and requires `drawable/ic_launcher_ground`; then it follows the two `fillColor` references the `aapt:attr` blocks became and requires concept 04's six stops in them. That is the check that catches a **stale APK** as well as a lost overlay — `build.sh` pipes Gradle through `| tail -20 || true` and then runs `ls -la "$APK"`, so a Gradle run that failed leaves the previous build's file exactly where the next step looks for it, with every PNG in it still the falcon's. Without aapt2 on the machine this half says `NOT CHECKED` and the rest of the script still runs. Both `build.sh` and `dev.sh` call it, so no APK this repo makes can quietly go back to the old artwork. It cost about a second and a half on the 107 MB debug APK before the ground was added; the ground is one `dump resources` and three `dump xmltree` calls on top of that, measured at 0.3 s against that same real APK — aapt2 reads `resources.arsc` and the entries it names, never the whole file, so the cost does not grow with the APK. The release branch reuses the same table rather than asking aapt2 for it twice.