Cacería de errores en el iterador de fuentes del sistema Android: Una historia de símbolos ocultos
Esta entrada de blog relata una corrección de errores sorprendentemente larga. Android define diferentes niveles de API, con algunos símbolos disponibles solo a partir de una versión específica. Firefox para Android (Fenix) utiliza `ASystemFontIterator_open`, disponible solo a partir de la API 29. Para compatibilidad con versiones anteriores, Fenix utiliza `__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__` y `__builtin_available` para comprobaciones en tiempo de compilación y ejecución. Sin embargo, el sistema de compilación de Firefox utiliza de forma predeterminada la visibilidad oculta (`-fvisibility=hidden`), haciendo que el símbolo débil `ASystemFontIterator_open` se vuelva indefinido en la biblioteca compartida, lo que provoca fallos. La solución fue un simple cambio para modificar temporalmente la visibilidad predeterminada al incluir encabezados del sistema Android.