Existem muitos posts sobre MultiDex. Eu experimentei, às vezes, erros resolvidos, incluindo multiDexEnabled true
na defaultConfig
seção do meu build.gradle.
Mas, o que exatamente é esse recurso? Quais são os cenários para usá-lo?
Existem muitos posts sobre MultiDex. Eu experimentei, às vezes, erros resolvidos, incluindo multiDexEnabled true
na defaultConfig
seção do meu build.gradle.
Mas, o que exatamente é esse recurso? Quais são os cenários para usá-lo?
Respostas:
Citando a documentação :
Os arquivos de aplicativos Android (APK) contêm arquivos de bytecode executáveis na forma de arquivos Dalvik Executable (DEX), que contêm o código compilado usado para executar seu aplicativo. A especificação Dalvik Executable limita o número total de métodos que podem ser referenciados em um único arquivo DEX a 65.536, incluindo métodos de estrutura Android, métodos de biblioteca e métodos em seu próprio código. Ultrapassar esse limite requer que você configure o processo de compilação do seu aplicativo para gerar mais de um arquivo DEX, conhecido como configuração multidex.
Portanto, o recurso é: ele permite que seu aplicativo complexo seja compilado. Os cenários para usá-lo são quando seu aplicativo falha ao compilar devido a atingir o limite de referência do método DEX de 64K. Isso aparece como um erro de compilação, como:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
Um único arquivo .dex pode ter 65.536 métodos (referências), portanto, se o número de referências exceder 65.536, escolha o multidex.
Um programa de aplicativo Android é compilado em um arquivo .dex que, por sua vez, é compactado em um único arquivo .apk.
DVM (Dalvik Virtual Machine) usa arquivo / arquivos .dex para executar bytecodes.
O que faz com que o número de referências exceda os limites de 65.536?
Métodos escritos por você + métodos do Android Framework + métodos de biblioteca de terceiros (por exemplo, Volley, Retrofit, SDK do Facebook, etc.).
Eu li "em algum lugar"
App Compat 24.2.1 contém métodos de 16,5k
Google Play Services GCM 9.6.1 contém 16,7k métodos
Então, se você criou um aplicativo Hello world simples que tem App Compat 24.2.1, você já tem 1/4 maneira de cruzar o limite único de métodos dex
Dex significa Dalvik Executable, que é o processador da máquina virtual do Google (Dalvik) usado para lidar com aplicativos Android. O Android foi construído com aplicativos pequenos e simples em mente e as restrições em um único Dalvik Executable fixaram o teto de referências de código em 65.536 métodos. Por causa desse problema e da maneira como a máquina Dalvik lida com a execução do código, houve alguns problemas de compilação e invocação, até o Monkey Patch ou integração MultiDex . A integração MultiDex no Android Studio permite aos desenvolvedores Android a capacidade de compilar e executar uma base de código com mais de 65.536 métodos!
Criando site oficial do desenvolvedor Android.
If your minSdkVersion is set to 21 or higher, multidex is enabled by default and you do not need the multidex support library.