2013-04-11 10 views
13

So che una forma di questa domanda è là fuori, ma non riesco a trovare nulla specificamente adatto al mio scenario, quindi eccolo qui.Conversione in formato Dalvik non riuscita con errore 1 in Android all'esportazione (adt 21)

La mia app viene compilata e funziona perfettamente durante il test nell'emulatore, ma quando provo ad esportare un apk firmato ottengo il Conversion to Dalvik format failed with error 1. Il log degli errori Eclipse mostra questa analisi dello stack:

com.android.ide.eclipse.adt.internal.build.DexException: Conversion to Dalvik format failed with error 1 
at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:751) 
at com.android.ide.eclipse.adt.internal.project.ExportHelper.exportReleaseApk(ExportHelper.java:269) 
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.doExport(ExportWizard.java:296) 
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard.access$0(ExportWizard.java:233) 
at com.android.ide.eclipse.adt.internal.wizards.export.ExportWizard$1.run(ExportWizard.java:218) 
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) 

Non ho le collisioni di denominazione che le altre persone sembrano avere (almeno non dirlo in errore), e sto perplesso come al motivo dell'esecuzione nell'emulatore, ma non riesco ad esportare.

Non sto utilizzando ProGuard, comunque.

+0

Visitate qui per la stessa discussione di domande che può essere d'aiuto http://stackoverflow.com/questions/2680827/conversion-to-dalvik-format-failed-with-error-1-on-external-jar?rq= 1 – manish

+0

ciò che mi aiuta in questa situazione è: cancellare tutto il contenuto della cartella "bin", pulire il progetto, eseguire l'app sul dispositivo di test, creare nuovamente l'apk di rilascio firmato. – datayeah

risposta

27

Sembra che ADT 21 aggiunga una cartella al contenitore denominata dexedLibs che dovrebbe accelerare la distribuzione mettendo jars e librerie in codice dex precompilato. Avevo due versioni della libreria di supporto lì, quindi ho cancellato tutti i file nella cartella e creato di nuovo e ha funzionato. Se provo a costruire con qualsiasi file, la build fallisce, quindi devo eliminarli prima di ogni esportazione. Sto usando ActionBar Sherlock e questo potrebbe essere in conflitto con la cosa dexedLibs perché non verrà visualizzato lì a meno che la cartella non sia inizialmente vuota.

Modifica: stavo usando ActionBarSherlock quando si è verificato questo problema, ma sono passati di recente a ActionBarCompat. Dal momento che l'interruttore, non è più necessario eliminare la cartella dexedLibs durante l'esportazione. Sembra che forse ActionBarSherlock fosse la colpa, ma non posso esserne certo.

+8

Risolto !! Ho appena cancellato la cartella 'dexedLibs' dalla cartella' bin' prima di esportare l'apk –

+0

Aveva lo stesso problema con ADT 22 e questo ha funzionato! –

+0

Grazie mille! L'eliminazione della cartella dexedLibs prima dell'esportazione mi ha aiutato! –

12

Passare al progetto e deselezionare Build automaticamente. Quindi Pulisci il progetto e Crea tutto. Ho lavorato per esportare il pacchetto dell'applicazione firmato

+1

Ho eliminato tutto nelle cartelle del mio cestino, pulito, non mi è stato d'aiuto. Questo ha fatto però! – Josh

+0

Non riesco ad accettare la tua risposta, non ho fatto la domanda – Josh

2

Dopo molti tentativi sono riuscito a scoprire il motivo per cui si verifica questo problema. In generale, questo è causato da ProGuard e in particolare dalla sua ottimizzazione. Almeno nel mio caso ho avuto 4 progetti corrotti con questo errore, ma dopo aver disabilitato l'ottimizzazione ProGuard, tutti sono stati costruiti correttamente. Così, nella configurazione ProGuard commentare le -Ottimizzazioni e -optimizationpasses opzioni e aggiungere -dontoptimize

# -optimizations ... 
# -optimizationpasses 5 

-dontoptimize 

Spero che questo aiuti.

+0

Ho provato ogni suggerimento soluzione ma questa è l'unica che ha funzionato per me –

+0

Ma non è così male? Voglio dire, suppongo di voler pubblicare la mia app. La versione non ottimizzata sarà peggiore della versione ottimizzata? Questo problema mi è successo dopo ho apportato alcune modifiche al codice, quindi mi chiedo se ProGuard stia confondendo alcuni nuovi simboli che ho introdotto ... – Antinous

Problemi correlati