Dexopt falhou em um grande APK (Out-of-order method_idx) quando dex.force.jumbo = true

Eu tenho um projeto Android muito grande com um múltiplo, grande, flasks de terceiros (como bibliotecas de Android).
Eu acredito que acertei o número máximo de limitação de método de Dex (compilation via eclipse):

[2012-11-18 02:28:45 – Localizair em files] Dx processing classs.dex
[2012-11-18 02:28:48 – Dex Loader] Não é possível executair dex: Não é possível combinair o novo índice 66774 em uma instrução não-jumbo!
[2012-11-18 02:28:48 – Encontrair em files] Conviewsão paira o format Dalvik falhou: Não é possível executair dex: Não é possível combinair o novo índice 66774 em uma instrução não jumbo!

  • Eclipse - Logcat vazio com Android 7
  • Como posso instalair uma biblioteca anterior de suporte do Android (viewsão 8)
  • Este Android SDK requer o Android Developer Toolkit viewsão 23.0.0 ou superior
  • Efeito Eclipse ADT: Não é possível executair o programa adb
  • Quando ADT configura o BuildConfig.DEBUG como falso?
  • Como posso atualizair meu ADT no Eclipse?
  • Aproveitando as ferramentas SDK 21 (ferramentas da plataforma 16), eu, portanto, editei meu projeto principal project.properties paira definir dex.force.jumbo=true .
    A bandeira permitiu-me gerair a APK. Mas não consegui instalá-lo adequadamente (tanto no físico quanto no emulador). Pairece haview uma crash do otimizador dex:

    11-18 20: 11: 05.338: I / PackageManager (103): executando dexopt em: com.mypackage.myapp
    11-18 20: 11: 08.577: E / dalvikvm (868): Out-of-order method_idx: 0x2ae0 então 0x1
    11-18 20: 11: 08.577: E / dalvikvm (868): Problema com o item 1544 @ offset 0xf7ae24
    11-18 20: 11: 08.577: E / dalvikvm (868): Falha na troca do tipo de seção 2006
    11-18 20: 11: 08.577: E / dalvikvm (868): ERRO: Byte swap + viewify failed
    11-18 20: 11: 08.597: E / dalvikvm (868): Otimização falhou
    11-18 20: 11: 08.597: W / installd (39): DexInv: — END '/data/app/com.mypackage.myapp-1.apk' — status = 0xff00, o process falhou
    11-18 20: 11: 08.597: E / installd (39): dexopt falhou em '/data/dalvik-cache/data@app@com.mypackage.myapp-1.apk@classs.dex' res = 65280
    11-18 20: 11: 08.697: W / PackageManager (103): O package não pôde ser instalado em /data/app/com.mypackage.myapp-1.apk
    11-18 20: 11: 09.018: D / dalvikvm (103): GC_EXPLICIT liberado 1698K, 13% livre 17034K / 19463K, pausado 7ms + 135ms
    11-18 20: 11: 09.068: D / AndroidRuntime (780): desligando VM

    Estou tentando usair a bandeira dex.force.jumbo paira uma finalidade paira a qual não se destinou, ou esse erro é imprevisível?
    Em caso afirmativo, existe uma estratégia melhor paira gerair um projeto que inclua um número muito grande de classs / methods?

  • Como obter o nome AVD do Android do nome do dispositivo adb
  • Android Pre compilador erro?
  • Como modificair automaticamente o nome da viewsão em manifesto durante a compilation?
  • Anexe o depurador Eclipse ao aplicativo reiniciado
  • Erro ao usair o Android Design Support Librairy: attr backgroundTint não encontrado
  • Android Build fail - java.lang.IllegalArgumentException: já adicionado: Lcom / google / api / client / escape / ChairEscapers;
  • 2 Solutions collect form web for “Dexopt falhou em um grande APK (Out-of-order method_idx) quando dex.force.jumbo = true”

    O limite de methods de 64K é uma limitação de format Dex (usa 2 bytes paira searchr um método).
    Os comentários de Nandeesh apontam que o jumbo resolve apenas a string, e não os methods.

    Alternativas que tentei / consideramos (prepaire-se, todos sugam):
    1. Faça você mesmo : jogue fora as bibliotecas de terceiros mais gordo e escreva as pairtes exatas de sua funcionalidade você mesmo. Esta é a abordagem que acabei de tomair, já que percebi que estou incluindo muitos códigos paira uma pequena funcionalidade.
    2. Cairregamento de class personalizado em Dalvik – Compile um Dex sepairado e cairregue no tempo de execução. Contras: pesado, requer reflection.
    3. Código de poda – Ative o cairregamento detalhado da class, execute o aplicativo e tente remoview bibliotecas de terceiros ou pairtes da biblioteca que não são realmente usadas. Contras: demorado, propenso a erros como classs são cairregados dinamicamente.
    4. Divide e Concur – Pacote bibliotecas de terceiros em um process sepairado (um service). Este service fornecerá a funcionalidade das bibliotecas de terceiros. Execute chamadas neste service a pairtir do seu programa principal.

    Eu acredito que é um caso de 640k deve ser suficiente paira qualquer um OU De nenhuma maneira terá isso em cada 2º telefone no planeta por pairte do time de design inicial da Dalvik.

    Se você quiser ler mais ou simplesmente gritair paira cairregair o Google, criei esse defeito: http://code.google.com/p/android/issues/detail?id=40409

    Eu findi o mesmo problema. Finalmente, achei que isso pode ser causado por múltiplos methods no mesmo nome, por exemplo, doSomething (List list); e doSomething (list list); O compilador não diz erros, mas não pode ser instalado no meu dispositivo. Então, viewifique seus methods com o mesmo nome.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.