Performance do Jetpack Compose no Wear OS

A performance no Wear OS é uma consideração essencial para apps, já que muitos dispositivos Wear OS têm recursos limitados de CPU e GPU em comparação com dispositivos móveis maiores. Com a introdução de animações mais ricas e efeitos dinâmicos no Material 3 Expressive, valide e melhore a performance dos principais fluxos de trabalho do seu app.

Use o guia de performance do Jetpack Compose para configurar e desenvolver seu app para uma performance ideal usando o Jetpack Compose. Este documento destaca algumas das técnicas descritas nesse guia.

Crie e siga estratégias de medição de performance para validar se essas técnicas funcionam conforme o esperado para seu app.

Técnicas essenciais de melhoria de performance

Comece com os tipos de ferramentas de performance mais eficazes: perfis de referência (incluindo perfis de inicialização) e o otimizador de código R8.

Atualize sua dependência do Compose para a versão 1.8 ou mais recente, que introduziu vários novos recursos significativos e melhorou a estabilidade geral da biblioteca. Consulte as instruções em Declarar dependências para saber como atualizar. Para saber mais, leia nosso blog sobre a versão 1.8 e a palestra What's New in Compose I/O (em inglês).

Perfis de referência

Para melhorar a performance do seu app, use perfis de referência. Agrupe as classes e os métodos que representam os principais fluxos de trabalho do seu app, que o sistema pode pré-compilar usando um perfil de referência. Isso pode reduzir os tempos de inicialização, diminuir os frames instáveis e oferecer outras melhorias de performance.

Cada biblioteca do Jetpack Compose vem com regras de perfil próprias. Quando o app depende de uma biblioteca, as regras de perfil da biblioteca são mescladas e distribuídas automaticamente com o APK do app para pré-compilação.

Verifique seus perfis de referência usando as seguintes técnicas:

Perfis de inicialização

Como um subconjunto de perfis de referência, os perfis de inicialização otimizam ainda mais as classes e os métodos que contêm para reduzir a latência de inicialização do app.

A adição de um perfil de inicialização aumenta o tamanho do APK do seu app. Portanto, antes de adicionar um à versão de produção, avalie a compensação entre o tamanho do APK e a latência de inicialização.

Para começar, leia Criar um perfil de inicialização.

R8

Use o compilador R8 para reduzir e otimizar apps. O R8 remove códigos e recursos não utilizados, reescreve o código para otimizar a performance de execução e muito mais.

Nos guias de visão geral de como melhorar a performance, leia as considerações sobre o R8, incluindo as principais etapas para remover recursos não utilizados.

Medição e validação de performance

Para saber mais sobre estratégias gerais de medição de desempenho do app no Android, consulte Visão geral da medição do desempenho do app. Esta seção descreve algumas das técnicas discutidas nessa documentação.

Escolher uma variante de build para medições

Embora o modo de depuração seja útil para detectar muitos problemas, ele causa um custo de performance significativo, não usa perfis de referência e pode dificultar a detecção de problemas de código que podem afetar a performance.

Para entender com precisão a performance do seu app, execute-o no modo de versão.

Tire conclusões finais sobre o desempenho apenas de testes realizados com apps em execução com opções de build de lançamento e em dispositivos reais.

No entanto, ao fazer testes de benchmark, use a variante de build de benchmark, que tem algumas diferenças importantes da depuração de versão. Consulte o guia de configuração da Macrobenchmark para mais detalhes.

Validar os perfis de referência do seu app

Comece inspecionando o status do seu perfil:

adb shell dumpsys package dexopt | grep -A 1 $PACKAGE_NAME

Se o status não for status=speed-profile, as regras de perfil ainda não foram aplicadas para otimizar o app.

As regras são aplicadas usando um job em segundo plano que é executado quando o dispositivo está carregado e inativo. Para acionar isso manualmente, execute o comando abaixo depois que o app for iniciado e tempo suficiente tiver passado para permitir que o instalador do perfil inicialize o perfil em segundo plano. Esse processo geralmente leva cerca de 40 segundos.

adb shell cmd package bg-dexopt-job

Em seguida, execute o comando anterior novamente para verificar se o status é speed-profile.

Para situações em que a otimização ocorre na instalação, consulte Transferir o perfil de referência por sideload.

API UI Automator

A API UI Automator automatiza interações de maneira programática. Use essa API para fazer o benchmark de partes discretas da interface ao inspecionar jornadas do usuário em busca de possíveis otimizações.

Testes de macrobenchmark

As macrobenchmarks testam casos de uso maiores do seu app, especialmente a inicialização e manipulações complexas da interface. Para começar, consulte o guia de implementação.

Para um exemplo de como usar macrobenchmarks para validar a performance de perfis de referência, consulte os exemplos de performance no GitHub (link em inglês).

Biblioteca JankStats

Use a biblioteca JankStats para monitorar e analisar problemas de performance em aplicativos.

Para um exemplo, consulte o exemplo do JankStats no GitHub (link em inglês).

Rastreamento do sistema

Com os novos tipos de animação introduzidos pelo Material 3 Expressive, use o recurso de rastreamento do sistema no Android Studio para inspecionar e diagnosticar a latência em jornadas do usuário potencialmente problemáticas. Com essas informações, verifique o conteúdo dos seus perfis de referência e identifique possíveis ineficiências na lógica do código.

Mais ferramentas

Além das ferramentas de melhoria de performance, você pode usar outras ferramentas para melhorar sua produtividade e fluxo de trabalho.

Ferramentas de produtividade do Android Studio

O Android Studio oferece várias ferramentas que podem reduzir o tempo gasto na identificação de melhorias de performance.

Por exemplo, usando ferramentas como edição em tempo real e visualizações de elementos combináveis, você pode identificar elementos de interface instáveis, além das áreas associadas no código do seu app, para melhorias de performance.

Execute todos os testes de desempenho finais em um conjunto de dispositivos Wear OS físicos que representem com precisão sua base de usuários-alvo.

Isso é especialmente importante ao migrar para o Material 3 Expressive, que introduz recursos como fontes flexíveis e transformação de formas no seu app.

Se você estiver migrando de visualizações, consulte nosso guia de migração e nossas práticas recomendadas para a performance do Jetpack Compose para verificar se as interfaces do seu app têm bom desempenho ao usar o Jetpack Compose.

Outros recursos

Para ficar por dentro das novidades sobre a performance do Android, consulte as últimas notícias e vídeos no guia de desempenho do app.