Iconos de apps móviles: mejores prácticas SVG para iOS y Android
Crea iconos de apps que se vean perfectos en cada dispositivo. Mejores prácticas SVG para iOS y Android, requisitos de tamaño y consejos de optimización.
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
- Los iconos SVG se escalan perfectamente en todas las densidades — pero solo si los preparas correctamente para cada plataforma
- iOS requiere assets PDF o SVG en Xcode Asset Catalogs; Android usa Vector Drawables (subconjunto SVG basado en XML)
- Siempre aplana las transformaciones, vectoriza los trazos y elimina capas ocultas antes de exportar iconos para móvil
- Prueba los iconos a 16px, 24px, 48px y 64px para detectar problemas de renderizado antes de producción
- Mantén los archivos SVG bajo 5KB por icono para rendimiento móvil óptimo
- Usa un SVG fuente único y automatiza las exportaciones específicas de cada plataforma
Todo desarrollador móvil ha vivido este momento: integras un icono bellamente diseñado en tu app, compilas, lanzas el simulador — y ves una forma borrosa, desalineada o completamente invisible. El icono se veía perfecto en Figma, impecable en el navegador. Pero en un dispositivo real, algo salió mal.
La brecha entre diseñar un icono SVG y entregarlo dentro de una app móvil nativa es más amplia de lo que la mayoría de equipos imaginan. iOS y Android manejan assets vectoriales a través de pipelines completamente diferentes.
Por qué los iconos SVG importan para el móvil
Las pantallas móviles vienen en una variedad mareante de tamaños y densidades de píxeles. Un dispositivo Android moderno puede funcionar a 1x, 1.5x, 2x, 3x o incluso 4x. Los iPhones vienen en 2x y 3x.
Los iconos SVG resuelven esto definiendo formas matemáticamente. Un archivo, resolución infinita. Pero "solo usa SVGs" subestima la complejidad involucrada.
El desafío central: Ni iOS ni Android renderizan nativamente archivos .svg en sus frameworks UI estándar. Ambas plataformas convierten los SVG en formatos intermedios — assets PDF para iOS y VectorDrawable XML para Android.
Beneficios de hacerlo bien:
- Bundles de app más pequeños — un asset vectorial reemplaza 4-5 exportaciones raster
- Renderizado pixel-perfect en cada densidad de pantalla
- Mantenimiento más fácil — actualiza un archivo fuente, regenera todos los targets
- Mejor accesibilidad — las formas vectoriales pueden llevar metadatos semánticos
- A prueba de futuro — sin re-exportación cuando surgen nuevas densidades
"Redujimos nuestra carpeta de assets de iconos de 2.400 archivos a 380 al cambiar a un pipeline vector-first. Los tiempos de build bajaron y los handoffs de diseño se simplificaron.
Preparar SVGs para exportación móvil
Antes de pensar en formatos específicos, tus SVGs fuente necesitan estar limpios. Los motores de renderizado móvil son mucho menos tolerantes que los navegadores web.
La checklist SVG limpio
1. Aplana todas las transformaciones. Las transforms CSS y SVG en elementos grupo a veces serán ignoradas por los conversores móviles.
2. Vectoriza todos los trazos. El formato VectorDrawable de Android tiene soporte limitado de strokes. Convierte los trazos a paths rellenos.
3. Elimina capas ocultas y metadatos. Las herramientas de diseño integran metadatos, capas ocultas y definiciones sin usar.
4. Usa un viewBox consistente. Estandariza en 0 0 24 24 para iconos UI.
5. Simplifica los paths. Menos puntos = archivos más pequeños, renderizado más rápido.
Ejemplo de icono SVG correctamente limpiado:
<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: Evita imágenes raster incrustadas dentro de SVGs. Algunas herramientas de diseño exportan iconos con PNGs incrustados para efectos complejos. Estos fallarán en la conversión o inflarán el tamaño del archivo.
iOS: Asset Catalogs y vectores PDF
El enfoque recomendado por Apple para iconos vectoriales es usar assets PDF dentro de Xcode Asset Catalogs. Desde Xcode 12, Apple también soporta assets SVG directamente, pero PDF sigue siendo el camino más probado.
Configuración de assets vectoriales en Xcode
- Abre tu Asset Catalog (
.xcassets) - Crea un nuevo Image Set
- En el inspector de atributos, establece Scales a "Single Scale"
- Establece Resizing a "Preserve Vector Data"
- Arrastra tu archivo PDF o SVG
<!-- Contents.json para un asset vectorial -->
{
"images" : [
{
"filename" : "icon-settings.svg",
"idiom" : "universal"
}
],
"properties" : {
"preserves-vector-representation" : true
}
}
Pro Tip: Siempre marca "Preserve Vector Data" en el inspector de assets de Xcode. Sin este flag, Xcode rasterizará tu vector en tiempo de build. Esta casilla es el error más común de iconos vectoriales en iOS.
Tamaños de iconos iOS
| Contexto | Tamaño (pt) | Escala | Píxeles |
|---|---|---|---|
| iPhone Notificación | 20x20 | 2x, 3x | 40x40, 60x60 |
| iPhone Ajustes | 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 |
Al diseñar iconos SVG para estos tamaños, prueba primero al tamaño más pequeño.
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 maneja iconos vectoriales a través de su propio formato XML llamado VectorDrawable. Es esencialmente un subconjunto de SVG.
Conversión SVG a VectorDrawable
Android Studio incluye un conversor integrado: Vector Asset Studio (File → New → Vector Asset).
<!-- 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>
Uso de Vector Drawables en layouts
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
app:srcCompat="@drawable/ic_check_circle"
android:contentDescription="@string/check_icon_desc" />
Usa app:srcCompat en lugar de android:src. El atributo srcCompat de la librería AndroidX proporciona renderizado vectorial retrocompatible para dispositivos bajo API 21.
Referencia de tamaños de iconos Android
| Densidad | Escala | Tamaños iconos (comunes) | DPI |
|---|---|---|---|
| mdpi (base) | 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 |
Con VectorDrawable, defines los iconos una vez en dp y el sistema maneja el escalado automáticamente.
Pipeline automatizado de iconos
Las exportaciones manuales son fuente de inconsistencias. Mantén un SVG fuente único para cada icono y automatiza las conversiones.
Paso 1: Optimizar el SVG fuente
/* Ejemplo config SVGO (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' }
]
}
}
]
};
Paso 2: Generar assets por plataforma
Convierte los SVGs optimizados a:
- PDF para iOS (usando
svgexportocairosvg) - VectorDrawable XML para Android (usando
svg2vectordrawable) - SVG optimizado para web/PWA
Paso 3: Validar la salida
- Verificar tamaños de archivo (alertar por encima de 5KB)
- Verificar consistencia del viewBox
- Escanear elementos no soportados
- Renderizar a tamaños objetivo y comparar con capturas de referencia
Pro Tip: Integra la validación de iconos en tu pipeline CI. Un script que verifique tamaños, valide la estructura XML VectorDrawable y señale elementos no soportados capturará el 90% de los problemas de iconos.
Errores comunes y cómo corregirlos
1. Usar trazos en lugar de rellenos
Problema: Un icono usa paths con trazo que se ven bien en el navegador pero renderizan con grosor inconsistente en móvil.
Corrección: Convierte todos los trazos a rellenos antes de exportar. En Figma: "Outline Stroke". En Illustrator: Objeto → Trazado → Contornear trazo.
2. ViewBox no estándar
Problema: Los iconos tienen viewBox inconsistentes.
Corrección: Estandariza en un viewBox único. 0 0 24 24 es la convención más común.
3. Fuentes y texto incrustados
Corrección: Convierte todo el texto a paths antes de exportar. Siempre. Sin excepciones.
4. Olvidar el modo oscuro
Corrección: Usa currentColor como valor de relleno. En iOS, usa el modo de renderizado template. En Android, aplica tintes vía android:tint.
5. Ignorar la accesibilidad
Corrección: Siempre establece contentDescription en Android y accessibilityLabel en iOS.
Warning: La trampa de "funciona en mi dispositivo": El renderizado de iconos varía significativamente entre dispositivos, versiones de OS y capas de fabricante. Prueba siempre en al menos 3 dispositivos Android diferentes y dispositivos iOS 2x y 3x.
Free SVG Tools for Crafters
Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG
Check Your SVG FreeConsideraciones de rendimiento
| Complejidad | Comandos path | Tamaño archivo | Tiempo renderizado (est.) |
|---|---|---|---|
| Simple (check, flecha) | 5-10 | <1KB | <0,5ms |
| Medio (engranaje, usuario) | 15-30 | 1-3KB | 0,5-1ms |
| Complejo (ilustración detallada) | 50-100+ | 3-8KB | 1-3ms |
| Demasiado complejo (considerar raster) | 200+ | 10KB+ | 3ms+ |
Uniendo todo
- Diseña iconos en una grilla estandarizada (24x24 recomendado) con paths rellenos, sin trazos, sin texto, sin efectos incrustados
- Limpia el SVG — aplana transforms, vectoriza trazos, elimina metadatos, optimiza con SVGO
- Convierte a formatos de plataforma — PDF/SVG para iOS Asset Catalogs, VectorDrawable XML para Android
- Valida — verifica tamaños, renderiza a tamaños objetivo, verifica labels de accesibilidad
- Automatiza — intégralo en tu CI/CD
Si trabajas con iconos raster existentes o logos complejos que necesitan convertirse a vectores limpios, VectoSolve puede encargarse del trabajo pesado. Nuestro motor de vectorización con IA produce SVGs limpios y optimizados, listos para pipelines de exportación móvil.