android - true - react native the number of method references in a.dex file cannot exceed 64k.




O que é o Android MultiDex? (2)

É simples assim

Um único arquivo .dex pode ter 65.536 métodos (referências); portanto, se o número de referências exceder 65.536, você precisará do multidex.

Mais explicações!

Um aplicativo Android é compilado em um arquivo .dex que, por sua vez, é compactado em um único arquivo .apk.
O DVM (Dalvik Virtual Machine) usa arquivos / arquivos .dex para executar bytecodes.

O que faz com que o número de referências exceda os 65.536 limites?
Métodos criados por você + Métodos do Android Framework + Métodos de biblioteca de terceiros (por exemplo, Volley, Retrofit, Facebook SDK etc.).
Eu li "em algum lugar"
O App Compat 24.2.1 contém métodos de 16,5k
O GCM 9.6.1 do Google Play Services contém 16,7k métodos
Portanto, se você criou um aplicativo Hello world simples que possui o App Compat 24.2.1, você já tem 1/4 de caminho para ultrapassar o limite dos métodos dex únicos

Existem muitos posts sobre o MultiDex. Às vezes, experimentei erros resolvidos, incluindo multiDexEnabled true na seção defaultConfig do meu build.gradle.

Mas, o que exatamente é esse recurso? Quais são os cenários para usá-lo?


Citando a documentação :

Os arquivos do aplicativo Android (APK) contêm arquivos executáveis ​​de bytecode na forma de arquivos Dalvik Executable (DEX), que contêm o código compilado usado para executar seu aplicativo. A especificação do Executável Dalvik 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 do Android, métodos de biblioteca e métodos em seu próprio código. Para ultrapassar esse limite, você deve configurar o processo de criação do aplicativo para gerar mais de um arquivo DEX, conhecido como configuração multidex.

Portanto, o recurso é: permite que seu aplicativo complexo seja compilado. Os cenários para usá-lo são quando o aplicativo falha na compilação devido a atingir o limite de referência do método DEK 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




android-multidex