Icônes d'applications mobiles : bonnes pratiques SVG pour iOS et Android
Créez des icônes d'applications parfaites sur chaque appareil. Bonnes pratiques SVG pour iOS et Android, exigences de taille et conseils d'optimisation.
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
- Les icônes SVG s'adaptent parfaitement à toutes les densités d'écran — à condition de les préparer correctement pour chaque plateforme
- iOS nécessite des assets PDF ou SVG dans les Xcode Asset Catalogs ; Android utilise les Vector Drawables (sous-ensemble SVG en XML)
- Toujours aplatir les transformations, vectoriser les contours et supprimer les calques masqués avant l'export mobile
- Testez les icônes à 16px, 24px, 48px et 64px pour détecter les problèmes de rendu avant la mise en production
- Gardez les fichiers SVG sous 5 Ko par icône pour des performances mobiles optimales
- Utilisez un SVG source unique et automatisez les exports spécifiques à chaque plateforme
Chaque développeur mobile a vécu ce moment : vous intégrez une icône magnifiquement designée dans votre app, vous compilez, lancez le simulateur — et vous voyez une forme floue, mal alignée ou complètement invisible. L'icône était parfaite dans Figma, impeccable dans le navigateur. Mais sur un vrai appareil, quelque chose a mal tourné.
L'écart entre designer une icône SVG et la livrer dans une app mobile native est plus large que la plupart des équipes ne le réalisent. iOS et Android gèrent les assets vectoriels via des pipelines entièrement différents, avec des formats, des moteurs de rendu et des pièges différents.
Pourquoi les icônes SVG comptent pour le mobile
Les écrans mobiles existent dans une variété étourdissante de tailles et densités. Un appareil Android moderne peut tourner à 1x, 1.5x, 2x, 3x, voire 4x. Les iPhones sont à 2x et 3x. Les tablettes ajoutent encore plus de combinaisons.
Les icônes SVG résolvent ce problème en définissant les formes mathématiquement. Un fichier, résolution infinie. Mais "utilisez juste des SVG" sous-estime considérablement la complexité.
Le défi principal : Ni iOS ni Android ne rendent nativement les fichiers .svg dans leurs frameworks UI standard. Les deux plateformes convertissent les SVG en formats intermédiaires spécifiques — assets PDF pour iOS et VectorDrawable XML pour Android.
Les avantages d'un pipeline bien maîtrisé :
- Bundles d'app plus petits — un asset vectoriel remplace 4-5 exports raster
- Rendu pixel-perfect à chaque densité d'écran
- Maintenance simplifiée — un fichier source, toutes les cibles régénérées
- Meilleure accessibilité — les formes vectorielles peuvent porter des métadonnées sémantiques
- Pérennité — pas de ré-export quand de nouvelles densités apparaissent
"Nous avons réduit notre dossier d'assets icônes de 2 400 fichiers à 380 en passant à un pipeline vector-first. Les temps de build ont chuté, les handoffs design sont devenus plus simples.
Préparer les SVG pour l'export mobile
Avant de penser aux formats spécifiques, vos SVG sources doivent être propres. Les moteurs de rendu mobile sont bien moins tolérants que les navigateurs web.
La checklist SVG propre
1. Aplatir toutes les transformations. Les transforms CSS et SVG intégrées dans les éléments groupe seront parfois ignorées par les convertisseurs mobile.
2. Vectoriser tous les contours. Le format VectorDrawable d'Android a un support limité des strokes. Convertissez les contours en chemins remplis.
3. Supprimer les calques masqués et métadonnées. Les outils de design intègrent des métadonnées, calques cachés et définitions inutilisées. Supprimez-les.
4. Utiliser un viewBox cohérent. Standardisez sur 0 0 24 24 pour les icônes UI.
5. Simplifier les chemins. Moins de points = fichiers plus petits, rendu plus rapide, moins d'artefacts de conversion.
Exemple d'icône SVG correctement nettoyée :
<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: Évitez les images raster embarquées dans les SVG. Certains outils de design exportent des icônes avec des PNG embarqués pour des effets complexes. Ceux-ci échoueront à la conversion ou gonfleront la taille du fichier.
iOS : Asset Catalogs et vecteurs PDF
L'approche recommandée par Apple pour les icônes vectorielles est d'utiliser des assets PDF dans les Xcode Asset Catalogs. Depuis Xcode 12, Apple supporte aussi directement les SVG, mais le PDF reste le chemin le plus éprouvé.
Configuration des assets vectoriels dans Xcode
- Ouvrez votre Asset Catalog (
.xcassets) - Créez un nouveau Image Set
- Dans l'inspecteur d'attributs, définissez Scales sur "Single Scale"
- Définissez Resizing sur "Preserve Vector Data"
- Déposez votre fichier PDF ou SVG
<!-- Contents.json pour un asset vectoriel -->
{
"images" : [
{
"filename" : "icon-settings.svg",
"idiom" : "universal"
}
],
"properties" : {
"preserves-vector-representation" : true
}
}
Pro Tip: Cochez toujours "Preserve Vector Data" dans l'inspecteur d'assets de Xcode. Sans ce flag, Xcode va rasteriser votre vecteur au moment du build. Cette case à cocher est l'erreur d'icône vectorielle iOS la plus courante.
Tailles d'icônes iOS
| Contexte | Taille (pt) | Échelle | Pixels |
|---|---|---|---|
| iPhone Notification | 20x20 | 2x, 3x | 40x40, 60x60 |
| iPhone Réglages | 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 |
Lors du design d'icônes SVG pour ces tailles, testez d'abord à la plus petite taille cible. Une icône superbe à 1024px mais floue à 40px a un problème de design, pas technique.
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 gère les icônes vectorielles via son propre format XML appelé VectorDrawable. C'est essentiellement un sous-ensemble de SVG — il supporte les chemins, groupes et remplissages basiques, mais abandonne beaucoup de fonctionnalités SVG.
Conversion SVG vers VectorDrawable
Android Studio inclut un convertisseur intégré : 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>
Utilisation des Vector Drawables dans les layouts
<ImageView
android:layout_width="24dp"
android:layout_height="24dp"
app:srcCompat="@drawable/ic_check_circle"
android:contentDescription="@string/check_icon_desc" />
Utilisez app:srcCompat au lieu de android:src. L'attribut srcCompat de la librairie AndroidX fournit un rendu vectoriel rétrocompatible pour les appareils sous API 21.
Référence des tailles d'icônes Android
| Densité | Échelle | Tailles icônes (courantes) | DPI |
|---|---|---|---|
| mdpi (référence) | 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 |
Avec VectorDrawable, vous définissez les icônes une fois en dp et le système gère automatiquement la mise à l'échelle.
Pipeline automatisé d'icônes
Les exports manuels sont source d'incohérences. Maintenez un SVG source unique pour chaque icône et automatisez les conversions.
Étape 1 : Optimiser le SVG source
/* Exemple de 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' }
]
}
}
]
};
Étape 2 : Générer les assets par plateforme
Convertissez les SVG optimisés en :
- PDF pour iOS (avec
svgexportoucairosvg) - VectorDrawable XML pour Android (avec
svg2vectordrawable) - SVG optimisé pour le web/PWA
Étape 3 : Valider la sortie
- Vérifier les tailles de fichiers (alerter au-dessus de 5 Ko)
- Vérifier la cohérence du viewBox
- Scanner les éléments non supportés (filtres, masques, images embarquées)
- Rendre aux tailles cibles et comparer avec des captures de référence
Pro Tip: Intégrez la validation des icônes dans votre pipeline CI. Un script qui vérifie les tailles, valide la structure XML VectorDrawable et signale les éléments non supportés attrapera 90 % des problèmes d'icônes.
Erreurs courantes et corrections
1. Utiliser des contours au lieu de remplissages
Problème : Une icône utilise des tracés en contour qui semblent corrects dans le navigateur mais rendent avec une épaisseur incohérente sur mobile.
Correction : Convertissez tous les contours en remplissages avant l'export. Dans Figma : "Outline Stroke". Dans Illustrator : Objet → Tracé → Vectoriser le contour.
2. ViewBox non standard
Problème : Les icônes ont des viewBox incohérents, causant des problèmes de dimensionnement.
Correction : Standardisez sur un viewBox unique. 0 0 24 24 est la convention la plus courante.
3. Polices et texte embarqués
Problème : Une icône SVG contient un élément <text> avec une police personnalisée. La police n'est pas disponible sur l'appareil.
Correction : Convertissez tout le texte en chemins avant l'export. Toujours. Sans exception.
4. Oublier le mode sombre
Problème : Les icônes utilisent des remplissages noirs codés en dur. Elles sont invisibles sur fond sombre.
Correction : Utilisez currentColor comme valeur de remplissage. Sur iOS, utilisez le mode de rendu template. Sur Android, appliquez des teintes via android:tint.
5. Ignorer l'accessibilité
Problème : Les icônes transmettent du sens mais n'ont pas de labels d'accessibilité.
Correction : Toujours définir contentDescription sur Android et accessibilityLabel sur iOS.
Warning: Le piège "ça marche sur mon appareil" : Le rendu des icônes varie considérablement selon les appareils, versions d'OS et surcouches fabricant. Testez toujours sur au moins 3 appareils Android différents et les appareils iOS 2x et 3x.
Free SVG Tools for Crafters
Design Checker · Color Separator · Mat Preview · Offset Generator · Text to SVG
Check Your SVG FreeConsidérations de performance
Les icônes vectorielles sont généralement plus légères que les raster, mais pas gratuites. Chaque VectorDrawable ou PDF doit être parsé et rasterisé à l'exécution.
Gardez les icônes simples. Une icône UI devrait rarement dépasser 20-30 commandes de chemin.
Mettez en cache les bitmaps rendus. iOS et Android mettent en cache les versions rasterisées, mais attention aux implications mémoire.
Mesurez l'impact réel. Utilisez le profiler GPU d'Android ou les Instruments de Xcode pour mesurer le temps de rendu.
| Complexité | Commandes chemin | Taille fichier | Temps rendu (est.) |
|---|---|---|---|
| Simple (check, flèche) | 5-10 | <1 Ko | <0,5ms |
| Moyen (engrenage, utilisateur) | 15-30 | 1-3 Ko | 0,5-1ms |
| Complexe (illustration détaillée) | 50-100+ | 3-8 Ko | 1-3ms |
| Trop complexe (envisager raster) | 200+ | 10 Ko+ | 3ms+ |
Tout assembler
Le pipeline SVG-to-mobile n'est pas compliqué une fois les contraintes de chaque plateforme comprises :
- Designez les icônes sur une grille standardisée (24x24 recommandé) avec des chemins remplis, sans contours, sans texte, sans effets embarqués
- Nettoyez le SVG — aplatir les transforms, vectoriser les contours, supprimer les métadonnées, optimiser avec SVGO
- Convertissez aux formats plateforme — PDF/SVG pour iOS Asset Catalogs, VectorDrawable XML pour Android
- Validez — vérifiez les tailles, rendez aux tailles cibles, vérifiez les labels d'accessibilité
- Automatisez — intégrez dans votre CI/CD
Si vous travaillez avec des icônes raster existantes ou des logos complexes à convertir en vecteurs propres, VectoSolve gère le gros du travail. Notre moteur de vectorisation IA produit des SVG propres et optimisés, prêts pour les pipelines d'export mobile.