App qui Crash sur mon téléphone mais pas ds simulateurs Xcode

#1

Bonjour,

L’app sur laquelle je travaille marche bien sur les simulateurs Xcode mais plante sur mon vraie téléphone avec le message : “Message from debugger: Terminated due to memory issue”.

Comme ça parle de mémoire j’ai essayé de regarder avec l’outil Instrument/allocations et on voit que c’est la ligne VM : IOSurface qui bouffe toute la mémoire.
la marche que l’on voit à 10s c’est le moment ou le home screen avec une simple TV et qqes icônes apparait. et ensuite meme si je change d’écran on reste à ce niveau de mémoire.
Et si je clic sur une des cell de la TV pour passer à la TV d’après et bien ca crash…

Je pense qu’il s’agit donc d’un problème d’image, mais c’est vraiment étonnant car dans Xcasset je n’ai que 30 images PNG.

Si je clique sur la ligne VM:IOSurface on voit ça :

Quelqu’un a t il une idée de ce qui se passe ? et de comment faire pour réduire cette taille de VMIOSurface ?

Merci

#2

Et l’instrument/allocations donne quel résultat quand ton application est exécutée depuis un simulateur ?

#3

On retrouve presque la meme chose.
le plier bas est le debut de l’app avec qqes screen de on boarding, ensuite l’inscription, puis on arrive à l’home screen avec ce palier à 2.1GB.

qui vient de : VM : Core UI image data.


si je fais une analyse par “call trees” au lieu de “statistique” dans la partie basse de l’image on voit :

peut être qu’il faut que je fasse des réglages dans les images dans XCasset ? il y a plein de cases à cocher mais je ne sais pas du tout à quoi ca sert…

Merci

#4

Monter à 2.1Gb en 1min c’est raide quand même !!
Elle fait quoi ton application exactement ?

#5

J’authentifie les users via FirebaseAuth, ensuite home screen avec les membres d’une famille (dans une TV) puis chacun peut choisir une activité (dans des TV) de musiques ou radio à écouter pendant les 3 minutes de brossage de dents.

je viens de regarder le poids des photos, mais comme j’ai pas d’ordre de grandeur en tete tu peux peut être me dire, il y en a une qui au final est plutot petite sur l’écran mais qui pèse :
@1 = 3,7Mo
@2 = 10,2Mo
@3 = 17,7Mo

ca semble élevée …

mais malgré tout, les images n’ont pas à être chargées dès le debut de l’home screen c’est ca qu’est bizarre :wink:

#6

Ouah c’est énorme comme taille d’image !
Ça devrait faire quelques dizaines de Ko tout au plus.
Pourquoi une telle taille d’image ?

Et je pense que, même si elles n’ont pas à être chargées dès le début, ton app fait du traitement dessus au lancement car ensuite, elles sont traitées localement. C’est pas comme si c’était une image que tu affichais avec une URL. Là, elles font partie intégrante de ton application puisqu’elles sont dans tes assets.

#7

je sais pas…, j’ai simplement travaillé l’image dans Sketch en format assez grand pour que ce soit pratique puis j’ai exporté dans Xcode asset.

du coup je vais les changer.

Il vaut mieux que je fasse tout à la Mano depuis Sketch, ou bien ds Xcode tu connais un truc a cocher qui réduirait tout ca ?

merci

#8

Nope, XCode ne fait pas de resizing d’image (tout du moins, pas à ma connaissance).
Par contre, depuis Xcode, tu peux ouvrir chaque asset avec Preview et faire ton resizing à l’intérieur de Preview et l’enregistrer pour que ça puisse être pris en compte dans XCode.

#9

ok merci je vais m’y atteler :wink:

#10

Bon courage à toi :slight_smile:

#11

Nickel !
c’était à cause du poids de chaque image, maintenant tout roule.
Je ne sais pas pourquoi, mais mes images Sketch étaient en moyenne à 5000 * 5000 alors j’ai tout mis en 100 * 100.

Merci @schtipoun .

1 Like
#12

Avec plaisir, tant mieux si ça fonctionne mieux !
Toujours faire attention aux exports de Sketch :wink:

#13

Outch … je comprend mieux tes ennuis …
Les applications tournant sur le simulateur ont toute la mémoire disponible de l’ordinateur pour s’étaler… C’est pour ça que certains problèmes de gestion mémoire n’apparaissent qu’en situation réelle, les devices ayant beaucoup moins de mémoire que les machines de développement.

2 Likes