Bagaimana cara mengatasi kesalahan INSTALL_FAILED_DEXOPT?

181

Saya mengembangkan aplikasi Android menggunakan Android 2.2, ukuran APK aplikasi saya adalah 22,5 MB, dan saya ingin membuat build baru untuk tablet Samsung. Saya mendapat kesalahan berikut:

INSTALL_FAILED_DEXOPT

Bagaimana cara mengatasi kesalahan semacam ini?

john
sumber
apakah Anda berhasil menginstal aplikasi ini di perangkat selain tablet Samsung?
Will Tate
1
Anda perlu menempelkan output logcat yang dihasilkan saat instalasi gagal.
fadden
Saya memiliki masalah yang sama pada perangkat yang saya uji (HTC Droid Eris). Saya memiliki versi aplikasi saya yang sebelumnya terinstal di telepon, saya hanya menghapus dan menginstal ulang dan itu baik-baik saja.
ninjasense
Menghapus dan menginstal ulang aplikasi selalu berfungsi. Menghapus data pengguna atau membuat ulang AVD semuanya melakukan hal yang sama dengan lebih memakan waktu. Pertanyaannya adalah, apakah ada opsi yang lebih baik dan lebih cepat?
bschandramohan
7
@ChandraMohan itu TIDAK benar. Berhentilah mencoba mewujudkannya. Saya telah memformat perangkat saya dan mencoba menginstal ulang aplikasi. Masih melempar kesalahan ini!
Artiom Chilaru

Jawaban:

99

Restart emulator dari Android SDK and AVD Managerdan memilih opsi Wipe User Datatelah menyelesaikan masalah ini untuk saya.

Anda dapat menemukan opsi seperti yang disorot pada gambar di bawah ini:

Hapus opsi Data Pengguna saat memulai emulator android

Vikas Patidar
sumber
17
Bagaimana jika itu telepon saya, dan bukan emulator?
mtmurdock
1
@mtmurdock coba adb kill-servermaka adb start-serverharus menyelesaikan masalah Anda. Mungkin ada aplikasi yang lebih lama, lalu copot dulu.
Vikas Patidar
@ mtmurdock Anda mungkin sudah mencoba, tetapi menghidupkan kembali telepon bekerja untuk saya :)
Dunc
bunuh server dan kemudian mulai tidak bekerja untuk saya, restart emulator dan Menyeka Data bekerja untuk saya sebenarnya.
Shuvo
74

Ini sepertinya terkait dengan ruang disk untuk saya. Emulator 5.1 yang baru digulung mem-boot dengan kesalahan "low on disk space" - dan melihat properti emulator, ruang default yang dialokasikan untuk penyimpanan internal adalah 800MB yang tampaknya rendah.

Solusi, karena itu adalah untuk meningkatkan ini (saya pergi ke 4GB). Anehnya emulator masih melakukan booting dengan peringatan ruang disk yang sama tetapi pengaturan ulang pabrik (Pengaturan -> Cadangkan dan Kembalikan di dalam emulator) menyelesaikannya sepenuhnya untuk saya.

Agak aneh bahwa itu tidak bekerja di luar kotak dengan pengaturan default.

HughHughTeotl
sumber
2
Memang ini yang masalah saya miliki dan reset melalui pengaturan telepon memperbaikinya untuk saya. Terima kasih!
Justin Stanley
1
Sudah
1
Setelah 2 jam saya menemukan komentar ini - terima kasih telah menyelamatkan hari saya, berhasil!
kilian eller
1
Ini menyebabkan INSTALL_FAILED_DEXOPT pada emulator saya juga. Saya telah menambah ukuran tetapi saya harus pergi ke pengaturan dan menjalankan pengembalian pabrik. Itu memperbaiki masalah.
Dave Thomas
Ya Tuhan ... sekali lagi ini terjadi pada saya setelah memperbarui OS mac saya. Menggandakan pada saya penggantian solusi goto -> pengaturan dan menjalankan pengembalian pabrik. Harus mencari pertanyaan ini hanya untuk mengingat bagaimana saya memperbaikinya ... terima kasih Tuhan atas sejarah stack overflow, dan saya dapat menemukan komentar saya
Dave Thomas
17

Versi lama aplikasi yang Anda instal memiliki pustaka / guci yang tergantung yang telah diubah. Saya mengalami masalah ini ketika memperbarui file jar lain yang sedang direfrensikan oleh aplikasi saya.

Anda harus mencopot pemasangan versi lama Anda dan kemudian Anda tidak akan memiliki masalah lagi ...

Pengaturan -> Aplikasi -> Kelola Aplikasi -> [Temukan dan Copot Aplikasi Anda]

INSTALL_FAILED_DEXOPT kesalahan tidak boleh meletus. Suka

[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!

Whoo hoo.

Lenn Dolling
sumber
Saya bisa menyetujui sebab & akibatnya. Situasi yang sama terjadi dalam kasus saya setelah bermain-main dengan toples. Bagi saya ini hanya pada perangkat berbasis Android 2.3 Gingerbread, ICS & Lollipop baik-baik saja.
AlexVPerl
Apakah ini akan menjadi masalah saat mengunggah ke Play Store? atau apakah penginstal menghapus aplikasi dan menginstal ulang?
Eduardo Naveda
14

Jika Anda menggunakan Android Studio , coba bersihkan proyek Anda:

Build> Clean Project

SandroMarques
sumber
12

Sepertinya pesan kesalahan ini dapat memiliki banyak penyebab berbeda. Kasing yang saya temui adalah pada perangkat nyata (jadi solusi basis emulator tidak berlaku).

Pada dasarnya, ketika ini terjadi, atur filter Logcat Anda ke Verbose atau Peringatkan , yang akan membantu Anda mendapatkan lebih banyak informasi tentang penyebabnya.

Dalam kasus saya, beberapa versi JUnit yang bertentangan atau sedang dimasukkan dalam proyek yang saya kerjakan (basis kode besar yang ada). Aplikasi Android yang saya coba gunakan memiliki beberapa proyek perpustakaan sebagai dependensi, dan saya keliru mengatur berbagai hal untuk memasukkan beberapa file jar JUnit.

Saya menemukan ini berdasarkan serangkaian pesan Logcat. Perhatikan bahwa garis WARN memberi penyebab:

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)
wsanville
sumber
3
Ini saran yang bagus. Saya setuju bahwa Anda harus melihat keluaran LogCat untuk melihat apa pesan kesalahan yang sebenarnya. Saya mendapatkan kesalahan ini dan itu karena perangkat saya kekurangan penyimpanan dan gagal membuka zip APK. Saya percaya ada beberapa alasan mengapa kesalahan ini dapat dipicu dan menghapus atau menghapus data pengguna mungkin tidak perlu. Saya memposting saran yang sama ini sebagai jawaban untuk pertanyaan serupa (duplikat).
Bryan Bedard
2
MAAF, INI ADALAH TITIK SAMA YANG MEMBUAT Bryan Bedard. Saya kehabisan ruang - biasanya, saya mendapatkan kesalahan seperti "ruang tidak cukup", tetapi untuk beberapa alasan saya mendapat kesalahan DEXOPT ini. Logcat menunjukkan kesalahan Peningkatan pos: penulisan gagal: Tidak ada ruang tersisa di perangkat.
mobibob
12

Mengalami hal ini dengan Android Studio 3.4.1 tetapi menggunakan emulator yang lebih lama (5.0). Prosedur ini (pada Mac) memperbaiki masalah:

  1. hentikan emulator
  2. cd ~ / .android / avd / [nama emulator] .avd
  3. rm * .kunci
  4. menghapus emulator
  5. mulai emulator
Ken
sumber
3
Melakukan apa yang disebutkan di atas setelah meningkatkan penyimpanan internal emulator menjadi 4gb adalah satu-satunya hal yang bekerja untuk saya.
dell116
@ dell116 Saya tidak terkejut bahwa kadang-kadang lebih dari satu hal harus dilakukan, hanya berdasarkan semua jawaban yang berbeda untuk pertanyaan ini!
Ken
3
Sepakat! Dan selamat atas tersangkut nama pengguna "Ken".
dell116
Sayangnya tidak ada kombinasi dari menyeka / meningkatkan penyimpanan / menyeka lagi membantu saya. Aku menyerah.
Can Poyrazoğlu
1
@ CanPoyrazoğlu - Saya hampir menyerah juga. Saya pikir emulator harus sangat sensitif dan banyak hal dapat menyebabkan mereka gagal (sebagaimana dibuktikan oleh semua jawaban berbeda di sini untuk pertanyaan yang diajukan lebih dari delapan tahun yang lalu). Menghapus file .lock adalah kunci dalam kasus saya, tapi saya pasti bisa melihat di mana itu mungkin tidak menyelesaikan semua masalah.
Ken
11

Saya mengubah ukuran RAM dan kapasitas penyimpanan internel dari emulator Sekarang ITU Bekerja ... dalam gerhana manajer AVD

KATJ Srinath
sumber
2
Ini juga memecahkan masalah di Android Studio. Saya hanya memiliki penyimpanan internal 200Mb. Naik hingga 1GB dan masalah terpecahkan. Kesalahan pesan yang sama ... Terima kasih !!
Joan Casadellà
Bekerja untuk saya juga. Naikkan dari 200MB!
JohnyTex
10

coba jawabanku https://stackoverflow.com/a/34918549/3737254

Jika Anda menggunakan Android Studio 2.0, Nonaktifkan menjalankan instan.

FYI, jalankan instan adalah fitur baru dari android studio 2.0 (saya tidak pernah menggunakannya>. <)

cara menonaktifkan: preferensi -> pembangunan, eksekusi & penyebaran -> jalankan instan -> nonaktifkan, kemudian bekerja seperti sulap

Nikmati!

yfsx
sumber
Ini adalah masalah saya saat menguji API lama pada emulator. Setelah mengubah ini dan bersihkan emulator itu berhasil!
Ben
8

Saya perlu menonaktifkan Instant Run untuk memperbaiki masalah ini. Untuk menonaktifkan Instant Run pada OS X, buka Android Studio > Preferences > Build, Execution, Deployment > Instant Run kemudian hapus centang dari Enable Instant Run to hot swap code/resource changes on deploy (default enabled).

iamkaan
sumber
Ini berhasil untuk saya dexopt error. Application failed to install. Saya sudah mencoba ini sebelum menemukan ini adb kill-server adb start-server:, me-restart Android Studio, dan Factory mengatur ulang perangkat saya.
Sherlock
7

Satu-satunya solusi yang berhasil bagi saya untuk memperbaikinya adalah meningkatkan RAM VM menjadi 4GB.

Jim
sumber
6

Saya memiliki masalah yang sama hari ini dengan Android Studio pada perangkat virtual baru. Tampaknya saya telah mengunduh x86_64gambar, membuat ulang VD dengan x86gambar yang setara memperbaikinya.

Saya berharap mendapatkan INSTALL_FAILED_NO_MATCHING_ABISdalam kasus ini tapi entah bagaimana saya terjebakINSTALL_FAILED_DEXOPT

dvkch
sumber
1
Bagi saya itu sebaliknya. Mencoba menginstal x86gagal. Setelah mengunduh gambar dan mengubah emulator ke x86_64kesalahan sudah hilang. Saya menggunakan gambar sistem API 21.
friederbluemle
Yang sebaliknya juga bekerja untuk saya. Sudah mencoba semua yang ada di utas ini sebelum mencoba menggunakan x86_64gambar alih-alih yang x86satu. Saya juga menggunakan AVD API 21 (Nexus 5).
Renan Ferrari
5

Saya bekerja dengan Android Studio dan memiliki kesalahan yang sama.

Menghapus folder build dari Modul utama membantu. Setelah menghapus semuanya kembali normal.

Informatic0re
sumber
4

INSTALL_FAIL_DEXOPT biasanya ada hubungannya dengan batas yang ditempatkan pada classes.dex. Pada apa pun pra-ICS, dexopt akan gagal pada apa pun di atas 5 MB. Versi terbaru Android menggunakan buffer 8 atau 16 MB.

Periksa ukuran class.dex di APK Anda. Akan lebih baik untuk melihat apa penghitungan metode Anda, karena dex memiliki batas metode / bidang 65536.


Referensi:

Kesalahan saat memasang aplikasi (INSTALL_FAILED_DEXOPT)

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

Cara mengecilkan kode - 65k batas metode dalam dex

Jared Rummler
sumber
3

Saya mengalami masalah ini setelah mengaktifkan flag jumboMode di build ( dex.force.jumbo=true). Semuanya bekerja dengan baik pada perangkat Android yang lebih baru, tetapi instalasi gagal di Gingerbread.

Jadi jika aplikasi Anda memerlukan mode jumbo karena pembatasan 65k yang mengganggu, cobalah memotong beberapa kode / string yang tidak digunakan dan mengatur mode jumbo kembali ke false.

friederbluemle
sumber
Saya juga baru saja mengaktifkan mode jumbo dan mulai melihat ini ketika menguji pada perangkat lama. Sayangnya kembali ke false tidak menyelesaikan masalah bagi saya. Menggunakan proguard untuk mengecilkan APK lakukan.
slot
Kami mengalami masalah yang sama, Mode Jumbo tidak bekerja dengan API 10
Henrique de Sousa
3

classes.dextidak sampai ke final .apk. Menjalankan gradlew --offline clean && gradlew --offline assembleDebughal-hal yang diperbaiki untuk saya setiap saat. Dari titik itu Anda dapat mulai meluncurkan aplikasi dari Android Studio lagi.

EDIT: Sebelum apa yang saya katakan di atas pergi ke Task Manager dan bunuh semua cmd.exedan conhost.exeproses (atau hanya yang aaptmacet). Kalau tidak, aaptakan crash mulai sekarang ketika diluncurkan dari baris perintah dengan kesalahan terkenal -1073741819.

Eugen Pechanec
sumber
Dihormati: D layak disebutkan bahwa alat bangun terbaru (2.1.1) dan plugin gradle (1.0.0-rc1) bekerja seperti pesona
Eugen Pechanec
Yah saya tidak tahu tentang itu, saya baru saja menginstal android studio 1.0 dan harus melakukan ini untuk membuatnya bekerja
axnsan
Coba bunuh semua java.exe juga. Berapa banyak RAM yang Anda miliki? Pastikan Anda memiliki versi terbaru dari yang berikut: Android Studio 1.0.0-rc4, plugin android gradle 1.0.0-rc1, build tools 21.1.1. Saya belum melihat kesalahan untuk beberapa waktu sekarang.
Eugen Pechanec
Build tools adalah 21.1.1, android studio 1.0, dan saya tidak tahu bagaimana menemukan versi plugin gradle. Saya baru saja mengunduh rilis 1.0 yang muncul kemarin di situs pengembang android ...
axnsan
Lihat di build.gradlefile proyek root Anda . Di antara dependensi buildscript harus ada classpath 'com.android.tools.build:gradle:1.0.0-rc4'.
Eugen Pechanec
3

Saya mendapatkan kesalahan yang sama dan memperbaikinya dengan meningkatkan ukuran penyimpanan internal.

Penyimpanan internal awalnya diatur ke 32MB (saya tahu) dan kemudian saya menginstal beberapa apks di atasnya, yang telah meninggalkan lebih sedikit ruang daripada yang dibutuhkan untuk menginstal satu.

binRAIN
sumber
3

verifikasi ruang penyimpanan pada perangkat Anda

Farido mastr
sumber
2
Ini membantu, saya telah meningkatkan ram dan ruang perangkat virtual saya, kemudian masalah terpecahkan.
Wesely
2

Saya telah menghapus aplikasi dan mendapatkan kesalahan INSTALL_FAILED_DEXOPT. Jika Anda bekerja dengan Android Studio / gradle: gradle clean melakukan trik untuk saya, Ceria.

JacksOnF1re
sumber
Saya harus menggunakan gradlew, tapi hei itu berhasil! terima kasih (juga menghapus paket dalam data / data)
Maxim Geerinck
2

di build.gradle ubah dikompilasi dan bangun ke versi terbaru. dan itu berhasil untuk saya.

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

android {
    compileSdkVersion 22
    buildToolsVersion "22"
riseres
sumber
2

banyak jawaban di sini, tapi mungkin bisa membantu seseorang yang saya punya masalah dengan perangkat nyata dan masalah dengan D8

coba tambahkan ini ke properti gradle.propu dan itu berfungsi untukku

android.enableD8=false
android.enableD8.desugaring= false
NataTse
sumber
1

Saya mendapatkan masalah ini ketika mencoba menginstal pada perangkat 2.3 (baik pada 4.0.3). Itu berakhir menjadi karena proyek lib saya menggunakan memiliki beberapa guci yang untuk hal-hal yang sudah di android misalnya HttpClient dan parser XML dll Melihat logcatmembawa saya untuk menemukan ini seperti itu mengatakan itu melompat-lompat kelas karena mereka sudah menjadi menyajikan. Kesalahan asli yang bagus dan tidak membantu di sana!

Dori
sumber
2
Saya memiliki masalah yang sama dapatkah Anda menjelaskan bagaimana Anda mengatasi masalah itu. Saya Memiliki ukuran libs lebih dari 7 mb sehingga tidak memungkinkan saya untuk menginstal di perangkat sebelumnya seperti 2.3.
Rakki s
Dalam kasus saya, saya menggunakan gradle build untuk membuat apk dan pelakunya adalah toples penyedia kastil. Saya harus mengecualikan modul 'bcprov-jdk' dalam dependensi kompilasi proyek root.
Pawan
1

Saya mengalami pengujian kesalahan ini pada perangkat nyata. Mengosongkan cache / mencopot pemasangan, memulai kembali semuanya tidak berfungsi untuk saya, menghapus isi folder build tidak :) (Android studio)

Giroskop
sumber
1

Tidak ada solusi umum, Anda harus menemukan kesalahan yang dilaporkan pada Logcat Anda untuk dapat mengetahuinya. Kadang-kadang itu adalah kelas yang tidak bisa 'dihapus' karena penggunaan kelas tidak tersedia di Target API yang ditentukan misalnya. Atau bisa jadi kelas yang Anda rujuk dalam kode Anda, tetapi perpustakaan yang ada di dalamnya tidak sedang dikemas.

Alécio Carvalho
sumber
1

Pertimbangkan untuk menggunakan proguard untuk mengecilkan APK Anda. Saya memiliki masalah yang sama jika saya mencoba menginstal + 25MB besar APK pada perangkat Samsung Galaxy Ace 2.3.6 lama tanpa menyusut / mengoptimalkan kode dengan proguard.

Mode jumbo dan me-restart perangkat tidak berfungsi.

slott
sumber
1

targetSdkVersion 22 // 17 ==========================> set angka ini kurang dari atau sama dengan versi Android OS pada perangkat mungkin membantu

 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
    }
Ksatria guntur
sumber
0

Saya punya masalah ini ketika ada beberapa karakter Unicode dalam nama metode saya (karena, dari semua hal, salin / tempel dari file powerpoint) yang tidak disukai Dalvik. Anda dapat melihat ini dengan melihat keluaran Logcat ketika mencoba menginstal APK.

Ini pada perangkat nyata.

pemalas
sumber
0

Dipecahkan dengan mengoreksi waktu tanggal pada telepon (itu beberapa tanggal standar 01.01.1980), dan membersihkan proyek.

Tanpa nama
sumber
0

Saya telah mengubah versi android versi 4 untuk dukungan sdk 21 dan ada kesalahan ini. Jadi saya kembali ke versi dukungan untuk versi lama (sebelum 21) dan berhasil. Kesalahan itu terjadi hanya di android 2.3

Cícero Moura
sumber
0

Saya telah mengalami masalah ini ketika saya mencoba memperbarui alat build baru 24.0.1. Koneksi internet terputus dan alat tidak berhasil diunduh, setelah itu saya mendapatkan kesalahan ini dan menghabiskan banyak waktu untuk menyelesaikannya. Tetapi ketika saya berhasil memperbarui alat membangun - masalah terpecahkan. Semoga berhasil.

Alex Perevozchykov
sumber