Creative Ops und iOS-Release-Verantwortliche verlieren weiterhin Stunden, wenn AppIcon.appiconset-PNGs nicht zu Contents.json passen und Xcode oder App Store Connect erst spät meckern. Dieses HowTo 2026 beschreibt einen reproduzierbaren Remote-Mac-Ablauf: OpenClaw installieren, einen Batch-Validator fahren, der gemessene Pixel gegen JSON-Erwartungen rechnet, einen Markdown-Fix-Report schreiben und optional einen entprellten Ordner-Watch oder launchd-Scheibe einhängen — damit Design-Ablieferung und Asset-Handoff automatisierbar bleiben. Die Slot-Mathematik ergänzen Sie mit der iOS-App-Icon-Liefermatrix.
Inhalt
Warum der Katalog trotzdem driftet
- Skalierungsfehler: Ein Master wird auf 2× und 3× kopiert, ohne Pixel neu zu berechnen; Dateinamen passen zu
Contents.json, die Geometrie nicht. - Veraltetes JSON: Umbenennungen ohne Aktualisierung aller
images-Einträge erzeugen verwaiste Dateien und fehlende Referenzen. - Stille Resize-Schritte: Optimierer oder Padding ändern Kantenlängen, während Vorschauen noch „okay“ wirken.
Ein Gate vor Merge oder Upload verwandelt solche Probleme in eine Zeile im Report statt in einen nächtlichen Build-Abbruch.
Automatisierungsform wählen
| Modus | Sinnvoll wenn | Trade-off |
|---|---|---|
| Manueller CLI-Lauf | Einmal-Audit vor App-Store-Einreichung | Geringer Aufwand; unter Zeitdruck leicht vergessen |
| OpenClaw + entprellter Watch | Designer legen Exporte in eine gemeinsame Inbox auf dem Remote Mac | Idle-Fenster nötig, damit halb geschriebene PNGs nie validiert werden |
OpenClaw + launchd-Scheibe |
Regelmäßige Batches alle 15 Minuten oder nächtlich | Einfachere Kapazitätsplanung; kleine Verzögerung bis zum nächsten Tick |
Installation, Konfiguration, Lauf (fünf Schritte)
- OpenClaw und Helfer installieren: OpenClaw auf dem Worker gemäß Team-Bootstrap einrichten,
jqhinzufügen undsips -g pixelWidth -g pixelHeightan Beispiel-PNGs testen. - Katalog pinnen:
APPICON_DIR=/pfad/zu/AppIcon.appiconsetundREPORT_PATH=./logs/appicon_fix_report.mdsetzen.git rev-parse HEADoben in den Report schreiben. Contents.jsonlinten:plutil -lint Contents.jsonausführen. Syntax zuerst reparieren; defektes JSON erzeugt falsche Negative.- Erwartete Pixel berechnen: Pro
images[]mitfilenameFeldersize(z. B.60x60) undscale(2x) parsen. Kantenlänge = Basis-Points × ganzzahliger Faktor (2× → 2, 3× → 3). - Messen und diffen: Jede referenzierte PNG ausmessen. Bei Abweichung Markdown-Zeile anhängen. Exit-Code ungleich null, solange Mismatch besteht — damit CI oder OpenClaw quarantänisieren kann.
Grundlagen zur Installation über Plattformgrenzen: OpenClaw-Installationsleitfaden.
Watch-Hook und Bash-Batch-Vorlage
Watch: Sobald inbox/appicon/ ca. 45 s ruht, nach work/ kopieren, validieren, bei Erfolg mit report.md nach out/ promoten — sonst nach failed/.
Batch: Alle *.appiconset unter Assets.xcassets in White-Label-Repos in einer Schleife; nächtlich Markdown zusammenführen.
#!/usr/bin/env bash
set -euo pipefail
DIR="${1:?path to AppIcon.appiconset}"
REPORT="${2:-./appicon_validation_report.md}"
JSON="$DIR/Contents.json"
{
echo "# AppIcon validation"
echo "- host: $(hostname)"
echo "- path: $DIR"
echo ""
echo "| filename | expected | actual | status |"
echo "|---|---:|---:|---|"
} > "$REPORT"
while read -r name w h; do
[[ -z "${name:-}" ]] && continue
fp="$DIR/$name"
if [[ ! -f "$fp" ]]; then
echo "| $name | ${w}x${h} | missing | FIX: add file |" >> "$REPORT"
continue
fi
read -r aw ah < <(sips -g pixelWidth -g pixelHeight "$fp" \
| awk '/pixelWidth/ {w=$2} /pixelHeight/ {print w, $2}')
if [[ "$aw" -eq "$w" && "$ah" -eq "$h" ]]; then
echo "| $name | ${w}x${h} | ${aw}x${ah} | OK |" >> "$REPORT"
else
echo "| $name | ${w}x${h} | ${aw}x${ah} | FIX: re-export |" >> "$REPORT"
fi
done < <(jq -r '.images[] | select(.filename!=null)
| [.filename,
((.size|split("x")[0]|tonumber) * (.scale|sub("x";"")|tonumber)),
((.size|split("x")[1]|tonumber) * (.scale|sub("x";"")|tonumber))]
| @tsv' "$JSON")
echo "Wrote $REPORT"
Den jq-Filter bei Bedarf um idiom-spezifische Zeilen erweitern; erwartete Pixel immer aus JSON ableiten. Nach erfolgreicher Geometrie können Sie mit OpenClaw PNG-QA (Batch) Alpha, ICC und Byte-Limits nachziehen.
Zahlen und Richtlinien zum Zitieren
- Skalen: 1×, 2× und 3× entsprechen Multiplikatoren 1, 2 und 3 für die Kantenlänge aus
sizeinContents.json. - Debounce & Aufbewahrung: 30–60 s Idle auf überwachten Bäumen; ca. 30 Tage Markdown oder JSONL unter
logs/für diffbare Release-Historie. - Parallelität: Validierung ist I/O-leicht — mehrere
appiconset-Bäume sequentiell oder mit kleinemxargs -P-Fan-out auf M-Serie sind üblich, sofern die Platte mitmacht.
FAQ: typische Fehler
jq: error oder parse error bei Contents.json
Zuerst plutil -lint. Merge-Marker entfernen, UTF-8 ohne BOM sicherstellen. Gegen eine frische Xcode-Vorlage abgleichen.
sips kann die PNG nicht lesen
Datei leer, falsch als WebP getarnt oder noch schreibend — Idle-Fenster erzwingen, leere Dateien ablehnen, optional .done-Sidecar vom Export-Plugin.
Maße stimmen, Xcode beschwert sich dennoch
Idiom-Zeilen, Alpha am 1024-Marketing-Asset und Pflicht-Slots für das Deployment-Ziel prüfen. Geometrie-Check ist nötig, aber nicht hinreichend für App-Store-Richtlinien.
Führen Sie den Ablauf auf einem dedizierten Remote Mac aus, damit Laptops für kreative Arbeit frei bleiben und OpenClaw nächtliche Validierungen übernimmt. Weitere Automationsthemen in der Technik-Insights-Übersicht.
Mac-Knoten vergleichen und Icon-Validierungs-Worker deployen
Öffnen Sie Preise & Knoten und Miet- und Kaufoptionen auf MacPng ohne Login, danach die Hilfe für SSH oder VNC — dieselben Skripte auf dem gemieteten Host einfügen.