Làm cách nào để khắc phục lỗi INSTALL_FAILED_DEXOPT?


181

Tôi đang phát triển ứng dụng Android bằng Android 2.2, kích thước APK của ứng dụng là 22,5 MB và tôi muốn tạo bản dựng mới cho máy tính bảng Samsung. Tôi đã nhận được lỗi sau:

INSTALL_FAILED_DEXOPT

Làm thế nào để tôi giải quyết loại lỗi này?


bạn có thể cài đặt thành công ứng dụng này trên các thiết bị không phải máy tính bảng Samsung không?
Sẽ Tate

1
Bạn cần dán vào đầu ra logcat được tạo khi cài đặt thất bại.
fadden

Tôi gặp vấn đề tương tự trên một thiết bị tôi đang thử nghiệm (HTC Droid Eris). Tôi đã có phiên bản cài đặt ứng dụng trước đây trên điện thoại, tôi chỉ cần gỡ cài đặt và cài đặt lại và nó vẫn ổn.
ninjasense

Gỡ cài đặt và cài đặt lại ứng dụng luôn hoạt động. Xóa sạch dữ liệu người dùng hoặc tạo lại AVD đều chỉ làm như vậy theo cách tốn thời gian hơn. Câu hỏi là, Có một lựa chọn tốt hơn và nhanh hơn?
bschandramohan

7
@ChandraMohan điều đó KHÔNG đúng. Hãy ngừng cố gắng để làm cho nó đúng. Tôi đã định dạng thiết bị của mình và cố gắng cài đặt lại ứng dụng. Nó vẫn ném lỗi này!
Artiom Chilaru

Câu trả lời:


99

Khởi động lại trình giả lập từ Android SDK and AVD Managervà chọn tùy chọn Wipe User Datađã giải quyết vấn đề này cho tôi.

Bạn có thể tìm thấy tùy chọn như được tô sáng trong hình ảnh đã cho bên dưới:

Xóa tùy chọn dữ liệu người dùng khi khởi động trình giả lập Android


17
Nếu đó là điện thoại của tôi chứ không phải trình giả lập thì sao?
mtmurdock

1
@mtmurdock thử adb kill-serverrồi adb start-servernên giải quyết vấn đề của bạn. Có thể ứng dụng cũ hơn tồn tại sau đó gỡ cài đặt nó trước.
Vikas Patidar

@mtmurdock Có lẽ bạn đã thử, nhưng khởi động lại điện thoại làm việc cho tôi :)
Dunc

giết máy chủ và sau đó bắt đầu không hoạt động với tôi, khởi động lại trình giả lập và Wiping Data thực sự hoạt động với tôi.
Shuvo

74

Điều này dường như có liên quan đến không gian đĩa cho tôi. Trình giả lập 5.1 mới được khởi động có lỗi "không gian đĩa thấp" - và nhìn vào các thuộc tính của trình giả lập, không gian mặc định được phân bổ cho bộ nhớ trong là 800 MB có vẻ thấp.

Giải pháp, do đó là tăng điều này (tôi đã lên 4GB). Điều kỳ lạ là trình giả lập vẫn khởi động với cùng một cảnh báo không gian đĩa nhưng nhà máy đã thiết lập lại nó (Cài đặt -> Sao lưu và Khôi phục bên trong trình giả lập) đã giải quyết hoàn toàn cho tôi.

Chỉ hơi lạ một chút là nó không hoạt động với cài đặt mặc định.


2
Quả thực đây là vấn đề tôi gặp phải và đặt lại thông qua cài đặt điện thoại đã khắc phục nó cho tôi. cảm ơn!
Justin Stanley

1
Đã thử hầu hết mọi thứ nhưng không có gì hiệu quả ngoại trừ cái này, cảm ơn
shehzy 24/07/19

1
Sau 2 giờ tôi tìm thấy bình luận này - cảm ơn bạn đã tiết kiệm ngày của tôi, đã làm việc!
Kiler eller

1
Điều này cũng gây ra INSTALL_FAILED_DEXOPT trên trình giả lập của tôi. Tôi đã tăng kích thước nhưng tôi cần phải đi đến cài đặt và chạy khôi phục nhà máy. Nó đã khắc phục vấn đề.
Dave Thomas

Chúa ơi ... một lần nữa điều này đã xảy ra với tôi sau khi cập nhật hệ điều hành mac của tôi. Nhân đôi số tiền tôi hoàn trả cho giải pháp đó goto -> cài đặt và chạy khôi phục nhà máy. Phải tìm kiếm câu hỏi này chỉ để nhớ cách tôi sửa nó ... cảm ơn chúa vì lịch sử đã bị tràn, và tôi đã có thể tìm thấy nhận xét của mình
Dave Thomas

17

Phiên bản cũ của ứng dụng bạn đang cài đặt có các thư viện / lọ phụ thuộc đã được thay đổi. Tôi gặp vấn đề này khi cập nhật các tệp jar khác mà ứng dụng của tôi đang điều chỉnh.

Bạn sẽ cần Gỡ cài đặt phiên bản cũ của mình và sau đó bạn sẽ không gặp vấn đề gì nữa ...

Cài đặt -> Ứng dụng -> Quản lý ứng dụng -> [Tìm và gỡ cài đặt ứng dụng của bạn]

Lỗi INSTALL_FAILED_DEXOPT không nên nổ ra. Giống

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

Ôi trời ơi.


Tôi có thể đồng tình nguyên nhân & hiệu quả. Tình huống tương tự đã xảy ra trong trường hợp của tôi sau khi mày mò với lọ. Đối với tôi đây chỉ là trên các thiết bị dựa trên Android 2.3 Gingerbread, ICS & Lollipop vẫn ổn.
AlexVPerl

Đây có phải là một vấn đề khi tải lên Play Store không? hoặc trình cài đặt xóa ứng dụng và cài đặt lại?
Eduardo Naveda

14

Nếu bạn đang sử dụng Android Studio , hãy thử làm sạch dự án của bạn:

Xây dựng> Dự án sạch


12

Có vẻ như thông báo lỗi này có thể có nhiều nguyên nhân khác nhau. Trường hợp tôi gặp là trên một thiết bị thực (vì vậy các giải pháp cơ sở giả lập không được áp dụng).

Về cơ bản, khi điều này xảy ra, hãy đặt bộ lọc Logcat của bạn thành Verbose hoặc Warn , điều này sẽ giúp bạn có thêm thông tin về nguyên nhân.

Trong trường hợp của tôi, nhiều phiên bản hoặc xung đột của JUnit đã được đưa vào dự án mà tôi đang thực hiện (một cơ sở mã lớn hiện có). Ứng dụng Android mà tôi đang cố gắng triển khai có một số dự án thư viện là phụ thuộc và tôi đã cài đặt nhầm mọi thứ để bao gồm nhiều tệp jar JUnit.

Tôi phát hiện ra điều này dựa trên một loạt các tin nhắn Logcat. Lưu ý rằng dòng WARN đưa ra nguyên nhâ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
Đây là một gợi ý tốt. Tôi đồng ý rằng bạn nên xem đầu ra LogCat để xem thông báo lỗi thực tế là gì. Tôi đã gặp phải lỗi này và đó là do thiết bị của tôi bị thiếu dung lượng và không thể giải nén APK. Tôi tin rằng có nhiều lý do mà lỗi này có thể được kích hoạt và gỡ cài đặt hoặc xóa dữ liệu người dùng có thể không cần thiết. Tôi đã đăng đề nghị này giống như một câu trả lời cho một câu hỏi tương tự (trùng lặp).
Bryan Bedard

2
SORRY, ĐÂY LÀ ĐIỂM CÙNG R BryNG Bryan Bedard ĐANG LÀM. Tôi đã hết dung lượng - thông thường, tôi gặp một lỗi như "không đủ dung lượng", nhưng vì một số lý do tôi đã gặp lỗi DEXOPT này. Logcat hiển thị lỗi Zip thổi phồng: ghi không thành công: Không còn chỗ trống trên thiết bị.
mobibob

12

Chạy vào điều này với Android Studio 3.4.1 nhưng sử dụng trình giả lập (5.0) cũ hơn. Quy trình này (trên Mac) đã khắc phục sự cố:

  1. dừng giả lập
  2. cd ~ / .android / avd / [tên giả lập] .avd
  3. rm * .lock
  4. lau giả lập
  5. bắt đầu giả lập

3
Làm những gì được đề cập ở trên sau khi tăng bộ nhớ trong của trình giả lập lên 4gb là điều duy nhất phù hợp với tôi.
dell116

@ dell116 Tôi không ngạc nhiên khi đôi khi có nhiều việc phải làm, chỉ dựa trên tất cả các câu trả lời khác nhau cho câu hỏi này!
Ken

3
Đã đồng ý! Và chúc mừng bạn đã lấy được tên người dùng "Ken".
dell116

Thật không may, không có sự kết hợp nào của việc lau / tăng lưu trữ / lau lại giúp tôi. Tôi từ bỏ.
Có thể Poyrazoğlu

1
@ CanPoyrazoğlu - Tôi cũng gần như bỏ cuộc. Tôi nghĩ rằng các trình giả lập phải cực kỳ nhạy cảm và nhiều điều có thể khiến chúng thất bại (bằng chứng là tất cả các câu trả lời khác nhau ở đây cho một câu hỏi được hỏi hơn tám năm trước). Xóa các tệp .lock là chìa khóa trong trường hợp của tôi, nhưng tôi chắc chắn có thể thấy nơi đó có thể không giải quyết được tất cả các vấn đề.
Ken

11

Tôi đã thay đổi kích thước RAM và dung lượng lưu trữ nội bộ của trình giả lập Bây giờ CNTT đang hoạt động ... trong trình quản lý AVD nhật thực


2
Điều này cũng giải quyết vấn đề trong Android Studio. Tôi chỉ có 200Mb lưu trữ nội bộ. Tăng lên tới 1GB và giải quyết vấn đề. Lỗi tin nhắn tương tự ... Cảm ơn !!
Joan Casadellà

Làm việc cho tôi là tốt. Tăng từ 200MB!
JohnyTex

10

hãy thử câu trả lời của tôi https://stackoverflow.com/a/34918549/3737254

nếu bạn sử dụng android studio 2.0, hãy BẮT ĐẦU chạy ngay lập tức.

FYI, chạy ngay lập tức là tính năng mới từ android studio 2.0 (tôi chưa bao giờ sử dụng nó>. <)

Cách tắt: tùy chọn -> xây dựng, thực thi và triển khai -> chạy ngay lập tức -> tắt, sau đó hoạt động như ma thuật

Thưởng thức!


Đây là vấn đề của tôi khi thử nghiệm các API cũ trên trình giả lập. Sau khi thay đổi điều này và xóa sạch trình giả lập, nó đã hoạt động!
Ben

8

Tôi cần phải tắt Instant Run để khắc phục sự cố. Để tắt Instant Run trên OS X, hãy truy cập Android Studio > Preferences > Build, Ex thi, Deployment > Instant Run sau đó xóa tick khỏi Enable Instant Run to hot swap code/resource changes on deploy (default enabled).


Điều này làm việc cho tôi dexopt error. Application failed to install. Tôi đã thử những thứ này trước khi tôi tìm thấy cái này: adb kill-server adb start-serverkhởi động lại Android Studio và Factory đặt lại thiết bị của tôi.
Sherlock

7

Giải pháp duy nhất giúp tôi khắc phục điều này là tăng RAM của VM lên 4GB.


6

Hôm nay tôi gặp vấn đề tương tự với Android Studio trên một thiết bị ảo mới. Có vẻ như tôi đã tải xuống x86_64hình ảnh, tạo lại VD với x86hình ảnh tương đương đã sửa nó.

Tôi dự kiến ​​sẽ có được một INSTALL_FAILED_NO_MATCHING_ABIStrong trường hợp này nhưng bằng cách nào đó tôi đã bị mắc kẹt vớiINSTALL_FAILED_DEXOPT


1
Đối với tôi thì ngược lại. Cố gắng cài đặt trên x86thất bại. Sau khi tải xuống hình ảnh và thay đổi trình giả lập thành x86_64lỗi đã biến mất. Tôi đã sử dụng hình ảnh hệ thống API 21.
Friederbluemle

Ngược lại làm việc cho tôi là tốt. Đã thử tất cả mọi thứ trên chủ đề này trước khi cố gắng sử dụng x86_64hình ảnh thay vì hình ảnh x86. Tôi cũng đang sử dụng API 21 AVD (Nexus 5).
Renan Ferrari

5

Tôi đang làm việc với Android Studio và gặp lỗi tương tự.

Xóa thư mục xây dựng của Modul chính đã giúp. Sau khi xóa mọi thứ trở lại bình thường.


4

INSTALL_FAIL_DEXOPT thường phải thực hiện với giới hạn được đặt trên class.dex. Trên bất cứ thứ gì dexopt tiền ICS sẽ thất bại trên bất cứ thứ gì trên 5 MB. Các phiên bản gần đây của Android sử dụng bộ đệm 8 hoặc 16 MB.

Kiểm tra kích thước của class.dex trong APK của bạn. Cũng rất tốt để xem số lượng phương thức của bạn là gì, vì dex có giới hạn phương thức / trường 65536.


Người giới thiệu:

Lỗi trong khi cài đặt ứng dụng (INSTALL_FAILED_DEXOPT)

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

Cách thu nhỏ mã - Giới hạn phương thức 65k trong dex


3

Tôi gặp vấn đề này sau khi bật cờ jumboMode trong build ( dex.force.jumbo=true). Mọi thứ đều hoạt động tốt trên các thiết bị Android mới hơn, nhưng cài đặt không thành công trên Gingerbread.

Vì vậy, nếu ứng dụng của bạn yêu cầu chế độ jumbo do hạn chế 65k gây phiền nhiễu, hãy thử cắt một số mã / chuỗi không sử dụng và đặt chế độ jumbo trở lại sai.


Tôi cũng chỉ kích hoạt chế độ jumbo và bắt đầu thấy điều này khi thử nghiệm trên các thiết bị cũ. Thật không may, trở lại sai đã không giải quyết vấn đề cho tôi. Sử dụng proguard để thu nhỏ APK đã làm.
slott

Chúng tôi đã gặp phải vấn đề tương tự, Chế độ Jumbo không hoạt động với API 10
Henrique de Sousa

3

classes.dexkhông làm cho nó đến trận chung kết .apk. Chạy gradlew --offline clean && gradlew --offline assembleDebugmọi thứ cố định cho tôi mọi lúc. Từ thời điểm đó, bạn có thể bắt đầu khởi chạy lại ứng dụng từ Android Studio.

EDIT: Trước những gì tôi đã nói ở trên, hãy vào Trình quản lý tác vụ và tiêu diệt tất cả cmd.execonhost.execác quy trình (hoặc chỉ một trong đó aaptbị kẹt). Nếu không aaptsẽ sụp đổ từ bây giờ khi khởi chạy từ dòng lệnh với lỗi khét tiếng -1073741819.


Đánh giá cao: D đáng nói là các công cụ xây dựng mới nhất (2.1.1) và plugin gradle (1.0.0-rc1) hoạt động như một bùa mê
Eugen Pechanec

Tôi không biết về điều đó, tôi mới cài đặt android studio 1.0 và phải làm điều này để nó hoạt động.
axnsan

Thử giết tất cả java.exe. Bạn có bao nhiêu RAM? Hãy chắc chắn rằng bạn có phiên bản mới nhất sau đây: Android Studio 1.0.0-RC4, plugin android grad 1.0.0-rc1, công cụ xây dựng 21.1.1. Tôi đã không thấy lỗi trong một thời gian.
Eugen Pechanec

Công cụ xây dựng là 21.1.1, android studio là 1.0 và tôi không biết cách tìm phiên bản plugin gradle. Tôi vừa tải xuống bản phát hành 1.0 xuất hiện ngày hôm qua trên trang web dành cho nhà phát triển Android ...
axnsan

Nhìn vào build.gradletập tin dự án gốc của bạn . Trong số các phụ thuộc bản dựng nên cóclasspath 'com.android.tools.build:gradle:1.0.0-rc4' .
Eugen Pechanec

3

Tôi đã gặp lỗi tương tự và sửa nó bằng cách tăng kích thước của bộ nhớ trong.

Bộ nhớ trong ban đầu được đặt thành 32 MB (tôi biết) và sau đó tôi đã cài đặt một vài apks trên đó, nó đã để lại ít dung lượng hơn mức cần thiết cho cái được cài đặt.


3

xác minh dung lượng lưu trữ trên thiết bị của bạn


2
Điều này giúp, tôi đã tăng ram và dung lượng của thiết bị ảo, sau đó giải quyết vấn đề.
Wesely

2

Tôi đã gỡ cài đặt ứng dụng và vẫn gặp lỗi INSTALL_FAILED_DEXOPT. Nếu bạn đang làm việc với Android Studio / gradle: gradle clean đã giúp tôi, Cheers.


Tôi đã phải sử dụng gradlew, nhưng hey nó hoạt động! cảm ơn (cũng đã xóa gói trong dữ liệu / dữ liệu)
Maxim Geerinck 23/11/14

2

trong build.gradle thay đổi được biên dịch và xây dựng lên phiên bản mới nhất. và nó đã làm việc cho tôi.

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

android {
    compileSdkVersion 22
    buildToolsVersion "22"

2

có rất nhiều câu trả lời ở đây, nhưng có lẽ nó có thể giúp được ai đó mà tôi gặp vấn đề này với thiết bị thực và vấn đề là ở D8

hãy thử thêm nó vào gradle.properies của bạn và nó hoạt động với tôi

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

1

Tôi đã gặp vấn đề này khi cố gắng cài đặt trên 2.3 thiết bị (tốt trên 4.0.3). Cuối cùng, đó là do một dự án lib mà tôi đang sử dụng có nhiều lọ dành cho công cụ đã có trong Android, ví dụ như trình phân tích cú pháp XML và XML, v.v. Nhìn vào logcattôi đã thấy điều này khi nó nói với tôi rằng nó đã bỏ qua các lớp do chúng đã bị bỏ qua hiện tại. Đẹp không có ích ban đầu có lỗi!


2
Tôi có cùng một vấn đề bạn có thể giải thích làm thế nào bạn đã xóa vấn đề đó. Tôi có kích thước lib hơn 7 mb vì vậy nó không cho phép tôi cài đặt trong thiết bị trước đó như 2.3.
Rakki s

Trong trường hợp của tôi, tôi đã sử dụng gradle build để tạo apk và thủ phạm là jar của nhà cung cấp bouncy-Castle. Tôi đã phải loại trừ mô-đun 'bcprov-jdk' trong các phụ thuộc biên dịch của dự án gốc.
Pawan

1

Tôi đã kiểm tra lỗi này trên một thiết bị thực. Xóa bộ nhớ cache / gỡ cài đặt, khởi động lại mọi thứ không hiệu quả với tôi, xóa nội dung của thư mục bản dựng đã làm :) (Android studio)


1

Không có giải pháp chung chung, bạn phải tìm lỗi được báo cáo trên Logcat của mình để có thể tìm ra lỗi đó. Đôi khi, đó là một lớp không thể bị 'lừa' do việc sử dụng một lớp không có sẵn trên API mục tiêu được chỉ định chẳng hạn. Hoặc nó có thể là một lớp mà bạn đang tham chiếu trong mã của mình, nhưng thư viện chứa nó không được đóng gói.


1

Cân nhắc sử dụng proguard để thu nhỏ APK của bạn. Tôi gặp vấn đề tương tự nếu tôi cố gắng cài đặt APK lớn 25 MB + trên thiết bị Samsung Galaxy Ace 2.3.6 cũ mà không thu nhỏ / tối ưu hóa mã với proguard.

Chế độ Jumbo và khởi động lại thiết bị không hoạt động.



1

targetSdkVersion 22 // 17 ==========================> đặt số này ít hơn hoặc bằng với phiên bản HĐH Android trên thiết bị có thể giúp ích

 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

Tôi gặp vấn đề này khi có một số ký tự Unicode trong tên phương thức của tôi (do, trong tất cả mọi thứ, sao chép / dán từ tệp powerpoint) mà Dalvik không thích. Bạn có thể thấy điều này bằng cách nhìn vào đầu ra Logcat trong khi cố gắng cài đặt APK.

Đây là trên một thiết bị thực sự.


0

Giải quyết bằng cách sửa thời gian ngày trên điện thoại (đó là một ngày mặc định 01.01.1980) và làm sạch dự án.


0

Tôi đã thay đổi phiên bản Android 4 hỗ trợ cho sdk 21 và gặp lỗi này. Vì vậy, tôi đã quay lại phiên bản hỗ trợ cho phiên bản cũ (trước 21) và nó đã hoạt động. Lỗi chỉ xảy ra trong Android 2.3


0

Tôi đã gặp phải vấn đề này khi tôi đang cố cập nhật các công cụ xây dựng mới 24.0.1. Kết nối Internet bị mất và các công cụ không được tải xuống thành công, sau đó tôi đã gặp lỗi này và mất rất nhiều thời gian để cố gắng giải quyết nó. Nhưng khi tôi thành công cập nhật các công cụ xây dựng - vấn đề đã được giải quyết. Chúc may mắn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.