Android 2.2를 사용하여 Android 응용 프로그램을 개발 중이며 응용 프로그램 APK 크기는 22.5MB이며 Samsung 태블릿을위한 새 빌드를 만들고 싶습니다. 다음과 같은 오류가 발생했습니다.
INSTALL_FAILED_DEXOPT
이런 종류의 오류를 어떻게 해결합니까?
Android 2.2를 사용하여 Android 응용 프로그램을 개발 중이며 응용 프로그램 APK 크기는 22.5MB이며 Samsung 태블릿을위한 새 빌드를 만들고 싶습니다. 다음과 같은 오류가 발생했습니다.
INSTALL_FAILED_DEXOPT
이런 종류의 오류를 어떻게 해결합니까?
답변:
에서 에뮬레이터를 다시 시작하고 Android SDK and AVD Manager
옵션 Wipe User Data
을 선택하면 이 문제가 해결되었습니다.
아래 이미지에서 강조 표시된 옵션을 찾을 수 있습니다.
adb kill-server
하면 adb start-server
문제를 해결해야합니다. 오래된 앱이있을 수 있습니다. 그런 다음 먼저 제거하십시오.
이것은 나에게 디스크 공간과 관련이있는 것 같습니다. "디스크 공간 부족"오류와 함께 새로 출시 된 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!
우우.
이 오류 메시지에는 여러 가지 원인이있을 수 있습니다. 내가 만난 사건은 실제 장치에 있었기 때문에 에뮬레이터 기반 솔루션이 적용되지 않았습니다.
기본적으로이 상황이 발생하면 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)에서 문제가 해결되었습니다.
나는 '변경된 RAM 크기 에뮬레이터와 internel 저장 용량 ... 지금은 작동이됩니다 일식 AVD 관리자에
내 대답을 시도 https://stackoverflow.com/a/34918549/3737254
android studio 2.0을 사용하는 경우 즉시 실행을 비활성화하십시오.
참고로, 인스턴트 실행은 Android Studio 2.0의 새로운 기능입니다 (>. <)
비활성화하는 방법 : 환경 설정-> 빌드, 실행 및 배포-> 즉시 실행-> 비활성화, 마법처럼 작동합니다.
즐겨!
문제를 해결하려면 인스턴트 실행을 비활성화해야했습니다. 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-server
Android Studio를 다시 시작하고 장치를 초기화하는 팩토리.
오늘 새로운 가상 장치에서 Android Studio와 동일한 문제가 발생했습니다. x86_64
이미지를 다운로드 하여 동일한 x86
이미지로 고정 된 VD를 다시 만든 것처럼 보입니다 .
나는 INSTALL_FAILED_NO_MATCHING_ABIS
이 경우 를 얻을 것으로 예상 했지만 어떻게 든 나는 붙어 있었다.INSTALL_FAILED_DEXOPT
x86
실패했습니다. 이미지를 다운로드하고 에뮬레이터를 x86_64
오류로 변경 한 후 사라졌습니다. API 21 시스템 이미지를 사용했습니다.
x86_64
이미지 대신 이미지 를 사용하기 전에이 스레드의 모든 것을 시도했습니다 x86
. 또한 API 21 AVD (Nexus 5)를 사용하고있었습니다.
INSTALL_FAIL_DEXOPT는 일반적으로 classes.dex의 제한과 관련이 있습니다. 프리 ICS dexopt는 5MB 이상에서 실패합니다. 최신 버전의 Android는 8 또는 16MB 버퍼를 사용합니다.
APK에서 classes.dex의 크기를 확인하십시오. dex에 65536 메소드 / 필드 제한이 있으므로 메소드 수를 확인하는 것이 좋습니다.
참고 문헌 :
빌드 ( ) 에서 jumboMode 플래그를 활성화 한 후이 문제가 발생했습니다 dex.force.jumbo=true
. 최신 Android 기기에서는 모든 것이 잘 작동했지만 Gingerbread에서는 설치가 실패했습니다.
따라서 성가신 65k 제한으로 인해 앱에 점보 모드가 필요한 경우 사용하지 않는 코드 / 문자열을 자르고 점보 모드를 다시 false로 설정하십시오.
classes.dex
최종 적으로 만들지 않습니다 .apk
. gradlew --offline clean && gradlew --offline assembleDebug
매번 고정 된 것을 실행 합니다. 그 시점부터 Android Studio에서 앱을 다시 시작할 수 있습니다.
편집 : 나는 작업 관리자에 위의 이동이 말했다 모두 죽일 무엇을하기 전에 cmd.exe
및 conhost.exe
프로세스 (또는 단지 하나에 aapt
붙어있어). 그렇지 않으면 aapt
악명 높은 오류로 명령 행에서 시작할 때 지금부터 충돌이 발생합니다 -1073741819
.
build.gradle
파일을 확인하십시오. 빌드 스크립트 의존성 중에가 있어야합니다 classpath 'com.android.tools.build:gradle:1.0.0-rc4'
.
그럼에도 불구하고 앱을 제거하고 INSTALL_FAILED_DEXOPT 오류가 발생했습니다. Android Studio / gradle로 작업하는 경우 gradle clean 이 나를 위해 속임수였습니다.
2.3 장치에 설치하려고 할 때이 문제가 발생했습니다 (4.0.3에서 미세 조정). 에서이 찾고 난 이미 안드로이드 예를 들어 HttpClient를하고 XML 파서 등의 물건이었다 가지고 여러 항아리를 사용 된 lib 디렉토리 프로젝트에 의한 었죠 logcat
그것은 이미 존재로 인해 그들에게 수업을 건너 뛰는했다 말해되면서이를 찾기 위해 나를 주도 선물. 도움이되지 않은 멋진 원래 오류가 있습니다!
내 경우에는 이것이 kotlin 플러그인 버전 1.1.51의 버그였습니다.
https://youtrack.jetbrains.com/issue/KT-20034
이 오류는 기존 장치 (API 16)에 나타납니다.
@Parcelize 주석을 제거 하고이 코드 생성기로 대체 하여이 문제를 해결했습니다. https://github.com/nekocode/android-parcelable-intellij-plugin-kotlin
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
}
Dalvik이 좋아하지 않은 모든 메소드 이름 (파워 포인트 파일에서 복사 / 붙여 넣기 때문에)에 유니 코드 문자가있을 때이 문제가 발생했습니다. APK를 설치하는 동안 Logcat 출력을 보면이 내용을 볼 수 있습니다.
이것은 실제 장치에있었습니다.
새 빌드 도구 24.0.1을 업데이트하려고 할 때이 문제가 발생했습니다. 인터넷 연결이 끊어지고 도구가 성공적으로 다운로드되지 않은 후이 오류가 발생하여 해결하는 데 많은 시간을 보냈습니다. 그러나 빌드 도구를 성공적으로 업데이트하면 문제가 해결되었습니다. 행운을 빕니다.