Reduzir o tamanho do app

O tamanho pequeno de um app está relacionado ao sucesso do número de downloads, principalmente em mercados emergentes com conexões de rede fracas ou velocidades de rede baixas. Isso pode resultar em taxas de uso do app mais baixas, o que diminui o escopo e o alcance do seu público. No entanto, há várias maneiras de ajudar a reduzir o tamanho do seu app.

Práticas recomendadas

Enviar app como um Android App Bundle

A maneira mais fácil e imediata de diminuir o tamanho do app durante a publicação no Google Play é publicando ele como um Android App Bundle. Esse é um novo formato de upload, que inclui todos os recursos e o código compilado do seu app, além de repassar a geração e a assinatura do APK para o Google Play.

Reduzir o tamanho do código no momento da execução

Procure código que não está sendo usado no seu app no momento da execução. Por exemplo, classes grandes ou código gerado automaticamente. Os otimizadores, como o R8, podem ajudar a otimizar e reduzir o tamanho do código, mas não podem lidar com código protegido por constantes de tempo de execução. Substitua as flags de verificação por constantes de tempo de compilação para aproveitar ao máximo várias ferramentas de otimização. Você pode ativar a redução de código e recursos no arquivo de configuração do Gradle:

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

Remover layouts desnecessários

Mescle layouts não utilizados que fazem pequenas mudanças na IU e remova todos os desnecessários para reduzir o tamanho geral do código do app. Você também pode renderizar dinamicamente layouts e visualizações sempre que possível. Assim você não precisa desenhar modelos estáticos e pode aplicar layouts alternativos sem a sobrecarga técnica.

Reavaliar recursos pouco usados

Otimize o app especificamente para o Android (versão Go) desativando recursos que têm métricas baixas de usuários ativos por dia (DAU). Exemplos incluem a remoção de animações complexas, arquivos GIF grandes ou qualquer outra adição estética que não seja necessária para o sucesso do app.

Usar o Dynamic Delivery

A Play Feature Delivery usa recursos avançados de pacotes de apps, permitindo que determinados recursos sejam enviados condicionalmente ou transferidos por download sob demanda. Você pode usar módulos de recursos para uma entrega personalizada. Um benefício exclusivo dos módulos de recursos é a capacidade de personalizar como e quando diferentes recursos do app são transferidos por download para dispositivos com o Android 5.0 (API de nível 21) ou mais recente.

Reduzir o tamanho das strings traduzíveis

Você pode usar a propriedade resConfigs do Gradle para Android e remover arquivos de recursos alternativos que não são usados pelo app. Se você estiver usando uma biblioteca que inclui recursos de idioma (como AppCompat ou Google Play Services), seu app vai incluir todas as strings traduzidas das mensagens de biblioteca, independentemente da tradução do app. Se quiser manter apenas os idiomas oficialmente disponíveis no app, use a propriedade resConfig para especificar cada um deles. Os recursos para idiomas não especificados serão removidos.

Para limitar seus recursos de idioma apenas ao inglês e francês, edite defaultConfig como mostrado abaixo:


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

Usar a tradução seletiva

Se uma determinada string não estiver visível na IU do app, a conversão dela não vai ser necessária. Strings para depuração, mensagens de exceção ou URLs precisam ser literais de string no código, não em recursos.

Por exemplo, não se preocupe em traduzir URLs.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

Talvez você reconheça &lt; e &gt, já que esses são caracteres de escape para < e >. Eles são necessários aqui porque, se você colocar uma tag <a> dentro de uma <string>, o compilador de recursos do Android vai fazer o descarte delas por não reconhecer a tag. No entanto, isso significa que você está traduzindo as tags HTML e o URL para 78 idiomas. Em vez disso, remova o HTML:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

Combinar binários nativos com dependências comuns

Se o app tiver implementações diferentes da interface nativa do Java (JNI, na sigla em inglês) com dependências comuns, os vários binários vão aumentar o tamanho do APK com componentes redundantes. É possível combinar vários binários JNI em um único arquivo sem mesclar os arquivos Java e JNI. Isso pode reduzir muito o tamanho do APK.