Chaque année, Apple lance un nouvel iPhone, augmentant progressivement la taille de la RAM et de la mémoire principale, ajoutant ainsi de la puissance à la puce. Aujourd'hui, sur iPhone 15, vous pouvez déjà exécuter des jeux sur console comme « Resident Evil 4 ». Et une question logique peut se poser : dois-je optimiser la taille de mon application ou ne puis-je pas y consacrer plus de temps ? Bref, cela vaut quand même la peine d’optimiser la taille. Dans cet article, j'ai rassemblé les raisons pour lesquelles il est essentiel de le faire et fourni quelques méthodes d'optimisation utiles. Problèmes et définitions Commençons donc par la réponse la plus banale à la question « Pourquoi la taille est-elle importante ? » - Les limitations de l'App Store. App Store Connect ne vous permettra tout simplement pas de télécharger un fichier dépassant la limite de taille spécifiée. Pour les applications iOS et tvOS, vérifiez que votre application ne dépasse pas la taille maximale des fichiers sur les systèmes d'exploitation pris en charge. La taille totale non compressée de votre application doit être inférieure à 4 Go. Les applications Apple Watch doivent faire moins de 75 Mo. De plus, chaque fichier exécutable Mach-O — par exemple, app_name.app/app_name — ne doit pas dépasser ces tailles de fichier maximales. Lien Les fichiers spécifiques auxquels ils font référence peuvent prêter à confusion. Pour mieux comprendre cela, passons en revue le processus de soumission de votre candidature à l'App Store Connect. .xcarchive La première étape consiste à créer une archive. Cette archive stocke une collection d'artefacts de construction et d'informations associées pour une application iOS, macOS, watchOS ou tvOS. Nous avons la possibilité d’examiner exactement ce qui est inclus dans les archives et sous quelle forme. Parmi les principaux fichiers, vous retrouverez : Dossier Produits avec votre application ; dSYM, (abréviation de « symboles de débogage »), fichiers spéciaux générés par Xcode avec les informations nécessaires au débogage, en bref, les journaux de crash ; Info.plist; À propos, le fichier d'application peut également être ouvert par « Afficher le contenu du package », et parmi les fichiers, vous trouverez l'exécutable et CodeResources, résultat de la signature de code ; il garde la trace des signatures numériques de diverses ressources applicatives (images, etc.). .ipa De retour à Xcode, après avoir généré l'archive, le bouton est à votre disposition. A ce stade, se transforme en . Distribute App .xcarchive .ipa Un fichier peut être considéré comme un package compressé comprenant un dossier « Payload ». À l’intérieur de ce dossier « Payload », se trouve le bundle essentiel « YourApp.app ». Dans le bundle ".app", vous trouverez tous les composants critiques de votre application, y compris des ressources telles que .ipa images; fichiers plist ; fichiers plume compressés ; ; le fichier exécutable De plus, il héberge des ressources de signature de code pour garantir l'intégrité et la sécurité de l'application. Pour examiner l'intérieur de votre , cliquez sur après la distribution, convertissez le type de en et extrayez simplement. .ipa Export .ipa .zip En résumé, le fichier est l'application packagée que les utilisateurs finaux installent sur leurs appareils iOS, tandis que le est une archive destinée aux développeurs qui contient divers actifs et informations de construction pour l'application. .ipa .xcarchive Le est utilisé pour la distribution, tandis que le est utilisé à des fins de débogage, d'archivage et de développement ultérieur. L'exécutable, quant à lui, est le code central qui exécute les fonctions de l'application et est contenu dans le package . .ipa .xcarchive .ipa Ainsi, les limites de l’AppStore peuvent être illustrées comme suit. Version du système d'exploitation Taille .ipa .ipa -> Charge utile -> Application -> taille de l'exe iOS 9.0 et versions ultérieurestvOS 9.0 et versions ultérieures 4 GO 500 Mo iOS 7.X à iOS 8.X 2 Go 60 Mo Cependant, pour estimer la taille de votre application finale, c'est-à-dire le nombre d'octets qu'un utilisateur particulier devra installer sur son appareil, vous aurez besoin d'actions supplémentaires, à savoir la génération d'un rapport sur la taille de l'application. La documentation décrit bien la procédure pour le créer, je vais donc laisser un ici. lien La prochaine raison de réfléchir à la taille de votre application est… encore une fois l'AppStore, mais maintenant, nous ne parlons pas de restrictions du système mais de la . Ici, tout est évident : plus la taille est petite, plus le tarif est élevé. vitesse de téléchargement De plus, il existe une limite de 200 Mo, à laquelle les utilisateurs doivent se connecter à un réseau Wi-Fi pour installer l'application. Ce retard peut décourager les utilisateurs et entraîner des taux d’abandon plus élevés. Les algorithmes de recherche et de découverte de l'App Store d'Apple privilégient souvent les applications plus petites, car elles sont plus faciles à télécharger et à essayer pour les utilisateurs. Des applications de plus petite taille peuvent potentiellement améliorer la visibilité de votre application dans les résultats de recherche et les recommandations. Une fois l’application installée sur l’appareil, sa taille compte toujours. Les applications plus petites se lancent plus rapidement, offrant une meilleure expérience utilisateur. Lorsqu'une application optimise le stockage, elle contribue à prolonger la durée de vie de la batterie, à réduire l'empreinte de l'application et à améliorer la santé de l'appareil. En conséquence, plus les gens sont satisfaits de l’iPhone, plus vous avez d’utilisateurs potentiels. Solutions Il existe quelques conseils simples pour éviter d’augmenter inutilement la taille de votre application lors du développement. Le premier d’entre eux est le travail conscient avec les images. Images Tout d’abord, choisissez au lieu de JPEG. HEIC fournit des fichiers 50 % plus petits que JPEG, tout en conservant une qualité d'image similaire. Cela entraîne une réduction de l’espace de stockage sur votre appareil. Les fichiers plus petits facilitent le transfert de fichiers sur les réseaux, ainsi que le chargement et l'enregistrement plus rapides sur le disque. HEIC Les HEIC prennent en charge la transparence des images et la capacité de stocker des images supplémentaires contenant des informations sur la profondeur et la disparité. Il prend en charge la compression sans perte et vous permet de stocker plusieurs images dans un seul conteneur. Deuxièmement, essayez d’adopter (un format d’image vectorielle basé sur XML utilisé pour afficher des graphiques vectoriels bidimensionnels) au lieu du PDF et du PNG. Contrairement aux images raster, les graphiques vectoriels présentent généralement des fichiers de plus petite taille, car ils sont caractérisés par des équations mathématiques qui définissent des formes et des courbes, par opposition au stockage de pixels individuels. le SVG Initialement, il fallait ajouter 3 images avec préfixes (pour chaque densité de pixels). Ensuite, le support PNG a été ajouté (= image vectorielle avec une taille donnée), mais cela fonctionnait toujours au niveau de « couper 3 PNG du PDF lorsque nous assemblons le projet ». Et ce n'est qu'alors qu'il est devenu possible d'utiliser SVG + d'inclure la case à cocher « utiliser la date vectorielle » dans le catalogue d'actifs, réduisant ainsi réellement la taille des images utilisées + ajoutant la possibilité d'une mise à l'échelle infinie, sans perte de qualité. Troisièmement, tirez le meilleur parti des capacités des . Les catalogues d'actifs fournissent un stockage facile à utiliser pour plusieurs résolutions de la même image. De plus, les catalogues stockent toutes les images dans un seul format optimisé avec des métadonnées au lieu de fichiers individuels. catalogues d’actifs Il permet à l'App Store de fournir uniquement les ressources nécessaires à son appareil particulier. Cela conduit à une augmentation de la vitesse de téléchargement, et nous savons déjà que les utilisateurs n'aiment pas attendre. Il est possible de définir la ressource « à la demande », c'est-à-dire que la ressource sera téléchargée sur l'appareil uniquement si nécessaire, et après un certain temps d'inutilisation, elle sera supprimée. Lien N'oubliez pas que vous disposez d'un énorme catalogue d'images « gratuites » - . Apple travaille constamment à augmenter le nombre de personnages, en ajoutant la possibilité de personnaliser les couleurs et même les animations. SF Symbols Ainsi, avec les images et autres ressources graphiques, tout semble clair : nous utilisons les bons formats et ajoutons un catalogue via les Assets. Il est toujours possible de ne pas inclure de ressources volumineuses dans l'assemblage final, mais simplement de les télécharger depuis Internet en cas de besoin. Parlons maintenant du code et de l'utilisation des bibliothèques. Gestion des cadres Permettez-moi de vous rappeler rapidement le Linking. Il en existe deux types : statique et dynamique. Statique Dynamique Quand la liaison se produit Temps de construction Durée Où les dépendances sont stockées Dans le fichier exécutable final Dans des bibliothèques dynamiques distinctes Comment les dépendances sont partagées La même copie est utilisée par toutes les instances de l'application Chaque instance de l'application a sa propre copie Comment les mises à jour des dépendances sont gérées Reconstruire l'application Mettre à jour la bibliothèque dynamique Selon le thème de cet article, le stockage des dépendances est particulièrement important pour nous, et les liens dynamiques semblent être notre favori. Les bibliothèques dynamiques ne sont pas liées de manière statique aux applications clientes ; ils ne font pas partie du fichier exécutable. Au lieu de cela, les bibliothèques dynamiques peuvent être chargées (et liées) dans une application soit au lancement de l'application, soit pendant son exécution. Lien Pour faire court, opter pour plutôt que des bibliothèques statiques entraîne une taille de fichier d'application plus petite et une utilisation initiale de la mémoire inférieure. Cependant, il est toujours important de trouver un équilibre et d'éviter une utilisation excessive des bibliothèques dynamiques, car cela peut créer un retard de performances lors du démarrage de l'application. des bibliothèques dynamiques Apple recommande également de créer une base de code modulaire ( ) dans votre application, ce qui peut s'avérer pratique lors du partage de code avec d'autres cibles, App Clipps par exemple. SPM Swift Package Manager offre un moyen simplifié et natif de gérer les dépendances dans vos projets Swift. Fichiers excédentaires L'un des moyens les plus efficaces de réduire la taille de votre application consiste à supprimer tous les fichiers inutiles. Ces fichiers supplémentaires peuvent être, par exemple, Read.me ou des images restantes. En fait, au tout début de l'article, où nous avons compris ce qu'est un .ipa, nous avons déjà appris comment trouver tous les fichiers qui entreront dans l'AppStore : .ipa -> .zip -> App -> show package Contenu. Découvrez toutes les ressources dont vous n'avez pas besoin et de votre application. n'hésitez pas à les supprimer Conclusion Juste pour résumer ceci. Il existe encore quelques raisons importantes pour lesquelles nous devrions garder un œil sur la taille de notre application : Limites de l'App Store ; Vitesses de téléchargement et de lancement ; Influence sur la durée de vie de la batterie de l'appareil ; Et il existe quelques méthodes pour réduire la taille de l’application : Formats HEIC et SVG pour les images ; Catalogues d'actifs ; Liaison dynamique ; Filtrage des fichiers excédentaires ; Alors ne l’oubliez pas lors de votre développement de routine ; devenez plus intelligent chaque jour 🙃