O Tinder tem como missão potencializar e inspirar conexões reais, tornando a interação fácil e divertida para cada nova geração de solteiros. No entanto, à medida que o código base do aplicativo Android crescia em tamanho, sua complexidade também aumentava. Antes dos seus esforços mais recentes de otimização, cerca de 70% do aplicativo não estava otimizado, incluindo 17 arquivos dex, três dedicados apenas ao início do aplicativo. Embora tivessem habilitado o R8, grande parte do seu potencial de otimização foi bloqueada devido a regras keep, e a equipe não conseguia identificar quais regras específicas estavam impedindo a otimização. Para reduzir o tempo de inicialização e diminuir os erros percebidos pelo usuário (ANR - Application Not Responding), o Tinder recorreu ao novo Analisador de Configuração R8 para enfrentar esses desafios.
Utilizando o Analisador de Configuração R8, o Tinder conseguiu identificar e remover bloqueadores de otimização não intencionais. Os resultados foram imediatos e impactantes: o Tinder alcançou uma redução de 47% no tempo de inicialização fria do aplicativo, diminuiu o tamanho do download para 61,5 MB (redução de 28,98%) e reduziu os ANRs percebidos pelos usuários em 28%.
Analisador de configurações
O Analisador de Configuração R8 mostra a otimização do R8 ao rastrear pontuações de enxugamento, otimização e ofuscamento para mostrar áreas disponíveis para refinamento. Ele mostra regras keep amplas, redundantes ou obsoletas, incluindo as das bibliotecas externas, para que você possa analisar o impacto das regras keep e refinar as regras.
As métricas-chave mostradas no Analisador de Configuração incluem:
- Pontuação de Enxugamento: Percentual do código disponível para enxugamento pelo R8.
- Pontuação de Otimização: Percentual do código aberto a otimizações (por exemplo, inlining de métodos, fusão horizontal de classes).
- Pontuação de Ofuscamento: Porcentagem de classes, métodos e campos que podem ser renomeados pelo R8 para diminuir o tamanho.
Use o analisador para auditar regras keep e seus impactos:
- Encontre regras amplas: Reduza a abrangência das regras de pacotes que limitam a otimização do R8, e identifique as classes, métodos e campos específicos excluídos do enxugamento, otimização e ofuscamento.
- Aperfeiçoe as regras: Seja específico com apenas as classes/métodos que exigem reflexão para liberar a otimização
- Remova regras redundantes: Remova regras que correspondem a zero classes, métodos ou campos em sua build atual.
- Regras idênticas: Regras idênticas significam regras que alvo as mesmas classes, campos e métodos ou declarações duplicadas de regra keep no mesmo ou entre arquivos de regra keep.
- Encontre regras subsumidas: Limpe regras específicas já cobertas por configurações mais amplas.
- Identifique bibliotecas problemáticas: Verifique o impacto combinado da otimização de regras keep consumidoras mescladas de todas as bibliotecas.
Relatório do Analisador de Configuração R8 de uma aplicação de amostra
Para ajudar você a usar o Analisador de Configuração R8 com ferramentas agênticas, publicamos um skill do Analisador R8. Este skill otimiza fluxos de trabalho automatizados de desenvolvimento ao resumir o relatório do Analisador de Configuração R8 para exibir métricas-chave: pontuação de otimização, ofuscamento e enxugamento. Também destaca as cinco regras keep mais impactantes, fornecendo uma visão clara sobre o que bloqueia a otimização do código.
Identificando bloqueadores ocultos de otimização
Antes da integração com o Analisador de Configuração R8, o aplicativo Android do Tinder sofria com uma dívida técnica significativa devido a um código base fortemente não otimizado. Essa falta de otimização prejudicava diretamente a experiência do usuário, levando os usuários a experimentar inicializações frias lentas.
Para resolver esses problemas, a equipe do Tinder utilizou o Analisador de Configuração R8 para auditar completamente sua configuração R8. O analisador mostrou que a otimização do código base era cerca de 28% mesmo com o modo completo do R8. Com o Analisador de Configuração R8, o Tinder identificou que uma biblioteca interna estava introduzindo uma regra keep ampla e não delimitada.
# Previne a otimização em todas as classes públicas, bem como todos os seus membros públicos e protegidos
-keep public class * {
public protected *;
}
Esta regra "amplo" acidentalmente abrangeu várias dependências ao longo de todo o aplicativo, impedindo a otimização em um grande número de classes. Como a regra excessivamente inclusiva evitou falhas no tempo de execução, os desenvolvedores frequentemente esqueciam de adicionar novas regras para recursos que usavam reflexão, permitindo que problemas ocultos se acumulassem ao longo do tempo.
Com a ajuda das informações fornecidas pelo R8 Configuration Analyzer, a equipe conseguiu rastrear e analisar as classes específicas afetadas pela regra de manutenção ampla da biblioteca. A equipe imediatamente descobriu que a otimização estava sendo bloqueada em classes maiores, não invocadas dinamicamente, onde o R8 poderia fazer otimizações. Refinar essa regra específica permitiu ao Tinder desbloquear capacidades de otimização substanciais, desatrelar suas configurações legadas e melhorar drasticamente seus números gerais de otimização, com as pontuações do R8 aumentando de 28% para 50%, impulsionando ganhos de desempenho imediatos em toda a aplicação. A equipe do Tinder está ativamente trabalhando para melhorar ainda mais essa métrica.
- Carga Mais Rápida: A equipe conseguiu uma redução de 47% nas ocorrências de carregamento lento da aplicação pelos usuários.
- Menor Tamanho: O tamanho do download do App foi reduzido de 86,6 MB para 61,5 MB (28,98% de diminuição).
- Aprimorada Estabilidade: Os erros de aplicação não respondendo (ANR) percebidos pelos usuários diminuíram de 0,35% para 0,28%, trazendo-os significativamente mais próximos dos números medianos da categoria.
- Simplificação: O número total de arquivos DEX foi reduzido de 17 para 11, incluindo apenas dois arquivos de inicialização.
Ao além dessas melhorias técnicas no desempenho, a otimização da aplicação aumentou diretamente em crescimento empresarial tangível e maior engajamento do usuário, particularmente nos mercados com recursos limitados.
- Engajamento Regional: Países onde dispositivos com baixa RAM ocupam uma grande parcela do mercado apresentaram o aumento mais significativo no engajamento, e a diminuição das taxas de ANR foi crucial para melhorar o engajamento neste vasto mercado.
- Crescimento do Engajamento: O engajamento aumentou 3% desde que houve uma melhoria na otimização da aplicação.
Safeguardando o desempenho futuro com integração contínua
A abordagem à minificação do código não é apenas um ajuste único; exige vigilância constante. Inspirados pelas melhorias massivas alcançadas através do R8 Configuration Analyzer, a equipe Android do Tinder proativamente incorporou o monitoramento de otimização em sua rotina diária para prevenir retrocessos.
A equipe do Tinder adicionou um novo trabalho no pipeline CI/CD para relatar mudanças nas estatísticas de otimização para que todos possam ver como suas contribuições estão afetando a otimização. Quando aconselhando outros desenvolvedores sobre a integração da configuração R8, a equipe enfatiza a importância de auditar as dependências internas. Embora a maioria das bibliotecas terceiras populares venha com regras bem definidas, projetos internos da empresa considerados "estáveis" podem na verdade estar introduzindo regras amplas que negativamente impactam a otimização geral.
Principais Conclusões
Frente a um códigobase fortemente não otimizado e uma alta quantidade de arquivos DEX, o Tinder precisava de uma maneira limpa para auditar as regras de minificação do seu aplicativo. O R8 Configuration Analyzer forneceu a ferramenta ideal necessária para identificar regras internas de bibliotecas amplamente definidas e as classes afetadas pela regra de manutenção, permitindo à equipe otimizar confiantemente o códigobase. Como resultado, o Tinder conseguiu cortar os tempos de inicialização fria quase pela metade, encolher seu tamanho APK em mais de 28% e estabelecer uma base mais saudável e performática para seus usuários, com a equipe ativamente trabalhando para melhorar ainda mais esses números.
Como Usar o R8 Configuration Analyzer
O R8 Configuration Analyzer e suas funcionalidades autônomas podem ser utilizadas de acordo com sua versão atual do Android Gradle Plugin (AGP):
Para saber mais, consulte a documentação do R8 Configuration Analyzer.

