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

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

INSTALL_FAILED_DEXOPT

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



답변

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

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

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


답변

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

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

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


답변

설치하려는 이전 버전의 앱에 종속 라이브러리 / 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!

우우.


답변

Android Studio를 사용하는 경우 프로젝트를 정리하십시오.

빌드> 프로젝트 정리


답변

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

기본적으로이 상황이 발생하면 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)


답변

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

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

답변

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