Custo de dados reduzido para bilhões

Em alguns países, os planos de dados podem custar mais de 10% da renda mensal do usuário. Isso significa que minimizar o tamanho de download do seu app e permitir que o usuário controle como ele usa dados pode gerar um benefício grande e tangível. Minimizar o tamanho do download também ajuda a poupar espaço no armazenamento interno, que é um recurso escasso em alguns dispositivos.

Aqui, você encontra algumas estratégias para otimizar a quantidade de dados usados pelo app, tanto na rede quanto no armazenamento interno.

Reduzir o tamanho do app

A redução do tamanho do app é uma das maneiras fundamentais de ajudar o usuário a consumir menos dados, seja na rede ou no armazenamento interno. Esta seção descreve várias abordagens para reduzir o tamanho do app.

Reduzir o tamanho de recursos gráficos do APK

  • Com frequência, os recursos gráficos são os maiores culpados pelo tamanho do APK. A otimização deles pode resultar em downloads menores e, com isso, tempos de instalação mais rápidos para os usuários.
  • Para recursos gráficos como ícones, use o formato Elementos gráficos vetoriais escaláveis (SVG). As imagens SVG são muito pequenas quando comparadas a gráficos em bitmap e podem ser renderizadas no momento da execução em qualquer resolução. A Biblioteca de Suporte do Android fornece uma implementação compatível com versões anteriores para recursos vetoriais no Android 2.1 (API de nível 7). Saiba mais sobre os vetores com esta postagem no Medium (em inglês).
  • Para imagens não vetoriais, como fotos, use o WebP para reduzir os tempos de carregamento de imagem e economizar largura de banda da rede. O formato WebP resulta em tamanhos de arquivo menores do que os formatos PNG e JPG, com uma qualidade de imagem equivalente. Mesmo em configurações com perda, o WebP pode produzir uma imagem quase idêntica à original. O Android inclui a compatibilidade com WebP com perda desde a versão 4.0 (API de nível 14: Ice Cream Sandwich) e com o WebP transparente sem perda desde o Android 4.2 (API de nível 17: Jelly Bean).
  • Se você tiver diversas imagens grandes com muitas densidades, recomendamos usar a compatibilidade com vários APKs para dividir seu APK por densidade. Isso resulta em builds direcionados a densidades específicas, o que significa que os usuários com dispositivos com baixa densidade não precisarão se preocupar com o download de recursos de alta densidade não usados.
  • Para saber mais sobre como diminuir o tamanho do APK, consulte Reduzir o tamanho do APK e Reduzir seu código e seus recursos. Além disso, você pode encontrar um guia detalhado sobre como reduzir o tamanho do APK nesta série de postagens no Medium (em inglês).

Reduzir o tamanho do código

  • Todas as bibliotecas do seu projeto Android adicionam códigos não usados ao APK. Tenha um cuidado especial ao usar bibliotecas externas, porque nem todas elas são projetadas para uso em apps para dispositivos móveis. As bibliotecas aplicadas pelo seu app precisam ser otimizadas para uso em dispositivos móveis.
  • Recomendamos que você otimize seu código compilado usando uma ferramenta como o ProGuard. O ProGuard identifica códigos que não estão sendo usados e os remove do APK. Além disso, ative a redução de recursos (link em inglês) no momento da compilação configurando minifyEnabled=true e shrinkResources=true em build.gradle. Isso remove automaticamente os recursos não usados do seu APK.
  • Ao usar o Google Play Services, inclua seletivamente no APK apenas as APIs necessárias.
  • Para saber mais sobre como reduzir o tamanho do código no seu APK, acesse o treinamento do Android sobre como Evitar frameworks de injeção de dependência.

Permitir que o app seja movido para o armazenamento externo (SD)

  • Com frequência, os dispositivos de baixo custo têm pouco armazenamento interno. Os usuários podem aumentar esse armazenamento com cartões SD, mas os apps precisam declarar explicitamente que oferecem compatibilidade com a instalação em armazenamento externo para que os usuários possam movê-los.
  • Permita que seu app seja instalado no armazenamento externo usando a sinalização android:installLocation no AndroidManifest.xml. Para saber mais sobre como permitir que seu app seja movido para o armazenamento externo, acesse o guia do Android sobre o Local da instalação do app.

Reduzir o uso de disco pelo app após a instalação

  • Manter o uso de disco pelo seu app baixo significa que os usuários terão menos probabilidade de desinstalá-lo quando o espaço livre do dispositivo estiver acabando. É importante, aplicar limites para seus caches, evitando que o uso de disco pelo app aumente indefinidamente. Coloque seus dados armazenados em cache em getCacheDir(). O sistema pode excluir os arquivos colocados nesse local conforme necessário, então eles não serão mostrados como armazenamento ocupado pelo app.

Oferecer um uso de rede configurável

A Plataforma Android inclui várias maneiras de oferecer ao usuário o controle sobre o uso da rede pelo app, otimizando-o para as necessidades individuais. Por exemplo, quando for usado pela primeira vez, o app poderá orientar o usuário sobre várias configurações relacionadas à rede. Você também pode fornecer uma tela de preferências de rede fora do app.

Oferecer experiências de integração para as escolhas de rede dos usuários

  • Apps que permitem que os usuários reduzam o uso de dados são bem recebidos, mesmo que tenham requisitos de dados pesados. Caso seu app use uma quantidade considerável de largura de banda (por exemplo, apps de streaming de vídeos), é possível fornecer uma experiência de integração para que os usuários configurem o uso da rede. Por exemplo, você pode permitir que o usuário force streams de vídeo com taxas de bits menores em redes celulares.
  • Configurações extras que permitam que os usuários controlem a sincronização de dados, a pré-busca de dados e o comportamento de uso da rede (por exemplo, pré-buscar todas as categorias de notícias marcadas com estrela apenas por Wi-Fi) também ajudam os usuários a adaptarem o comportamento do app de acordo com as necessidades deles.
  • Para saber mais sobre como gerenciar o uso da rede, consulte o treinamento do Android sobre como Gerenciar o uso da rede.

Fornecer uma tela de preferências de rede

  • Você pode navegar para a tela de configurações de rede fora do app por uma tela de preferências de rede. Essa tela pode ser invocada da tela de configurações do sistema ou da de uso de dados do sistema.
  • Para fornecer uma tela de preferências de rede que os usuários possam acessar de dentro do seu app e pelas configurações do sistema, inclua no app uma atividade que tenha compatibilidade com a ação ACTION_MANAGE_NETWORK_USAGE.
  • Para saber mais sobre como adicionar uma tela de preferências de rede, consulte o treinamento do Android sobre como Implementar uma atividade de preferência.

Outros recursos

Para saber mais sobre esse assunto, consulte os recursos a seguir:

Postagens do blog