while unable tutorial studio multidexapplication minifyenabled merging error archives application java android gradle dex

java - unable - proguard android studio tutorial



Android: modo Jumbo vs Multidex (2)

No estoy del todo seguro de cuál es la diferencia entre establecer la opción dex "jumbomode" en true versus agregar compatibilidad multidex.

Establecer el modo jumbo en true o multidex en true parece solucionar el problema a continuación

AGPBI: {"kind":"SIMPLE","text":"UNEXPECTED TOP-LEVEL EXCEPTION:","position":{},"original":"UNEXPECTED TOP-LEVEL EXCEPTION:"} AGPBI: {"kind":"SIMPLE","text":"com.android.dex.DexIndexOverflowException: Cannot merge new index 65772 into a non-jumbo instruction!","position":{},"original":"com.android.dex.DexIndexOverflowException: Cannot merge new index 65772 into a non-jumbo instruction!"} AGPBI: {"kind":"SIMPLE","text":"/tat com.android.dx.merge.InstructionTransformer.jumboCheck(InstructionTransformer.java:109)","position":{},"original":"/tat com.android.dx.merge.InstructionTransformer.jumboCheck(InstructionTransformer.java:109)"} AGPBI: {"kind":"SIMPLE","text":"/tat com.android.dx.merge.InstructionTransformer.access$800(InstructionTransformer.java:26)","position":{},"original":"/tat com.android.dx.merge.InstructionTransformer.access$800(InstructionTransformer.java:26)"} AGPBI: {"kind":"SIMPLE","text":"/tat com.android.dx.merge.InstructionTransformer$StringVisitor.visit(InstructionTransformer.java:72)","position":{},"original":"/tat com.android.dx.merge.InstructionTransformer$StringVisitor.visit(InstructionTransformer.java:72)"} AGPBI: {"kind":"SIMPLE","text":"/tat com.android.dx.io.CodeReader.callVisit(CodeReader.java:114)","position":{},"original":"/tat com.android.dx.io.CodeReader.callVisit(CodeReader.java:114)"} AGPBI: {"kind":"SIMPLE","text":"/tat com.android.dx.io.CodeReader.visitAll(CodeReader.java:89)","position":{},"original":"/tat com.android.dx.io.CodeReader.visitAll(CodeReader.java:89)"} AGPBI: {"kind":"SIMPLE","text":"/tat com.android.dx.merge.InstructionTransformer.transform(InstructionTransformer.java:49)","position":{},"original":"/tat com.android.dx.merge.InstructionTransformer.transform(InstructionTransformer.java:49)"} ...


echa un vistazo a esto (busca jumbo):

https://developers.soundcloud.com/blog/congratulations-you-have-a-lot-of-code-remedying-androids-method-limit-part-1

en resumen: - similar al límite de conteo de métodos de Android (64K) - hay un límite en el conteo de cadenas (64K) - para superar este límite - el modo jumbo permite hacer referencia a más de 2 ^ 16 cadenas usando un opCode especial que permite codificar hasta 2 ^ 32 cuerdas.

en la práctica: - según mi experiencia, ambos (MultiDex y JumboMode) tienen un gran impacto en el tiempo de instalación de apk (mucho más lento).

espero que esto ayude:)


Modo Jumbo , al leer https://source.android.com/devices/tech/dalvik/dalvik-bytecode.html , el const-string / jumbo es el modo jumbo para la cadena. Se trata del código de operación tal que "op vAA, string @ BBBBBBBB" versus "op vAA, string @ BBBB", 32 bits frente a 16 bits.

Multi Dex es permitir cargar clases de más de un archivo dex. La clase primaria.dex debe contener las clases necesarias para llamar a esta clase de métodos. Los archivos dex secundarios encontrados en la aplicación apk se agregarán al cargador de clases después de la primera llamada a MultiDex.install (Contexto), consulte https://developer.android.com/reference/android/support/multidex/MultiDex.html