URL: https://linuxfr.org/users/pied/journaux/sobriete-j-ecris-ton-nom Title: Sobriété, j'écris ton nom Authors: Pinaraf Date: 2022年09月06日T23:25:34+02:00 License: CC By-SA Tags: Score: 91 Depuis quelques jours, je suis l'heureux client d'une crèche. Lors de l'intégration de ma fille dans la structure, un point a été ré-évoqué que j'avais oublié depuis le moment où nous nous étions inscrits : une application mobile est disponible. Joie ! Volupté ! Une application mobile, génial, oui, super... Bon, en fait elle peut servir (échanger des messages avec l'équipe, avoir accès aux jours de fermeture et autres éléments administratifs), du coup, va bien falloir que je regarde ça... 1) Nan, ze veut pas =================== J'ai pour intelliphone un PinePhone, avec un OS pas du tout Android. Alors certes, ça pourrait être l'occasion pour moi d'installer un waydroid ou équivalent, mais clairement, pour juste ça, j'ai pas envie. Du coup, je note le nom de l'application, et je cherche si un site web n'existe pas avec la même fonctionnalité... Y'a un https://appli.app/ qui répond, mais c'est le backoffice côté crèche, pas côté progéniteurs. https://appli.io me sort une page «firebase», ce qui ne me rassure pas... 2) Z'ai dit, ze veut pas ======================== Bon ben on va télécharger l'apk et décompiler le java pour voir comment ça marche. Ça doit pas être bien dur sur une appli comme ça (j'ai un autre projet en cours bien plus fun avec du code natif dans l'apk, j'en parlerai)... Je cherche donc sur un site de téléchargement d'apk l'appli en question. 19MB de téléchargement. C'est beaucoup quand même. Je télécharge, je décompresse, et je commence à regarder. ``` snoopy@peanuts2 ~/temp/dlfp % du -shc * 12K AndroidManifest.xml 28M assets 4.4M classes.dex 4.0K firebase-common.properties 4.0K firebase-components.properties 4.0K firebase-datatransport.properties 4.0K firebase-encoders-json.properties 4.0K firebase-iid-interop.properties 4.0K firebase-iid.properties 4.0K firebase-installations-interop.properties 4.0K firebase-installations.properties 4.0K firebase-measurement-connector.properties 4.0K firebase-messaging.properties 328K META-INF 4.0K play-services-basement.properties 4.0K play-services-base.properties 4.0K play-services-location.properties 4.0K play-services-places-placereport.properties 4.0K play-services-stats.properties 4.0K play-services-tasks.properties 8.8M res 584K resources.arsc 4.0K transport-api.properties 4.0K transport-backend-cct.properties 4.0K transport-runtime.properties 42M total ``` 42MB. C'est *beaucoup*. Ce qui m'intrigue là dedans, c'est le dossier assets. Que peut-il bien contenir qui fasse 28MB. 3) Mais pourquoi tu cognes ta tête sur ton bureau ? =================================================== Le dossier assets contient un sous-dossier, nommé public, et un fichier json à la con qui parle de npm, PushNotifications... Le dossier public contient... ``` android-chrome-192x192.png android-chrome-512x512.png apple-touch-icon.png cordova.js cordova_plugins.js css favicon.ico favicon-16x16.png favicon-32x32.png fonts img index.html js mstile-150x150.png native-bridge.js robots.txt safari-pinned-tab.svg ``` robots.txt ? favicon.ico ? index.html ? J'ouvre index.html dans mon firefox, et magie... un formulaire de login apparait avec le logo. Je saisis login, mot de passe... et bingo, j'ai accès à toutes les fonctionnalités. 4) Pourquoi y a-t-il encore 28MB pour une page web ================================================== Bon, première stupeur passée, regardons pourquoi la page prend tant de place. ``` snoopy@peanuts2 ~/temp/dlfp/assets/public % du -sh * | grep M 1.1M css 6.9M fonts 9.4M img 9.8M js ``` Oui, évidemment, logique... Mais 10MB de JS, c'est beaucoup. ``` 192K js/app.ccdd617e.js 548K js/app.ccdd617e.js.map 2.3M js/chunk-vendors.f307d948.js 6.8M js/chunk-vendors.f307d948.js.map ``` Ha ben... le JS est minifié, mais on laisse quand même le .map utile pour débugguer, et on l'envoi sur les téléphones de tout le monde. Bravo, beau travail ! Donc on vire les .map, on tombe à 20M, continuons. ``` snoopy@peanuts2 ~/temp/dlfp/assets/public % ls fonts/ GrandHotel-Regular.000c98f7.ttf SF-UI-Text-Medium.19d73610.otf fa-brands-400.d71bb30a.woff fa-brands-400.79192c04.eot fa-duotone-900.12f37b45.ttf fa-light-300.04c6f174.eot fa-regular-400.d6dfd56d.woff2 fa-regular-400.255beb43.eot fa-solid-900.25c8182a.eot SF-UI-Text-Bold.587003e2.otf SF-UI-Text-Regular.5b838b00.otf fa-brands-400.ffb23988.woff2 fa-duotone-900.c7a6963a.eot fa-duotone-900.303f350f.woff2 fa-light-300.4f6e39d6.woff2 fa-regular-400.6c2e7024.woff fa-solid-900.0fe9b01b.ttf fa-solid-900.727b7753.woff2 SF-UI-Text-Light.2425d3ea.otf SF-UI-Text-Semi-Bold.f7e513bb.otf fa-brands-400.6381ec23.ttf fa-duotone-900.eb782a17.woff fa-light-300.0dc9a6cb.woff fa-light-300.10839702.ttf fa-regular-400.83aa8612.ttf fa-solid-900.3e9b250e.woff ``` Ha ben oui. Tant qu'à faire. Autant mettre les polices dans tous les formats, des fois que, on sait jamais. Mon firefox utilise les .woff2, donc je vire les autres, et le dossier fonts passe de 6,9 à 1,9MB (et l'application totale à 16MB)... au suivant ! ``` snoopy@peanuts2 ~/temp/dlfp/assets/public % du -sh img/* 4.0K img/activity.ca3d17b5.svg 4.0K img/apple_0.5f669073.svg 4.0K img/apple_1.364ca09d.svg 4.0K img/apple_2.6dcdf98f.svg 8.0K img/baby_bottle.f0294369.svg 4.0K img/baby_diaper.f25b485a.svg 8.0K img/balance.12e7260b.svg 8.0K img/breastfeeding.227234e8.svg 4.0K img/diaper.735a652a.svg 716K img/fa-brands-400.8070c568.svg 2.5M img/fa-duotone-900.b326b0d1.svg 2.4M img/fa-light-300.6bbd339e.svg 2.1M img/fa-regular-400.11d3abbe.svg 1.7M img/fa-solid-900.717283fb.svg 4.0K img/late.1ce604a2.svg 52K img/meeko_head.966f2d9d.png 4.0K img/moon_2.629376ba.svg 8.0K img/no-avatar.1c823611.png 8.0K img/observation.e2beb80d.svg 4.0K img/pills.f808635c.svg 4.0K img/potty.842f185c.svg 4.0K img/thermometer.84895d0b.svg 4.0K img/toilet.1522b49c.svg ``` Ho, mais... fa-brands, fa-duotone... on l'a vu juste au dessus, ce sont encore des polices, mais en SVG cette fois. Des fois que, donc, on sait jamais, on a vraiment tous les formats de police possible. Je supprime, et hop le dossier img passe à 144KB, et l'appli à 5,8MB. Et j'ai plus qu'à mettre ça sur mon serveur perso et j'ai accès à «l'application» depuis partout, sans rien installer, magie ! 5) Conclusions douloureuses... ============================ Tout d'abord : pourquoi est-ce une application ? Si c'est pour embarquer une page web qui de toute façon ne fera rien sans vos webservices, ben autant l'héberger et filer le lien à tout le monde. J'ose pas regarder le contenu du .dex du coup. 4MB pour mettre juste une WebView en place, ou y a-t-il un contenu qui ne me plairait vraiment pas ? Et surtout, surtout : bordel, pourquoi est-ce-que ça doit prendre tant de place ? Même en imaginant un instant qu'il soit logique de distribuer une page web dans une application Android, quel est l'intérêt, dans le CSS et je suppose partout ailleurs, d'avoir tous les hacks nécessaires pour être compatible Internet Explorer ? D'avoir toutes les polices au complet, et dans tous les formats possible, même les pires ? Certes, ce n'est «que» de l'espace disque utilisé. Mais sur un téléphone portable. Qui n'a pas forcément la possibilité d'avoir son stockage étendu. Sur le téléphone de ma compagne, l'application une fois installée consomme 37MB sur le disque. Je ne sais pas où on va avec ce genre de chose, mais on y va sans réfléchir, c'est sûr...

AltStyle によって変換されたページ (->オリジナル) /