2013-04-11 3 views
13

Je connais une forme de cette question, mais je ne trouve rien qui corresponde à mon scénario, alors le voici.La conversion au format Dalvik a échoué avec l'erreur 1 dans Android à l'exportation (adt 21)

Mon application compile et fonctionne parfaitement lors des tests dans l'émulateur, mais lorsque j'essaie d'exporter une apk signée, j'obtiens le Conversion to Dalvik format failed with error 1. Le journal des erreurs Eclipse montre cette trace de la pile:

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) 

Je n'ai pas les collisions de noms que d'autres personnes semblent avoir (au moins il ne le dit pas dans l'erreur), et je suis déconcerté comme pourquoi il s'exécute dans l'émulateur, mais je ne peux pas exporter.

En passant, je n'utilise pas ProGuard non plus.

+0

Visitez ici pour la même question discussion il peut vous aider http://stackoverflow.com/questions/2680827/conversion-to-dalvik-format-failed-with-error-1-on-external-jar?rq= 1 – manish

+0

ce qui m'aide dans cette situation est: supprimer tout le contenu du dossier "bin", nettoyer le projet, exécuter l'application sur le dispositif de test, construire une version signée apk à nouveau. – datayeah

Répondre

27

Il semble qu'ADT 21 ajoute un dossier appelé dexedLibs à votre corbeille qui devrait accélérer le déploiement en plaçant les fichiers jar et les bibliothèques dans le code dex pré-compilé. J'avais deux versions de la bibliothèque de support là-bas, donc j'ai supprimé tous les fichiers dans le dossier et construit à nouveau et cela a fonctionné. Si j'essaie de construire avec n'importe quel fichier, la construction échoue, donc je dois les supprimer avant chaque exportation. J'utilise ActionBar Sherlock et cela peut être en conflit avec le truc dexedLibs car il n'apparaîtra pas à moins que le dossier soit initialement vide.

Modifier: J'avais utilisé ActionBarSherlock lorsque ce problème est apparu, mais j'ai récemment passé à ActionBarCompat. Depuis le changement, je n'ai plus besoin de supprimer le dossier dexedLibs lors de l'exportation. On dirait que peut-être ActionBarSherlock était à blâmer, mais je ne peux pas en être certain.

+8

Résolu !! Juste supprimé le dossier 'dexedLibs' du dossier' bin' avant d'exporter l'apk –

+0

Avait le même problème avec ADT 22 et cela a fait le travail! –

+0

Un grand merci! La suppression du dossier dexedLibs avant l'exportation m'a aidé! –

12

Accédez au projet et désélectionnez Construire automatiquement. Puis Nettoyez le projet et Construisez tout. J'ai travaillé pour moi pour exporter le paquet d'application signé

+1

J'ai tout supprimé dans mes dossiers de poubelle, nettoyé, rien n'a aidé.Cela a fait cependant – Josh

+0

Je ne peux pas accepter votre réponse, je n'ai pas posé la question – Josh

2

Après beaucoup de tentatives j'ai réussi à trouver la raison pour laquelle ce problème se produit. En général, cela est dû à ProGuard et spécifiquement à son optimisation. Au moins dans mon cas, j'ai eu 4 projets corrompus avec cette erreur, mais après avoir désactivé l'optimisation ProGuard, tous ont été construits correctement. Ainsi, dans la configuration de votre ProGuard commenter les -optimizations et -optimizationpasses options et à ajouter -dontoptimize

# -optimizations ... 
# -optimizationpasses 5 

-dontoptimize 

Hope this helps.

+0

J'ai essayé chaque suggéré solution mais c'est la seule qui a fonctionné pour moi –

+0

Mais ce n'est pas si mauvais? Je veux dire suppose que je veux publier mon application.La version non optimisée ne sera-t-elle pas pire que la version optimisée? Ce problème m'est arrivé après que je J'ai fait quelques changements de code, donc je me demande si ProGuard crée de la confusion avec certains nouveaux symboles que j'ai introduits ... – Antinous

Questions connexes