Mobile App Icons: SVG Best Practices für iOS und Android
App-Icons erstellen, die auf jedem Gerät perfekt aussehen. SVG Best Practices für iOS und Android, Größenanforderungen und Optimierungstipps.
Founder of VectoSolve
Self-taught developer, founder and sole developer of VectoSolve since 2024. He builds the conversion engine and the cutting, embroidery and 3D printing exports.
How this article was made: drafted with AI assistance, then edited and fact-checked before publication. About the author
Key Takeaways
- SVG-Icons skalieren perfekt über alle Bildschirmdichten — aber nur wenn du sie korrekt für jede Plattform vorbereitest
- iOS benötigt PDF- oder SVG-Assets in Xcode Asset Catalogs; Android verwendet Vector Drawables (XML-basierte SVG-Teilmenge)
- Immer Transformationen abflachen, Konturen vektorisieren und versteckte Ebenen entfernen vor dem Export
- Teste Icons bei 16px, 24px, 48px und 64px um Rendering-Probleme vor dem Release zu finden
- Halte SVG-Dateien unter 5KB pro Icon für optimale Mobile-Performance
- Verwende ein einziges Quell-SVG und automatisiere plattformspezifische Exporte
Jeder Mobile-Entwickler kennt diesen Moment: Du fügst ein wunderschön designtes Icon in deine App ein, baust sie, startest den Simulator — und siehst eine unscharfe, falsch ausgerichtete oder komplett unsichtbare Form. Das Icon sah in Figma makellos aus, im Browser perfekt. Aber auf einem echten Gerät ging etwas schief.
Die Lücke zwischen dem Designen eines SVG-Icons und dem Ausliefern in einer nativen Mobile App ist größer als die meisten Teams denken. iOS und Android verarbeiten Vektor-Assets über völlig unterschiedliche Pipelines.
Warum SVG-Icons für Mobile wichtig sind
Mobile Bildschirme gibt es in einer schwindelerregenden Vielfalt an Größen und Pixeldichten. Ein modernes Android-Gerät kann mit 1x, 1,5x, 2x, 3x oder sogar 4x Dichte laufen. iPhones kommen mit 2x und 3x.
SVG-Icons lösen das Problem, indem sie Formen mathematisch definieren. Eine Datei, unendliche Auflösung.
Die zentrale Herausforderung: Weder iOS noch Android rendern .svg-Dateien nativ in ihren Standard-UI-Frameworks. Beide Plattformen konvertieren SVGs in plattformspezifische Zwischenformate — PDF-Assets für iOS und VectorDrawable XML für Android.
Vorteile einer gut aufgebauten Pipeline:
- Kleinere App-Bundles — ein Vektor-Asset ersetzt 4-5 Raster-Exporte
- Pixel-perfektes Rendering bei jeder Bildschirmdichte
- Einfachere Wartung — eine Quelldatei aktualisieren, alle Targets neu generieren
- Bessere Barrierefreiheit — Vektorformen können semantische Metadaten tragen
- Zukunftssicher — kein Re-Export bei neuen Bildschirmdichten
SVGs für Mobile Export vorbereiten
Die Saubere-SVG-Checkliste
1. Alle Transformationen abflachen. CSS- und SVG-Transforms in Gruppenelementen werden manchmal von Mobile-Konvertern ignoriert.
2. Alle Konturen vektorisieren. Androids VectorDrawable-Format hat begrenzten Stroke-Support. Konvertiere Konturen zu gefüllten Pfaden.
3. Versteckte Ebenen und Metadaten entfernen.
4. Einheitlichen viewBox verwenden. Standardisiere auf 0 0 24 24 für UI-Icons.
5. Pfade vereinfachen. Weniger Punkte = kleinere Dateien, schnelleres Rendering.
Beispiel eines korrekt bereinigten Icon-SVG:
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
fill="currentColor"/>
</svg>
Warning: Vermeide eingebettete Rasterbilder in SVGs. Einige Design-Tools exportieren Icons mit eingebetteten PNGs für komplexe Effekte. Diese werden bei der Konvertierung fehlschlagen oder die Dateigröße aufblähen.
iOS: Asset Catalogs und PDF-Vektoren
Apples empfohlener Ansatz für Vektor-Icons ist die Verwendung von PDF-Assets in Xcode Asset Catalogs. Seit Xcode 12 unterstützt Apple auch SVG-Assets direkt, aber PDF bleibt der bewährtere Weg.
Vektor-Assets in Xcode einrichten
- Öffne deinen Asset Catalog (
.xcassets) - Erstelle ein neues Image Set
- Im Attributinspektor setze Scales auf "Single Scale"
- Setze Resizing auf "Preserve Vector Data"
- Ziehe deine PDF- oder SVG-Datei hinein
<!-- Contents.json für ein Vektor-Asset -->
{
"images" : [
{
"filename" : "icon-settings.svg",
"idiom" : "universal"
}
],
"properties" : {
"preserves-vector-representation" : true
}
}
Pro Tip: Aktiviere immer "Preserve Vector Data" im Xcode-Asset-Inspektor. Ohne dieses Flag wird Xcode deinen Vektor beim Build rasterisieren. Diese Checkbox ist der häufigste iOS-Vektor-Icon-Fehler.
iOS Icon-Größen
| Kontext | Größe (pt) | Skalierung | Pixel |
|---|---|---|---|
| iPhone Benachrichtigung | 20x20 | 2x, 3x | 40x40, 60x60 |
| iPhone Einstellungen | 29x29 | 2x, 3x | 58x58, 87x87 |
| iPhone Spotlight | 40x40 | 2x, 3x | 80x80, 120x120 |
| iPhone App | 60x60 | 2x, 3x | 120x120, 180x180 |
| iPad App | 76x76 | 1x, 2x | 76x76, 152x152 |
| iPad Pro App | 83.5x83.5 | 2x | 167x167 |
| App Store | 1024x1024 | 1x | 1024x1024 |
A Full Year of Conversions for $49
Starter Annual: 25 conversions every month, $49 for the whole year. That is about $4.08 a month · Cancel anytime
Get the Annual DealAndroid: Vector Drawables
Android verarbeitet Vektor-Icons über sein eigenes XML-Format VectorDrawable — im Wesentlichen eine SVG-Teilmenge.
<!-- res/drawable/ic_check_circle.xml -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tintMode="src_in"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zm-2,15l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
</vector>
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
app:srcCompat="@drawable/ic_check_circle"
android:contentDescription="@string/check_icon_desc" />
Verwende app:srcCompat statt android:src. Das srcCompat-Attribut der AndroidX-Bibliothek bietet abwärtskompatibles Vektor-Rendering für Geräte unter API 21.
Android Icon-Größen Referenz
| Dichte | Skalierung | Icon-Größen (üblich) | DPI |
|---|---|---|---|
| mdpi (Basis) | 1x | 24x24, 48x48 | ~160 |
| hdpi | 1,5x | 36x36, 72x72 | ~240 |
| xhdpi | 2x | 48x48, 96x96 | ~320 |
| xxhdpi | 3x | 72x72, 144x144 | ~480 |
| xxxhdpi | 4x | 96x96, 192x192 | ~640 |
Automatisierte Icon-Pipeline
Schritt 1: Quell-SVG optimieren
/* Beispiel SVGO-Konfiguration (svgo.config.js) */
module.exports = {
plugins: [
'preset-default',
'removeDimensions',
'removeXMLNS',
{
name: 'removeAttrs',
params: {
attrs: ['data-*', 'class']
}
},
{
name: 'addAttributesToSVGElement',
params: {
attributes: [
{ xmlns: 'http://www.w3.org/2000/svg' }
]
}
}
]
};
Schritt 2: Plattform-Assets generieren
- PDF für iOS (mit
svgexportodercairosvg) - VectorDrawable XML für Android (mit
svg2vectordrawable) - Optimiertes SVG für Web/PWA
Schritt 3: Output validieren
- Dateigrößen prüfen (alles über 5KB markieren)
- ViewBox-Konsistenz überprüfen
- Nicht unterstützte Elemente scannen
- Bei Zielgrößen rendern und mit Referenz-Screenshots vergleichen
Pro Tip: Integriere Icon-Validierung in deine CI-Pipeline. Ein einfaches Script, das SVG-Dateigrößen prüft und nicht unterstützte Elemente markiert, fängt 90% der Icon-Probleme ab.
Häufige Fehler und Korrekturen
1. Konturen statt Füllungen verwenden
Korrektur: Konvertiere alle Konturen zu Füllungen vor dem Export.
2. Nicht-standardisierter ViewBox
Korrektur: Standardisiere auf 0 0 24 24.
3. Eingebettete Schriften und Text
Korrektur: Konvertiere allen Text in Pfade. Immer. Keine Ausnahmen.
4. Dark Mode vergessen
Korrektur: Verwende currentColor als Füllwert. Auf iOS Template-Rendering-Modus. Auf Android android:tint.
5. Barrierefreiheit ignorieren
Korrektur: Immer contentDescription auf Android und accessibilityLabel auf iOS setzen.
Warning: Die "funktioniert auf meinem Gerät"-Falle: Teste immer auf mindestens 3 verschiedenen Android-Geräten und beiden iOS-Gerätetypen (2x und 3x).
Free SVG Tools for Crafters
Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG
Check Your SVG FreePerformance-Überlegungen
| Komplexität | Pfad-Befehle | Dateigröße | Renderzeit (est.) |
|---|---|---|---|
| Einfach (Check, Pfeil) | 5-10 | <1KB | <0,5ms |
| Mittel (Zahnrad, User) | 15-30 | 1-3KB | 0,5-1ms |
| Komplex (detaillierte Illustration) | 50-100+ | 3-8KB | 1-3ms |
| Zu komplex (Raster erwägen) | 200+ | 10KB+ | 3ms+ |
Alles zusammenbringen
- Designe Icons auf einem standardisierten Raster (24x24 empfohlen) mit gefüllten Pfaden
- Bereinige das SVG — Transforms abflachen, Konturen vektorisieren, Metadaten entfernen, mit SVGO optimieren
- Konvertiere in Plattformformate — PDF/SVG für iOS Asset Catalogs, VectorDrawable XML für Android
- Validiere — Dateigrößen prüfen, bei Zielgrößen rendern, Barrierefreiheit-Labels überprüfen
- Automatisiere — in deine CI/CD integrieren
Wenn du mit bestehenden Raster-Icons arbeitest, kann VectoSolve die schwere Arbeit übernehmen. Unsere KI-gesteuerte Vektorisierungs-Engine produziert saubere, optimierte SVGs, bereit für Mobile-Export-Pipelines.