Chasse aux bogues dans l'itérateur de polices système Android : une histoire de symboles cachés
Cet article de blog relate la correction d’un bogue étonnamment longue. Android définit différents niveaux d’API, certains symboles n’étant disponibles qu’à partir d’une version spécifique. Firefox pour Android (Fenix) utilise `ASystemFontIterator_open`, disponible uniquement à partir de l’API 29. Pour assurer la compatibilité descendante, Fenix utilise `__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__` et `__builtin_available` pour des vérifications au moment de la compilation et de l’exécution. Toutefois, le système de build de Firefox utilise par défaut la visibilité cachée (`-fvisibility=hidden`), ce qui fait que le symbole faible `ASystemFontIterator_open` devient indéfini dans la bibliothèque partagée, entraînant des plantages. La solution consistait en une simple modification pour modifier temporairement la visibilité par défaut lors de l’inclusion des en-têtes système Android.