Caçada a Bugs no Iterador de Fontes do Sistema Android: Uma História de Símbolos Ocultos
Este post de blog relata uma correção de bug surpreendentemente longa. O Android define diferentes níveis de API, com alguns símbolos disponíveis apenas a partir de uma versão específica. O Firefox para Android (Fenix) usa `ASystemFontIterator_open`, disponível apenas a partir da API 29. Para compatibilidade com versões anteriores, o Fenix usa `__ANDROID_UNAVAILABLE_SYMBOLS_ARE_WEAK__` e `__builtin_available` para verificações em tempo de compilação e execução. No entanto, o sistema de build do Firefox usa por padrão a visibilidade oculta (`-fvisibility=hidden`), fazendo com que o símbolo fraco `ASystemFontIterator_open` se torne indefinido na biblioteca compartilhada, levando a falhas. A solução foi uma simples alteração para modificar temporariamente a visibilidade padrão ao incluir cabeçalhos do sistema Android.