2013-04-11 12 views
13

Bu sorunun bir biçiminin olduğunu biliyorum, ancak senaryouma uyan özel bir şey bulamıyorum, işte burada.Dalvik biçimine dönüştürme, dışa aktarma işleminde Android'de hata 1 ile başarısız oldu (adt 21)

Uygulamam, emülatörde test yaparken derhal çalışıyor ve çalışıyor, ancak imzalı bir apk vermeyi denediğimde Conversion to Dalvik format failed with error 1'u elde ediyorum. Eclipse hata günlüğü bu yığın izleme gösterir: Başkalarının sahip olmak (en azından yanlışlıkla böylece demiyor) görünüyor

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) 

Ben adlandırma çakışmalarını yok ve ben olarak stumped neden emülatörde çalışıyor, ancak ihracat yapamıyorum.

Bu arada ProGuard'ı kullanmıyorum.

+0

Ziyaret o u yardımcı olabilir http://stackoverflow.com/questions/2680827/conversion-to-dalvik-format-failed-with-error-1-on-external-jar?rq= 1 – manish

+0

Bu durumda bana ne yardımcı olur: "bin" klasörünün tüm içeriğini sil, projeyi temizle, test cihazında uygulamayı çalıştır, imzalı sürüm oluşturmayı tekrar oluştur. – datayeah

cevap

27

ADT 21, derlenmiş dex koduna kavanozlar ve kitaplıklar yerleştirerek dağıtımı hızlandırması gereken dexedLib adında bir klasör ekler. Orada destek kütüphanesinin iki sürümü vardı, bu yüzden klasördeki tüm dosyaları sildim ve tekrar oluşturdum ve çalıştı. Orada herhangi bir dosya ile oluşturmaya çalışırsanız, yapı başarısız olsa da, her bir ihracattan önce bunları silmek zorundayım. ActionBar Sherlock kullanıyorum ve dexedLibs şeyiyle çakışıyor olabilir, çünkü klasör başlangıçta boş olmadıkça orada görünmeyecektir.

Düzenleme: Bu sorun ilk olarak gündeme geldi, ancak son zamanlarda ActionBarCompat geçiş yaptı zaman ActionBarSherlock kullanarak olmuştu. Geçişten sonra, ihraç ederken dexedLibs klasörünü silmek zorunda değilim. Görünüşe göre ActionBarSherlock suçlandı, ama emin olamam.

+8

Çözüldü! Sadece dışa aktarmadan önce 'bin' klasöründen' bin' klasöründen 'dexedLibs' klasörünü sildi –

+0

ADT 22 ile aynı sorun vardı ve bu iş yaptı! –

+0

Harika teşekkürler! Dışa aktarmadan önce dexedLibs klasörünün silinmesi bana yardımcı oldu! –

12

Projeye gidin ve Otomatik Olarak Oluştur seçeneğinin işaretini kaldırın. Ardından projeyi temizleyin ve Tümünü oluştur. İmzalı uygulama paketini dışa aktarma için çalıştım

+1

Depodaki her şeyimi sildim, temizledim, hiçbir şey yardım etmedi.Ya bunu yaptı! – Josh

+0

Cevabınızı kabul edemiyorum, soru sormadım. – Josh

2

Çok fazla denemeden sonra, bu sorunun nedenini bulmayı başardım. Genel olarak, bu ProGuard ve özellikle onun optimizasyonu neden olur. En azından benim durumumda bu hata ile 4 bozuk proje vardı, ancak ProGuard optimizasyonunu devre dışı bıraktıktan sonra, hepsi doğru bir şekilde oluşturuldu. Yani, ProGuard config -optimizations yorum yapabilir ve seçenekler -optimizationpasses ve bu yardımcı olur -dontoptimize

# -optimizations ... 
# -optimizationpasses 5 

-dontoptimize 

Umut ekleyin. Aynı soru tartışma için buraya

+0

Her önerilen denedim çözüm ancak bu benim için çalışan sadece bir tanesidir –

+0

Ama bu kötü değil mi? Uygulamamı yayınlamak istediğimi varsayalım. En iyi duruma getirilmiş sürüm optimize edilmiş versiyondan daha kötü değil mi? Bazı kod değişiklikleri yaptım, bu yüzden ProGuard'ın tanıttığım bazı yeni sembolleri karıştırıp karıştırmadığını merak ediyorum ... – Antinous

İlgili konular