INSTALL_FAILED_DEXOPT 오류를 어떻게 해결합니까?


181

Android 2.2를 사용하여 Android 응용 프로그램을 개발 중이며 응용 프로그램 APK 크기는 22.5MB이며 Samsung 태블릿을위한 새 빌드를 만들고 싶습니다. 다음과 같은 오류가 발생했습니다.

INSTALL_FAILED_DEXOPT

이런 종류의 오류를 어떻게 해결합니까?


삼성 태블릿 이외의 기기에이 응용 프로그램을 성공적으로 설치할 수 있습니까?
Will Tate

1
설치가 실패 할 때 생성 된 logcat 출력에 붙여 넣어야합니다.
Marden

테스트 한 장치 (HTC Droid Eris)에서 동일한 문제가 발생했습니다. 휴대 전화에 이전에 설치 한 앱 버전이 있는데 방금 제거한 다음 다시 설치하면 문제가 없습니다.
ninjasense 2016 년

앱 제거 및 재설치는 항상 작동합니다. 사용자 데이터를 지우거나 AVD를 다시 만드는 것은 시간이 많이 걸리는 방식으로 모두 동일하게 수행됩니다. 질문은 더 좋고 더 빠른 옵션이 있습니까?
bschandramohan

7
@ChandraMohan 사실이 아닙니다. 사실을 시도하지 마십시오. 장치를 포맷하고 앱을 다시 설치하려고했습니다. 여전히이 오류가 발생합니다!
Artiom Chilaru 2012 년

답변:


99

에서 에뮬레이터를 다시 시작하고 Android SDK and AVD Manager옵션 Wipe User Data을 선택하면 이 문제가 해결되었습니다.

아래 이미지에서 강조 표시된 옵션을 찾을 수 있습니다.

안드로이드 에뮬레이터를 시작할 때 사용자 데이터 삭제 옵션


17
에뮬레이터가 아닌 내 전화 인 경우 어떻게합니까?
mtmurdock

1
@mtmurdock 시도 adb kill-server하면 adb start-server문제를 해결해야합니다. 오래된 앱이있을 수 있습니다. 그런 다음 먼저 제거하십시오.
Vikas Patidar

@mtmurdock 당신은 아마 시도했지만 전화를 다시 시작하면 나를 위해 일했다 :)
Dunc

서버를 죽인 다음 시작이 작동하지 않아 에뮬레이터를 다시 시작하고 데이터 지우기가 실제로 작동합니다.
Shuvo

74

이것은 나에게 디스크 공간과 관련이있는 것 같습니다. "디스크 공간 부족"오류와 함께 새로 출시 된 5.1 에뮬레이터 부팅-에뮬레이터 속성을 보면 내부 저장소에 할당 된 기본 공간은 800MB로 낮습니다.

따라서 해결책은 이것을 늘리는 것입니다 (4GB로갔습니다). 이상하게도 에뮬레이터는 여전히 동일한 디스크 공간 경고로 부팅되지만 공장 재설정 (에뮬레이터 내부의 설정-> 백업 및 복원)으로 완전히 해결되었습니다.

기본 설정으로 상자에서 작동하지 않는 것이 조금 이상합니다.


2
실제로 이것이 내가 가진 문제와 전화 설정을 통해 재설정하면 문제가 해결되었습니다. 감사!
저스틴 스탠리

1
거의 모든 것을 시도했지만 이것 외에는 아무것도 효과가 없었습니다.
shehzy

1
2 시간 후 나는이 의견을 찾았습니다-내 하루를 구해 주셔서 감사합니다.
kilian eller

1
이로 인해 에뮬레이터에서 INSTALL_FAILED_DEXOPT도 발생했습니다. 크기를 늘 렸지만 설정으로 이동하여 공장 복원을 실행해야했습니다. 문제가 해결되었습니다.
Dave Thomas

1
그리스도 ... 다시 맥 OS를 업데이트 한 후 나에게 이런 일이 발생했습니다. 해당 솔루션의 상환액을 두 배로 낮추고 설정-> 설정을 복원하고 공장 복원을 실행하십시오. 내가 어떻게 고쳤는지 기억하기 위해이 질문을보아야했습니다 ... 스택 오버플로에 대한 역사에 대해 신께 감사드립니다. 내 의견을 찾을 수있었습니다.
Dave Thomas

17

설치하려는 이전 버전의 앱에 종속 라이브러리 / jar이 변경되었습니다. 내 앱이 참조하지 않는 다른 jar 파일을 업데이트 할 때이 문제가 발생했습니다.

이전 버전을 제거해야하며 더 이상 문제가 없어야합니다.

설정-> 응용 프로그램-> 응용 프로그램 관리-> [앱 찾기 및 제거]

INSTALL_FAILED_DEXOPT 오류가 발생하지 않아야합니다. 처럼

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

우우.


원인과 결과에 동의 할 수 있습니다. 항아리를 땜질 한 후에도 같은 상황이 발생했습니다. 나에게 이것은 안드로이드 2.3 진저 브레드 기반 장치에만 있었고 ICS & Lollipop은 훌륭했습니다.
AlexVPerl

Play 스토어에 업로드 할 때 이것이 문제가됩니까? 또는 설치 관리자가 앱을 삭제하고 다시 설치합니까?
Eduardo Naveda 2016 년


12

이 오류 메시지에는 여러 가지 원인이있을 수 있습니다. 내가 만난 사건은 실제 장치에 있었기 때문에 에뮬레이터 기반 솔루션이 적용되지 않았습니다.

기본적으로이 상황이 발생하면 Logcat 필터를 Verbose 또는 Warn으로 설정 하면 원인에 대한 자세한 정보를 얻을 수 있습니다.

필자의 경우, 작업중 인 프로젝트 (대규모의 기존 코드베이스)에 여러 가지 또는 충돌하는 JUnit 버전이 포함되었습니다. 배포하려는 Android 앱에는 여러 라이브러리 프로젝트가 종속성으로 있었고 여러 JUnit jar 파일을 포함하도록 실수로 설정했습니다.

일련의 Logcat 메시지를 기반으로 이것을 발견했습니다. WARN 줄은 다음과 같은 원인을 제공합니다.

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
이것은 좋은 제안입니다. LogCat 출력을보고 실제 오류 메시지가 무엇인지 확인해야합니다. 이 오류가 발생하여 기기의 저장 공간이 부족하고 APK 압축을 풀지 못했기 때문입니다. 이 오류가 발생할 수있는 여러 가지 이유가 있다고 생각하며 사용자 데이터를 제거하거나 지우는 것이 필요하지 않을 수 있습니다. 나는 비슷한 (중복) 질문에 대한 답변으로 동일한 제안을 게시했습니다.
Bryan Bedard

2
죄송합니다. 이것은 Bryan Bedard가 만드는 것과 같은 요점입니다. 공간이 부족합니다. 일반적으로 "공간 부족"과 같은 오류가 발생하지만 어떤 이유로이 DEXOPT 오류가 발생했습니다. Logcat에 Zip 팽창 오류 : 쓰기 실패 : 장치에 남은 공간이 없습니다.
mobibob

12

Android Studio 3.4.1 에서이 문제를 해결했지만 더 오래된 (5.0) 에뮬레이터를 사용했습니다. 이 절차 (Mac)에서 문제가 해결되었습니다.

  1. 에뮬레이터 중지
  2. cd ~ / .android / avd / [에뮬레이터 이름] .avd
  3. rm * .lock
  4. 에뮬레이터 지우기
  5. 에뮬레이터 시작

3
에뮬레이터의 내부 저장소를 4GB늘린 후에 위에서 언급 한 것을 수행하는 것이 저 에게 효과적 이었습니다.
dell116

@ dell116 나는이 질문에 대한 모든 다른 대답에 기초하여 때로는 하나 이상의 일을해야한다는 것에 놀라지 않습니다!
Ken

3
동의했다! 그리고 사용자 이름 "Ken"을 잡는 것을 축하합니다.
dell116

불행하게도 삭제 / 저장 증가 / 삭제의 조합 중 어느 것도 도움이되지 않았습니다. 나는 포기 했어.
Can Poyrazoğlu 님이

1
@ CanPoyrazoğlu — 나도 거의 포기했다. 에뮬레이터는 매우 민감해야하며 많은 것들로 인해 실패 할 수 있습니다 (여기에서 8 년 이상 전에 질문 된 모든 대답에서 알 수 있듯이). 필자의 경우 .lock 파일을 제거하는 것이 중요했지만 모든 문제를 해결할 수없는 곳을 확실히 알 수 있습니다.
Ken

11

나는 '변경된 RAM 크기 에뮬레이터와 internel 저장 용량 ... 지금은 작동이됩니다 일식 AVD 관리자에


2
또한 Android Studio의 문제를 해결합니다. 내부 스토리지는 200Mb 밖에 없었습니다. 최대 1GB까지 상승하고 문제가 해결되었습니다. 같은 메시지 오류 ... 감사합니다 !!
Joan Casadellà

나에게도 효과가 있습니다. 200MB에서 올립니다!
JohnyTex

10

내 대답을 시도 https://stackoverflow.com/a/34918549/3737254

android studio 2.0을 사용하는 경우 즉시 실행을 비활성화하십시오.

참고로, 인스턴트 실행은 Android Studio 2.0의 새로운 기능입니다 (>. <)

비활성화하는 방법 : 환경 설정-> 빌드, 실행 및 배포-> 즉시 실행-> 비활성화, 마법처럼 작동합니다.

즐겨!


에뮬레이터에서 오래된 API를 테스트 할 때 이것이 내 문제였습니다. 이것을 변경하고 에뮬레이터를 깨끗하게 닦은 후에 작동했습니다!
Ben

8

문제를 해결하려면 인스턴트 실행을 비활성화해야했습니다. OS X에서 Instant Run을 비활성화하려면 Android Studio > 환경 설정 > 빌드, 실행, 배포 > Instant Run으로 이동 한 다음에서 틱을 제거하십시오 Enable Instant Run to hot swap code/resource changes on deploy (default enabled).


이것은 내 도움이되었습니다 dexopt error. Application failed to install. 나는 이것을 발견하기 전에 이것을 시도했다 : adb kill-server adb start-serverAndroid Studio를 다시 시작하고 장치를 초기화하는 팩토리.
Sherlock

7

이 문제를 해결하는 데 도움이 된 유일한 솔루션은 VM의 RAM을 4GB로 늘리는 것입니다.


6

오늘 새로운 가상 장치에서 Android Studio와 동일한 문제가 발생했습니다. x86_64이미지를 다운로드 하여 동일한 x86이미지로 고정 된 VD를 다시 만든 것처럼 보입니다 .

나는 INSTALL_FAILED_NO_MATCHING_ABIS이 경우 를 얻을 것으로 예상 했지만 어떻게 든 나는 붙어 있었다.INSTALL_FAILED_DEXOPT


1
저에게는 반대였습니다. 설치 시도가 x86실패했습니다. 이미지를 다운로드하고 에뮬레이터를 x86_64오류로 변경 한 후 사라졌습니다. API 21 시스템 이미지를 사용했습니다.
friederbluemle

그 반대도 저에게 효과적이었습니다. x86_64이미지 대신 이미지 를 사용하기 전에이 스레드의 모든 것을 시도했습니다 x86. 또한 API 21 AVD (Nexus 5)를 사용하고있었습니다.
Renan Ferrari

5

Android Studio로 작업 중이며 동일한 오류가 발생했습니다.

메인 Modul의 빌드 폴더를 삭제하면 도움이되었습니다. 삭제 후 모든 것이 정상으로 돌아옵니다.


4

INSTALL_FAIL_DEXOPT는 일반적으로 classes.dex의 제한과 관련이 있습니다. 프리 ICS dexopt는 5MB 이상에서 실패합니다. 최신 버전의 Android는 8 또는 16MB 버퍼를 사용합니다.

APK에서 classes.dex의 크기를 확인하십시오. dex에 65536 메소드 / 필드 제한이 있으므로 메소드 수를 확인하는 것이 좋습니다.


참고 문헌 :

응용 프로그램 설치 중 오류 (INSTALL_FAILED_DEXOPT)

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

코드 축소 방법-Dex에서 65k 메소드 제한


3

빌드 ( ) 에서 jumboMode 플래그를 활성화 한 후이 문제가 발생했습니다 dex.force.jumbo=true. 최신 Android 기기에서는 모든 것이 잘 작동했지만 Gingerbread에서는 설치가 실패했습니다.

따라서 성가신 65k 제한으로 인해 앱에 점보 모드가 필요한 경우 사용하지 않는 코드 / 문자열을 자르고 점보 모드를 다시 false로 설정하십시오.


또한 점보 모드를 활성화하고 이전 장치에서 테스트 할 때 이것을 보았습니다. 불행히도 다시 거짓으로 되돌려도 문제가 해결되지 않았습니다. proguard를 사용하여 APK를 줄였습니다.
slott

같은 문제가 발생했습니다. 점보 모드는 API 10에서 작동하지 않습니다
Henrique de Sousa

3

classes.dex최종 적으로 만들지 않습니다 .apk. gradlew --offline clean && gradlew --offline assembleDebug매번 고정 된 것을 실행 합니다. 그 시점부터 Android Studio에서 앱을 다시 시작할 수 있습니다.

편집 : 나는 작업 관리자에 위의 이동이 말했다 모두 죽일 무엇을하기 전에 cmd.execonhost.exe프로세스 (또는 단지 하나에 aapt붙어있어). 그렇지 않으면 aapt악명 높은 오류로 명령 행에서 시작할 때 지금부터 충돌이 발생합니다 -1073741819.


감사 : D는 최신 빌드 툴 (2.1.1)과 gradle 플러그인 (1.0.0-rc1)이 매력처럼 작동한다고 언급 할 가치가 있습니다
Eugen Pechanec

글쎄, 나는 그것에 대해 모른다, 나는 방금 안드로이드 스튜디오 1.0을 설치했고 그것을 작동시키기 위해 이것을해야했다.
axnsan

모든 java.exe를 강제 종료하십시오. 당신은 얼마나 많은 RAM을 가지고 있습니까? Android Studio 1.0.0-rc4, gradle android plugin 1.0.0-rc1, 빌드 도구 21.1.1의 최신 버전이 있는지 확인하십시오. 나는 한동안 오류를 보지 못했습니다.
Eugen Pechanec

빌드 도구는 21.1.1이고 안드로이드 스튜디오는 1.0이며 gradle 플러그인 버전을 찾는 방법을 모르겠습니다. 방금 안드로이드 개발자 사이트에 게재 된 1.0 릴리스를 다운로드했습니다…
axnsan

루트 프로젝트 build.gradle파일을 확인하십시오. 빌드 스크립트 의존성 중에가 있어야합니다 classpath 'com.android.tools.build:gradle:1.0.0-rc4'.
Eugen Pechanec 2014

3

내부 저장소의 크기를 늘려서 같은 오류가 발생하여 수정했습니다.

내부 저장 장치는 처음에 32MB로 설정되어 있었고 두 개의 apk를 설치했는데 설치에 필요한 공간보다 적은 공간이 남았습니다.


3

기기의 저장 공간을 확인


2
이를 통해 가상 장치의 램과 공간을 늘리고 문제를 해결했습니다.
Wesely

2

그럼에도 불구하고 앱을 제거하고 INSTALL_FAILED_DEXOPT 오류가 발생했습니다. Android Studio / gradle로 작업하는 경우 gradle clean 이 나를 위해 속임수였습니다.


나는 gradlew를 사용해야했지만, 효과가있었습니다! 덕분에 (또한 데이터 패키지 / 데이터 제거)
맥심 Geerinck

2

build.gradle에서 컴파일되고 최신 버전으로 빌드됩니다. 그리고 그것은 나를 위해 일했습니다.

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

android {
    compileSdkVersion 22
    buildToolsVersion "22"

2

여기에 많은 답변이 있지만 실제 장치 에서이 문제가있는 사람을 도울 수 있으며 문제는 D8과 관련이 있습니다.

이것을 gradle.properties에 추가하려고하면 효과가 있습니다.

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

1

2.3 장치에 설치하려고 할 때이 문제가 발생했습니다 (4.0.3에서 미세 조정). 에서이 찾고 난 이미 안드로이드 예를 들어 HttpClient를하고 XML 파서 등의 물건이었다 가지고 여러 항아리를 사용 된 lib 디렉토리 프로젝트에 의한 었죠 logcat그것은 이미 존재로 인해 그들에게 수업을 건너 뛰는했다 말해되면서이를 찾기 위해 나를 주도 선물. 도움이되지 않은 멋진 원래 오류가 있습니다!


2
나는 당신이 그 문제를 어떻게 해결했는지 설명 할 수있는 동일한 문제가 있습니다. libs 크기가 7MB 이상이므로 2.3과 같은 이전 장치에 설치할 수 없습니다.
Rakki s

제 경우에는 gradle build를 사용하여 apk를 만들고 범인은 탄력 성 공급자 jar이었습니다. 루트 프로젝트의 컴파일 종속성에서 'bcprov-jdk'모듈을 제외해야했습니다.
Pawan

1

실제 장치 에서이 오류 테스트를 받았습니다. 캐시를 지우거나 제거하고 모든 것을 다시 시작하지 못했습니다. 빌드 폴더의 내용을 삭제했습니다. :) (Android Studio)


1

일반적인 해결책은 없습니다 .Logcat에보고 된 오류를 찾아서 알아낼 수 있어야합니다. 때로는 지정된 Target API에서 사용할 수없는 클래스의 사용으로 인해 '덱싱'할 수없는 클래스입니다. 또는 코드에서 참조하는 클래스 일 수 있지만 라이브러리는 패키지화되어 있지 않습니다.


1

proguard를 사용하여 APK를 줄이십시오. proguard로 코드를 축소 / 최적화하지 않고 오래된 Samsung Galaxy Ace 2.3.6 장치에 큰 25MB + APK를 설치하려고해도 동일한 문제가 있습니다.

점보 모드 및 장치 다시 시작이 작동하지 않습니다.



1

targetSdkVersion 22 // 17 =========================> 장치의 Android OS 버전보다 작거나 같은이 숫자를 설정하면 도움이 될 수 있습니다

 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

Dalvik이 좋아하지 않은 모든 메소드 이름 (파워 포인트 파일에서 복사 / 붙여 넣기 때문에)에 유니 코드 문자가있을 때이 문제가 발생했습니다. APK를 설치하는 동안 Logcat 출력을 보면이 내용을 볼 수 있습니다.

이것은 실제 장치에있었습니다.


0

전화 날짜 시간을 수정하고 (기본 날짜는 01.01.1980 임) 프로젝트를 정리하여 해결했습니다.


0

SDK 21에 대한 Android 버전 4 지원 버전을 변경 했으며이 오류가 발생했습니다. 그래서 이전 버전 (21 이전)에 대한 지원 버전으로 돌아가서 작동했습니다. 오류는 안드로이드 2.3에서만 발생했습니다.


0

새 빌드 도구 24.0.1을 업데이트하려고 할 때이 문제가 발생했습니다. 인터넷 연결이 끊어지고 도구가 성공적으로 다운로드되지 않은 후이 오류가 발생하여 해결하는 데 많은 시간을 보냈습니다. 그러나 빌드 도구를 성공적으로 업데이트하면 문제가 해결되었습니다. 행운을 빕니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.