Ğecko: Nouveau client de paiements Ḡ1 sur mobile en cours de développement (Dart/Flutter)

J’ai testé mon binding sur mon vieux samsung mini S4 sous Android 4.4.2 (je n’avais testé que sur émulateur jusque-là), et j’ai eu un problème, mais j’ai réussi à le résoudre et maintenant ça fonctionne :smiley:

C’était un problème dans la configuration de la compilation, et plus précisément dans le réglage du paramètre ANDROID_PLATFORM_VERSION, qui indique la version de la plateforme Android pour laquelle on cross-compile.
Les versions de plateforme Android (aussi nommés API Level), sont backward compatible, donc un réglage trop «récent» ne devrait en théorie poser aucun problème.
Sauf que, en pratique llvm ne compile pas avec les mêmes options selon la version de la plateforme, notamment pour optimiser le binaire final.

À partir de la version 23, Android supporte les GNU_HASH, une manière plus optimisée de hasher certaines données dans un executable.
Mais mon vieux samsung mini S4 (API level 19), ne sait pas gérer les exécutables avec des GNU_HASH :confused:

Après quelques recherches, je me suis rendu compte que cette «option» de compilation ne peut pas être choisie, c’est llvm qui choisi automatiquement la meilleure option en fonction de la plateforme cible :

Donc la seule solution, c’est de cross-compiler pour une plateforme Android de version inférieure à 23. J’ai choisi 22, et ça a fonctionné !

La contrepartie, c’est que les binaires générés sont en théorie «moins» optimisés pour les téléphones récents. Dans la pratique je n’ai pas constaté de différence sur l’émulateur Android, donc je ne pense pas que ça se sente à l’usage.
Et si c’était vraiment gênant, on pourrait toujours livrer 2 apk, un pour tels récents et un de «compatibilité».

L’autre contrepartie, c’est si l’on voulait utiliser une fonctionnalité d’Android apparue après la version 22 de leur API, par exemple le capteur d’empreintes digitales, on ne pourrait pas, à moins de maintenir et livrer plusieurs variantes de Ğecko, ce qui serait beaucoup de boulot en plus.

Et puis si l’esprit c’est d’être compatible avec des vieux téléphones, ça me semblerait pas très cohérent d’utiliser des fonctionnalités d’android ultra récentes comme la reconnaissance faciale et co :laughing:

À part l’appareil photo pour scanner un qrcode, prévois-tu d’utiliser d’autres fonctionnalités matérielles @poka ?

1 Like