Oi Meu nome é Andrey, sou desenvolvedor Android da Genesis Media e crio aplicativos para nossos negócios de mídia na África. O continente é incrivelmente caro na Internet e os principais dispositivos móveis são smartphones Android com baixo consumo de energia, por isso faço o possível para facilitar nossos produtos.
Este texto contém as melhores práticas para otimizar os aplicativos para mercados emergentes que usamos. Considere este um guia para desenvolvedores iniciantes.
As empresas estão interessadas em trazer seus produtos para um novo público. Por exemplo, na Índia, apenas um terço da população está conectado à Internet e na Nigéria, metade. Esse potencial desaparece! Portanto, desenvolvedores de grandes empresas estão focados na otimização de aplicativos para mercados emergentes.

Os principais problemas:
- dispositivos com uma pequena quantidade de RAM
- dispositivos com telas pequenas ou baixa resolução
- internet cara
- conexão instável à internet
- versões antigas de sistemas operacionais

Principais decisões
Minimize o tamanho do aplicativo
Nos mercados com Internet cara e dispositivos de baixa potência, a luta é literalmente por megabytes. O download ou não do seu aplicativo depende do tamanho. Os desenvolvedores do Opera têm muito orgulho de que seu aplicativo ocupe apenas 8 MB. Para ter orgulho do nosso produto, encontramos sete soluções.
- Minimize o número de bibliotecas. Inicialmente, removemos as bibliotecas extras e decidimos abandonar as bibliotecas de terceiros em geral. Eles simplificam o trabalho dos desenvolvedores, mas, por uma questão de duas funções convenientes, conectar uma biblioteca inteira não é razoável. Portanto, descrevemos independentemente a lógica para as necessidades de cada projeto. Obviamente, leva mais tempo, mais código, mas reduz significativamente o tamanho do aplicativo.
- Não mantenha bibliotecas com funcionalidade semelhante nas dependências. Quando o uso de bibliotecas é inevitável - a criação de publicidade, por exemplo - veja quais bibliotecas elas contêm. Talvez você deva abandonar seu amado em favor daquele que já está no outro.
- Use imagens claras. Os recursos do módulo de aplicativo - fotos e mais - geralmente ocupam mais espaço. Reduza-os. Isso é mais fácil do que descobrir a partir de agora em diante.
Para fazer isso, começamos a usar imagens vetoriais - elas consistem em formas geométricas simples, e é por isso que são superficialmente compreensíveis e ocupam pouco espaço. Em vez do pacote padrão de cinco fotos para diferentes formatos de exibição, você adiciona um vetor. Ele muda de tamanho sem perder a qualidade. Dos pontos negativos - a imagem deve ser simples. Você pode desenhar uma imagem complexa em um vetor, mas essa não é a melhor opção, pois ela ainda pesa muito e é carregada por muito tempo.
Se a imagem for complexa, usamos o WebP. Este é um formato de compactação do Google que permite reduzir o peso de uma imagem em quase 10 vezes.
Conselho do capitão: Trabalhe em conjunto com um designer. Inicialmente, crie um produto simples para que ele não precise ser adaptado, tecnicamente sofisticado.
- Ofuscar o código. Eu uso o utilitário Proguard, mas existem outras opções. Além de converter o código em um estado ilegível, ele identifica e remove recursos não utilizados, otimizando-o.
- Use os recursos da plataforma. Por exemplo, o Android possui objetos desenháveis de classe interna, que permitem desenhar imagens simples dentro do sistema sem adicionar nada aos recursos. Defina a lógica para criar o elemento e ele será desenhado sozinho no momento do carregamento da interface gráfica.
- Reutilize recursos. Por exemplo, imagens duplicadas em cores diferentes podem ser armazenadas não como duas cópias, mas como uma mais um filtro de cores. Em busca dessas opções de otimização, você gastará tempo, mas vale a pena para manter um volume mínimo de aplicativo.
- Use o App Bundle , o tipo de montagem do aplicativo, quando os elementos de cada usuário são coletados individualmente, não pelo desenvolvedor, mas no PlayMarket. Isso otimiza o tamanho, porque a plataforma conhece o tipo de dispositivo do usuário e comporta uma opção de imagem adequada. O PlayMarket alega que ajuda a reduzir o tamanho do aplicativo em 30%. Adequado para quem não quer se preocupar com as opções anteriores.
- Otimize a velocidade de exibição da interface - isso é relevante para um usuário com hardware fraco. Geralmente, a interface do usuário é imposta no arquivo xml - isso é conveniente e rápido em comparação com o layout no código. Isso nem sempre tem um bom efeito no tempo de renderização da interface do usuário, especialmente em dispositivos fracos. Você pode acelerar um pouco esse processo se configurar o layout no código. Isso economizará tempo no processo de conversão do layout xml em código. Ou você pode usar a classe AsyncLayoutInflater para tornar esse processo assíncrono. Talvez a velocidade geral de renderização não aumente, mas pelo menos torne a interface do usuário mais responsiva (menos lenta, lenta).

Otimização do uso do tráfego
A falta de internet não é um erro, mas o estado do aplicativo. E você precisa poder trabalhar com ele corretamente. O usuário deve ter acesso às informações - deixe-o olhar, ler, mostrar ao máximo tudo o que é. Não envie de volta.
- Armazenamento em cache de dados. Salvar o tráfego na África é muito importante - vale seu peso em ouro. Portanto, assim que o usuário abrir o feed de notícias, todas as informações deverão ser armazenadas em cache. Quando a Internet é perdida ou uma pessoa sai, entra no aplicativo, o conteúdo não será carregado novamente.
- ETag. Recarregar dados é um hábito inconsciente do usuário que você não percebe na Internet de baixo custo, mas é caro nos mercados emergentes. A lógica ETag analisa dados de hash e atualiza apenas as informações alteradas ou envia uma solicitação "o conteúdo não foi alterado", pesando não mais que 1 Kb. É aconselhável adicioná-lo à lógica da consulta, que pode retornar muitos dados.
- Desativar fotos. Portanto, o usuário lê as notícias, mas não gasta tráfego no download de imagens. À vontade, ele pode "ativá-los" com um toque, mas eles não serão puxados automaticamente para cima.

Total
Essas são as principais maneiras de ajudar os usuários a economizar tráfego e espaço no dispositivo. Tente não adicionar serviços em execução em segundo plano ao aplicativo, mas isso ocorre somente após a primeira assistência de otimização para todos os pontos anteriores. Só isso. Espero que o material tenha sido útil para você.