Reduzindo o tamanho do APK para Android no React Native
Com as últimas atualizações do React Native tivemos um aumento relevante no tamanho da APK gerada pelo comando gradlew assembleRelease
. Isso se deve principalmente ao suporte às diferentes arquiteturas (32 bits, 64 bits, etc) estarem sendo agrupados em uma única APK.
Basicamente para resolver esse problema precisamos separar cada arquitetura em seu próprio APK e deixar que o próprio Google Play lide com o download correto baseado na versão do smartphone do usuário.
Além disso, podemos aplicar algumas outras regras para diminuir ainda mais o tamanho da APK gerada pelo React Native.
Separando APK por arquitetura
Para começar vamos abrir o arquivo android/app/build.gradle
e procurar pelo seguinte trecho de código:
def enableSeparateBuildPerCPUArchitecture = false
Altere false
por true
e agora na pasta android
você já pode executar o comando:
./gradlew assembleRelease
Acessando a pasta android/app/build/outputs/apk/release
você verá agora um arquivo para cada tipo de arquitetura com a extensão .apk
. Você deve fazer upload de todos para a Google Play para que ela lide corretamente com a versão correta pra cada tipo de usuário.
Há algum tempo o Google parou de dar suporte para arquiteturas 32 bits, então para novas aplicações você pode remover a entrada x86
de dentro da instrução include
presente na seção abi
, ficando algo assim:
include "armeabi-v7a", "arm64-v8a", "x86_64"
Habilitando Proguard
No arquivo android/app/build.gradle
podemos procurar pela instrução:
def enableProguardInReleaseBuilds = false
E alterar seu valor para true
. O Proguard basicamente criptografa seu código nativo em Java e elimina todo código não utilizado, o que faz a APK diminuir levemente em tamanho.
Obs.: Algumas dependências podem não funcionar muito bem com o Proguard então é sempre bom testar sua aplicação antes de envia-la para a loja.
Habilitando shrinkResources
Outra dica para diminuir o tamanho final da APK gerada é no arquivo android/app/build.gradle
antes do trecho minifyEnabled enableProguardInReleaseBuilds
, adicionarmos:
shrinkResources true
Isso fará com que na hora de gerar o APK, o Android elimine arquivos que não estão sendo utilizados como fontes, imagens, etc...
Concluindo
Se você seguiu o post até aqui deve ter provavelmente reduzido o tamanho de sua APK de 30MB para perto de 8MB com as instruções que passamos acima.
Algumas dessas instruções não farão efeito grande em aplicações menores, por isso, conforme sua aplicação cresce é quando você vai ver o maior efeito dessas alterações.
Ah, não esquece de deixar um comentário sobre o que você achou desse post :)