Skip to main content

MultiDex

  • MultiDex

No desenvolvimento de aplicativos Android, o termo MultiDex refere-se à capacidade de um aplicativo distribuir seu código e recursos em múltiplos arquivos DEX (Dalvik Executable), ao invés de ser restrito a um único arquivo. Esse recurso é especialmente útil e necessário quando o aplicativo excede o limite de 64K métodos, que é o número máximo de referências a métodos que um único arquivo DEX pode conter.

Contexto do Limite de 64K

Cada aplicativo Android é compilado em bytecode, que é executado na máquina virtual Dalvik (ou na Android Runtime, ART, em versões mais recentes). Originalmente, cada APK tinha um único arquivo DEX contendo todo o bytecode. No entanto, com aplicativos cada vez mais complexos e a inclusão de múltiplas bibliotecas, muitos projetos começaram a atingir o limite de 64 mil métodos permitidos por arquivo DEX.

Como o MultiDex Ajuda

Para contornar esse limite, o Android introduziu o suporte ao MultiDex, permitindo que aplicativos dividam seu código em múltiplos arquivos DEX. Com o MultiDex habilitado, o aplicativo principal continua no arquivo classes.dex, enquanto métodos adicionais são colocados em arquivos subsequentes chamados classes2.dex, classes3.dex, e assim por diante.

Habilitando o MultiDex

Para usar o MultiDex, você precisa configurar seu projeto Android para suportá-lo:

  1. Alterações no Gradle: Adicione a opção multiDexEnabled true no arquivo build.gradle do seu módulo de aplicativo e inclua a dependência da biblioteca MultiDex.

    android {
    defaultConfig {
    ...
    multiDexEnabled true
    }
    }

    dependencies {
    implementation 'androidx.multidex:multidex:2.0.1'
    }
  2. Atualização da Classe Application: Se o seu aplicativo define uma classe Application, ela precisa ser atualizada para suportar MultiDex, extendendo MultiDexApplication ou chamando MultiDex.install(this) no método attachBaseContext().

    public class MyApplication extends Application {
    @Override
    protected void attachBaseContext(Context base) {
    super.attachBaseContext(base);
    MultiDex.install(this);
    }
    }

Considerações para API 21+

Em dispositivos com Android 5.0 (API 21) ou superior, o MultiDex é suportado nativamente pelo sistema operacional, o que simplifica a implementação, pois o Android é capaz de lidar com múltiplos arquivos DEX sem configuração adicional, além de habilitar a flag no Gradle. Para versões anteriores, a biblioteca MultiDex cuida do carregamento dos arquivos DEX adicionais no início do processo do aplicativo.

Uso Prático

Habilitar o MultiDex pode ter implicações no tempo de inicialização do aplicativo, especialmente em dispositivos mais antigos. Por isso, é importante também considerar estratégias de otimização do código, como remover bibliotecas desnecessárias, utilizar a minificação e obfuscação com ProGuard e explorar alternativas para reduzir o número de métodos.

Dessa forma, MultiDex é uma ferramenta valiosa, mas é importante usá-la conscientemente para manter o desempenho e a qualidade da experiência do usuário.