INSTALL_FAILED_DEXOPT hatasını nasıl çözebilirim?


181

Android 2.2 kullanarak bir Android uygulaması geliştiriyorum, uygulamamın APK boyutu 22.5 MB ve Samsung tablet için yeni bir yapı oluşturmak istiyorum. Aşağıdaki hatayı aldım:

INSTALL_FAILED_DEXOPT

Bu tür bir hatayı nasıl çözebilirim?


Bu uygulamayı Samsung tablet dışındaki cihazlara başarıyla yükleyebildiniz mi?
Tate

1
Yükleme başarısız olduğunda oluşturulan logcat çıktısını yapıştırmanız gerekir.
Fadden

Test ettiğim bir cihazda da aynı sorunu yaşadım (HTC Droid Eris). Telefonumda uygulamamın önceden yüklenmiş bir sürümü vardı, yeni kaldırdım ve yeniden yükledim ve iyiydi.
ninjasense

Uygulamayı kaldırıp yeniden yüklemek her zaman işe yarar. Kullanıcı verilerini silme veya AVD'yi yeniden oluşturma aynı şeyi daha zaman alıcı bir şekilde yapıyor. Soru, daha iyi ve daha hızlı bir seçenek var mı?
bschandramohan

7
@ChandraMohan doğru değil. Doğru yapmaya çalışmayı bırak. Cihazımı biçimlendirdim ve uygulamayı yeniden yüklemeye çalıştım. Hala bu hatayı atıyor!
Artiom Chilaru

Yanıtlar:


99

Öykünücüyü 'den yeniden başlatmak ve Android SDK and AVD Managerseçeneği Wipe User Databelirlemek benim için bu sorunu çözdü.

Seçeneği aşağıdaki resimde vurgulanan şekilde bulabilirsiniz:

Android emülatörünü başlatırken Kullanıcı Verilerini Sil seçeneği


17
Ya bir emülatör değil, telefonumsa?
mtmurdock

1
@mtmurdock deneyin adb kill-servero zaman adb start-serversorununuzu çözmelisiniz. Eski uygulama olabilir, ardından önce kaldırın.
Vikas Patidar

@mtmurdock Muhtemelen denediniz, ancak telefonu yeniden başlatmak benim için çalıştı :)
Dunc

Sunucuyu öldür ve sonra başlat benim için işe yaramadı, emülatör yeniden başlatıldı ve Veri Silme aslında benim için çalışıyor.
Shuvo

74

Bu benim için disk alanı ile ilgili görünüyordu. Yeni haddelenmiş 5.1 öykünücüsü "düşük disk alanı" hatasıyla önyükleme yapıyor ve öykünücü özelliklerine bakıldığında, dahili depolama için ayrılan varsayılan alan 800 MB'dir ve bu düşük görünür.

Bu nedenle çözüm bunu arttırmaktı (4GB'a gittim). Garip bir şekilde emülatör hala aynı disk alanı uyarısı ile önyükleme yapıyor, ancak fabrika ayarlarına sıfırlama (Ayarlar -> Emülatör içindeki Yedekleme ve Geri Yükleme) tamamen benim için çözdü.

Varsayılan ayarlarla kutudan çıkmaması biraz tuhaf.


2
Gerçekten bu sorun vardı ve telefon ayarları aracılığıyla sıfırlama benim için sabit. Teşekkürler!
Justin Stanley

1
Hemen hemen her şeyi denedim ama bunun dışında hiçbir şey işe yaramadı, teşekkürler
shehzy

1
2 saat sonra bu yorumu buldum - benim gün tasarruf için teşekkür ederim, çalıştı!
kilian eller

1
Bu da öykünücümde INSTALL_FAILED_DEXOPT'a neden oldu. Boyutu artırdım ama ayarlara gitmem ve fabrika ayarlarına geri dönmem gerekiyordu. Sorunu çözdü.
Dave Thomas

1
Tanrım ... yine Mac OS'umu güncelledikten sonra başıma geldi. Bu çözümün geri ödemesini iki katına çıkar -> ayarlar ve fabrika ayarlarına geri dön. Sadece nasıl düzelttiğimi hatırlamak için bu soruya bakmak zorunda kaldım ... yığın taşması tarih için tanrıya şükür, ve benim yorum bulmak mümkün
Dave Thomas

17

Yüklediğiniz uygulamanın eski sürümünde, bağımlı kitaplıklar / kavanozlar değiştirildi. Uygulamamın yeniden başvuru yaptığı diğer jar dosyalarını güncellerken bu sorunla karşılaştım.

Eski sürümünüzü kaldırmanız gerekecek ve daha fazla sorununuz olmayacak ...

Ayarlar -> Uygulamalar -> Uygulamaları Yönet -> [Uygulamanızı Bulun ve Kaldırın]

INSTALL_FAILED_DEXOPT hataları çıkmamalıdır. Sevmek

[2011-06-14 01:23:40 - ProtectYourself] Installing ProtectYourself.apk...
[2011-06-14 01:24:26 - ProtectYourself] Installation error: INSTALL_FAILED_DEXOPT
[2011-06-14 01:24:26 - ProtectYourself] Please check logcat output for more details.
[2011-06-14 01:24:26 - ProtectYourself] Launch canceled!

Vay canına.


Sebebi ve efekti kabul edebilirim. Aynı durum benim durumumda kavanozlarla uğraştıktan sonra da oldu. Benim için bu sadece Android 2.3 Gingerbread tabanlı cihazlarda, ICS ve Lollipop iyiydi.
AlexVPerl

Play Store'a yüklerken bu bir sorun olacak mı? veya yükleyici uygulamayı silip yeniden yüklüyor mu?
Eduardo Naveda

14

Android Studio kullanıyorsanız projenizi temizlemeyi deneyin:

Yapım> Projeyi Temizle


12

Bu hata mesajının birçok farklı nedeni olabilir gibi görünüyor. Karşılaştığım durum gerçek bir cihazdaydı (bu yüzden emülatör taban çözümleri geçerli değildi).

Temel olarak, bu olduğunda, Logcat filtrenizi Ayrıntılı veya Uyar olarak ayarlayın neden hakkında daha fazla bilgi almanıza yardımcı olacak .

Benim durumumda, üzerinde çalıştığım projeye (mevcut büyük bir kod temeli) JUnit'in birden çok veya çakışan sürümleri dahil ediliyordu. Dağıtmaya çalıştığım Android uygulamasının bağımlılık olarak birkaç kütüphane projesi vardı ve yanlışlıkla birden fazla JUnit jar dosyası içerecek şekilde ayarladım.

Bunu bir dizi Logcat mesajına dayanarak keşfettim. UYARI satırının nedeni verdiğini unutmayın:

DEBUG/dalvikvm(4808): DexOpt: 'Ljunit/framework/TestSuite$1;' has an earlier definition; blocking out
11-06 14:30:10.973: WARN/dalvikvm(4808): Invalid file flags in class Ljunit/runner/Sorter$Swapper;: 0209
11-06 14:30:10.973: null/libc(4808): Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1), thread 4808 (dexopt)

3
Bu iyi bir öneri. Gerçek hata iletisinin ne olduğunu görmek için LogCat çıktısını görüntülemeniz gerektiğini kabul ediyorum. Bu hatayı alıyordum ve cihazımın depolama alanı az olduğu ve APK'nın sıkıştırmasını açamamış olmasıydı. Bu hatanın tetiklenmesinin birden fazla nedeni olduğunu ve kullanıcı verilerinin kaldırılması veya silinmesinin gereksiz olabileceğine inanıyorum. Aynı öneriyi benzer (yinelenen) bir soruya cevap olarak gönderdim.
Bryan Bedard

2
ÜZGÜNÜZ, BU Bryan Bedard'ın YAPTIĞI AYNI NOKTA. Boş alanım kalmadı - genellikle "yetersiz alan" gibi bir hata alıyorum, ancak bir nedenden dolayı bu DEXOPT hatasını aldım. Logcat bir hata gösterdi Zip şişirme: yazma başarısız oldu: Cihazda boş alan kalmadı.
mobibob

12

Android Studio 3.4.1 ile daha eski (5.0) bir emülatör kullanarak buna koştum. Bu prosedür (Mac'te) sorunu çözdü:

  1. emülatörü durdur
  2. cd ~ / .android / avd / [öykünücü adı] .avd
  3. rm *. kilit
  4. emülatörü sil
  5. öykünücüyü başlat

3
Emülatörün dahili depolamasını 4 gb'ye çıkardıktan sonra yukarıda belirtilenleri yapmak benim için çalışan tek şey.
dell116

@ dell116 Bazen bu sorunun tüm farklı cevaplarına dayanarak birden fazla şeyin yapılması gerektiğine şaşırmadım!
Ken

3
Kabul! Ve "Ken" kullanıcı adını taktığınız için tebrikler.
dell116

Ne yazık ki, silme / depolama / silme kombinasyonlarının hiçbiri bana yardımcı olmadı. Pes ettim.
Can Poyrazoğlu

1
@ CanPoyrazoğlu - Ben de neredeyse pes ettim. Bence emülatörler son derece hassas olmalı ve birçok şey başarısız olmalarına neden olabilir (burada sekiz yıldan fazla bir süre önce sorulan bir soruya verilen tüm farklı cevapların kanıtladığı gibi). Benim durumumda .lock dosyalarını kaldırmak önemliydi, ama bunun tüm sorunları çözemeyebileceğini kesinlikle görebiliyorum.
Ken

11

Emülatörün RAM boyutunu ve dahili depolama kapasitesini değiştirdim Şimdi Tutulma AVD yöneticisinde IT IS Working ... çalışıyor


2
Bu, Android Studio'daki sorunu da çözer. Yalnızca 200Mb dahili depolama alanım vardı. 1 GB'a kadar yükseltin ve sorun çözüldü. Aynı mesaj hatası ... Teşekkürler !!
Joan Casadellà

Benim için de çalışıyor. 200 MB'tan yükseltin!
JohnyTex

10

cevabımı dene https://stackoverflow.com/a/34918549/3737254

android studio 2.0 kullanıyorsanız, anında çalışmayı devre dışı bırakın.

FYI, anında çalıştırma android studio 2.0'ın yeni özelliğidir (hiç kullanmadım>. <)

nasıl devre dışı bırakılır: tercihler -> derleme, yürütme ve dağıtım -> anında çalıştırma -> devre dışı bırakma, ardından sihir gibi çalışır

Zevk almak!


Benim emülatörde eski API'leri test ederken bu benim sorunumdu. Bunu ve emülatörü temiz bir şekilde değiştirdikten sonra işe yaradı!
Ben

8

Sorunu çözmek için Anında Çalıştırmayı devre dışı bırakmam gerekiyordu. OS X'te Anında Çalıştırmayı devre dışı bırakmak için Android Studio > Tercihler > Oluştur, Yürütme, Dağıtım > Anında Çalıştır'a gidin ve onay işaretini kaldırın Enable Instant Run to hot swap code/resource changes on deploy (default enabled).


Bu benim için çalıştı dexopt error. Application failed to install. Bunu bulmadan önce bunları denedim: adb kill-server adb start-serverAndroid Studio'yu yeniden başlatma ve Cihazımı fabrika ayarlarına sıfırlama.
Sherlock

7

Bunu düzeltmek için çalışan tek çözüm, VM'nin RAM'ini 4GB'a çıkarmaktı.


6

Bugün aynı sorunu yeni bir sanal cihazda Android Studio ile yaşadım. x86_64Görüntüyü indirmiştim , eşdeğeri ile VD'yi yeniden oluşturdumx86 görüntü .

INSTALL_FAILED_NO_MATCHING_ABISBu durumda bir almayı bekledim ama bir şekilde sıkıştımINSTALL_FAILED_DEXOPT


1
Benim için tam tersi oldu. Tarihinde yüklenmeye çalışılamadı x86. Görüntüyü indirdikten ve emülatörü değiştirdikten x86_64sonra hata giderildi. API 21 sistem görüntüsünü kullandım.
friederbluemle

Bunun tersi de benim için çalıştı. x86_64Görüntüyü bir yerine kullanmaya çalışmadan önce bu iş parçasındaki her şeyi denedim x86. Ayrıca bir API 21 AVD (Nexus 5) kullanıyordum.
Renan Ferrari

5

Android Studio ile çalışıyorum ve aynı hatayla karşılaştım.

Ana Modül'ün oluşturma klasörünü silmek yardımcı oldu. Her şeyi sildikten sonra normale dönün.


4

INSTALL_FAIL_DEXOPT genellikle classes.dex için verilen sınırla ilgilidir. ICS öncesi dexopt 5 MB üzerindeki herhangi bir şeyde başarısız olacaktır. Android'in son sürümlerinde 8 veya 16 MB arabellek kullanılıyor.

APK'nızda classes.dex'in boyutunu kontrol edin. Dex'in 65536 yöntem / alan sınırına sahip olması nedeniyle yöntem sayınızın ne olduğunu görmek de iyi olur.


Referanslar:

Uygulama yüklenirken hata oluştu (INSTALL_FAILED_DEXOPT)

https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920

Kod küçültme - Dex'te 65k yöntem sınırı


3

Ben build ( ) jumboMode bayrağı etkinleştirdikten sonra bu sorunla karşılaştı dex.force.jumbo=true. Yeni Android cihazlarda her şey iyi çalıştı, ancak Gingerbread'e kurulum başarısız oldu.

Uygulamanız can sıkıcı 65k kısıtlaması nedeniyle jumbo modu gerektiriyorsa, kullanılmayan bazı kodları / dizeleri kesmeyi ve jumbo modunu tekrar false olarak ayarlamayı deneyin.


Ayrıca jumbo modunu etkinleştirdim ve eski cihazlarda test ederken bunu görmeye başladım. Maalesef yanlış değere geri dönmek sorunu benim için çözmedi. APK küçültmek için koruma kullanarak yaptı.
slott

Aynı sorunla karşılaştık, Jumbo Mode API 10 ile çalışmıyor
Henrique de Sousa

3

classes.dexfinale kalmaz .apk. gradlew --offline clean && gradlew --offline assembleDebugHer zaman benim için sabit şeyler çalıştırıyorum . Bu noktadan sonra uygulamayı tekrar Android Studio'dan başlatmaya başlayabilirsiniz.

EDIT: Yukarıda söylediğimden önce Görev Yöneticisi'ne gidin ve hepsini cmd.exeve conhost.exesüreçleri (ya da sadece aaptsıkışmış olanı) öldürün . Aksi takdirde aapt, rezil hatayla komut satırından başlatıldığında bundan sonra çökecekti -1073741819.


Takdir: En yeni yapı araçlarının (2.1.1) ve kepçe eklentisinin (1.0.0-rc1) bir cazibe gibi çalıştığını belirtmeye değer
Eugen Pechanec 9:00

Bunu bilmiyorum, ben sadece android studio 1.0 yükledim ve işe almak için bunu yapmak zorunda kaldı.
axnsan

Tüm java.exe dosyalarını da öldürmeyi deneyin. Ne kadar RAM'iniz var? Aşağıdakilerin en son sürümüne sahip olduğunuzdan emin olun: Android Studio 1.0.0-rc4, gradle android eklentisi 1.0.0-rc1, oluşturma araçları 21.1.1. Hatayı bir süredir görmedim.
Eugen Pechanec

Derleme araçları 21.1.1, android studio 1.0 ve gradle eklentisi sürümünü nasıl bulacağımı bilmiyorum. Ben sadece android geliştiriciler sitesinde dün görünen 1.0 sürümünü
indirdim

Kök proje build.gradledosyanıza bakın. Buildscript bağımlılıkları arasında olmalıdır classpath 'com.android.tools.build:gradle:1.0.0-rc4'.
Eugen Pechanec

3

Aynı hatayı aldım ve dahili depolama alanının boyutunu artırarak düzelttim.

Dahili depolama başlangıçta 32MB olarak ayarlandı (biliyorum) ve daha sonra üzerine yüklenmek için gerekenden daha az alan bırakan birkaç apks yükledim.


3

cihazınızdaki depolama alanını doğrulayın


2
Bu, sanal cihazımın koç ve alanını arttırdım, sonra sorun çözüldü.
Wesely

2

Uygulamayı kaldırdım ve yine de INSTALL_FAILED_DEXOPT hatasını aldım. Android Studio / gradle ile çalışıyorsanız: gradle clean benim için hile yaptı, Cheers.


Gradlew kullanmak zorunda kaldım, ama hey işe yaradı! teşekkürler (ayrıca veri / veri paketi de kaldırıldı)
Maxim Geerinck

2

build.gradle değişiklik derlenmiş ve son sürümüne inşa. ve benim için çalıştı.

================

android {
    compileSdkVersion 22
    buildToolsVersion "22"

2

burada birçok cevap var, ama belki gerçek cihazla bu sorunu yaşadığım birine yardımcı olabilir ve sorun D8 ile oldu

bunu gradle.properties'e eklemeyi dene ve benim için çalışıyor

android.enableD8=false
android.enableD8.desugaring= false

1

2.3 cihaza (4.0.3 sürümünde) yüklemeye çalışırken bu sorunu alıyordum. En O bakıldığında zaten android örn HttpClient ve XML ayrıştırıcıları vb şeyler için vardı vardı birden kavanozları kullanıyordum bir lib projesi nedeniyle olmanın sona erdi logcato önceden olma nedeniyle kendilerine sınıfları atlayarak edildi söylüyordu olarak bu bulmak götürdü mevcut. Orada güzel yararsız orijinal hata!


2
Aynı problemim var, bu sorunu nasıl çözdüğünüzü anlatabilir misiniz? Lbs boyutu 7 mb'den fazla var, bu yüzden 2.3 gibi önceki cihaza yüklememe izin vermiyor.
Rakki s

Benim durumumda apk oluşturmak için gradle build kullanıyordum ve suçlu bouncy-castle sağlayıcı kavanozu idi. Modül 'bcprov-jdk' kök projesinin derleme bağımlılıklarını dışlamak zorunda kaldım.
Pawan

1

Bu hata testini gerçek bir cihazda yaptım. Önbelleği temizlemek / kaldırmak, her şeyi yeniden başlatmak benim için işe yaramadı, oluşturma klasörünün içeriğini silmek işe yaradı :) (Android studio)


1

Genel bir çözüm yoktur, bulabilmek için Logcat'inizde bildirilen hatayı bulmanız gerekir. Bazen, örneğin belirtilen Hedef API'de bulunmayan bir sınıfın kullanımı nedeniyle 'dexed edilemeyen' bir sınıftır. Veya kodunuzda referans yaptığınız bir sınıf olabilir, ancak içinde bulunduğu kütüphane paketlenmemiştir.


1

APK'nızı küçültmek için koruma kullanın. Eski bir Samsung Galaxy Ace 2.3.6 cihaza kod korumalı olarak küçülmeden / optimize etmeden büyük bir 25MB + APK yüklemeye çalışırsam aynı sorunu yaşıyorum.

Jumbo modu ve cihazın yeniden başlatılması çalışmıyor.



1

targetSdkVersion 22 // 17 ==========================> bu cihazı cihazlarda Android işletim sistemi sürümüne eşit veya daha az ayarlamak yardımcı olabilir

 defaultConfig {
        applicationId "software.nhut.personalutilitiesforlife"
        minSdkVersion 16
        targetSdkVersion 22//17==========================> set this number less then or equal to the version of Android OS on devices might help
        versionCode 5
        versionName "1.26"
        // Enabling multidex support.
        multiDexEnabled true
    }

0

Benim yöntem adları (her şey, kopya / bir powerpoint dosyasından yapıştırma nedeniyle) Dalvik hoşlanmadığı bazı Unicode karakterler olduğunda bu sorun vardı. APK'yı yüklemeye çalışırken Logcat çıktısına bakarak bunu görebilirsiniz.

Bu gerçek bir cihazdaydı.


0

Telefondaki tarih saatini düzelterek (bazı varsayılan tarih 01.01.1980 idi) ve projeyi temizleyerek çözüldü.


0

SDK 21 için android sürüm 4 desteğimi değiştirmiştim ve bu hatayla karşılaştım. Bu yüzden eski sürümün (21'den önce) destek sürümüne geri döndüm ve işe yaradı. Hata sadece android 2.3'te meydana geliyordu


0

Yeni derleme araçlarını 24.0.1 güncellemeye çalışırken bu sorunla karşılaştım. İnternet bağlantısı kesildi ve araçlar başarıyla indirilmedi, bundan sonra bu hatayı aldım ve çözmeye çalışmak için çok zaman harcadım. Ama inşa araçlarını başarıyla güncellediğimde - problem çözüldü. İyi şanslar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.