INSTALL_FAILED_DEXOPT 오류를 해결하려면 어떻게 해야 합니까?
안드로이드 2.2를 이용한 안드로이드 어플리케이션을 개발 중이며, 어플리케이션 APK 크기는 22.5MB이며, 삼성 태블릿을 위한 새로운 빌드를 만들고 싶습니다.다음 오류가 발생했습니다.
설치_FAILED_DEXOPT
이런 오류는 어떻게 해결해야 합니까?
에서 에뮬레이터 다시 시작Android SDK and AVD Manager
옵션을 선택합니다.Wipe User Data
저를 위해 이 문제를 해결했습니다.
아래 주어진 이미지에서 강조 표시된 옵션을 찾을 수 있습니다.
이것은 저에게 디스크 공간과 관련이 있는 것 같습니다.새로 롤링된 5.1 에뮬레이터가 "디스크 공간 부족" 오류와 함께 부팅됩니다. 에뮬레이터 속성을 살펴보면 내부 저장을 위해 할당된 기본 공간은 800MB로 낮은 것으로 보입니다.
따라서 이것을 늘리는 것이 해결책이었습니다(4GB로 변경했습니다).이상하게도 에뮬레이터는 여전히 같은 디스크 공간 경고로 부팅되지만 공장에서 재설정(Settings --> Backup and Restore in the emulator)하여 완전히 해결했습니다.
기본 설정으로 즉시 작동하지 않는다는 것이 약간 이상합니다.
설치 중인 이전 버전의 앱에 변경된 종속 라이브러리/병이 있습니다.앱에서 참조 중인 다른 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 3.4.1을 사용하면서 이전(5.0) 에뮬레이터를 사용했습니다.이 절차(Mac의 경우)를 통해 문제가 해결되었습니다.
- 에뮬레이터를 중지합니다.
- cd ~/.android/avd/[에뮬레이터 이름].avd
- rm *.lock
- 에뮬레이터를 닦다
- 에뮬레이터를 작동시키다
Android Studio를 사용하는 경우 프로젝트를 정리해 봅니다.
빌드 > 클린 프로젝트
이 오류 메시지는 여러 가지 원인이 있을 수 있는 것 같습니다.제가 발견한 사례는 실제 기기에 관한 것이었습니다(따라서 에뮬레이터 베이스 솔루션은 적용되지 않았습니다).
기본적으로 이런 경우 Logcat 필터를 Verbose 또는 Warn으로 설정하면 원인에 대한 자세한 정보를 얻을 수 있습니다.
저의 경우, JUNIT의 여러 버전 또는 상충되는 버전이 제가 작업하고 있는 프로젝트(대규모 기존 코드베이스)에 포함되어 있었습니다.배포하려던 안드로이드 앱은 종속성으로 라이브러리 프로젝트가 여러 개 있었고, 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)
에뮬레이터의 RAM 크기와 내부 저장 용량을 변경했습니다. 이제 IT가 작동합니다.eclipse AVD 관리자
내 답변을 시도해보세요 https://stackoverflow.com/a/34918549/3737254 .
Android studio 2.0을 사용하는 경우 인스턴트 실행을 비활성화합니다.
참고로 instant run은 안드로이드 스튜디오 2.0의 새로운 기능입니다. (저는 사용한 적이 없습니다 >.<)
비활성화 방법 : 기본 설정 -> 빌드, 실행 및 배포 -> 인스턴트 실행 -> 비활성화 후 마법처럼 작동
맛있게 드세요.
이 문제를 해결할 수 있었던 유일한 방법은 VM의 RAM을 4GB로 늘리는 것이었습니다.
문제를 해결하기 위해 인스턴트 실행을 비활성화해야 했습니다.OS X에서 인스턴트 실행을 비활성화하려면 Android Studio > Preferences > Build, Execution, Deployment > Instant Run으로 이동한 후 체크 표시를 제거합니다.Enable Instant Run to hot swap code/resource changes on deploy (default enabled)
.
저는 오늘 새로운 가상 기기에서 Android Studio와 같은 문제를 겪었습니다.내가 다운로드 한 것처럼 보입니다.x86_64
image, VD를 동등한 값으로 다시 만들기x86
이미지 수정.
나는 A를 받을 것을 기대했습니다.INSTALL_FAILED_NO_MATCHING_ABIS
이 경우에, 그러나 어찌된 일인지 나는 그와 함께 있었습니다.INSTALL_FAILED_DEXOPT
저는 안드로이드 스튜디오에서 작업하고 있는데 같은 오류가 있었습니다.
메인 모듈의 빌드 폴더를 삭제하는 것이 도움이 되었습니다.모든 것을 삭제한 후에는 정상으로 돌아갑니다.
INSTALL_FAIL_DEXOPT는 일반적으로 class.dex에 설정된 제한과 관련이 있습니다.ICS 이전 버전에서는 5MB가 넘는 모든 것에서 dexopt가 실패합니다. Android의 최신 버전에서는 8MB 또는 16MB 버퍼를 사용합니다.
APK에서 classs.dex의 크기를 확인합니다.또한 덱스의 메서드/필드 제한이 65536이므로 메서드 카운트가 어떻게 되는지 확인하는 것이 좋습니다.
참조:
응용 프로그램 설치 중 오류 발생(INSTALL_FAILED_DEXOPT)
코드 축소 방법 - 65k method limit index
장치의 저장 공간을 확인
빌드에서 점보 모드 플래그를 활성화한 후 이 문제가 발생했습니다(dex.force.jumbo=true
것이 최신 Android 장치에서는 모든 것이 정상적으로 작동했지만 Gingerbread에서는 설치에 실패했습니다.
따라서 앱이 성가신 65k 제한으로 인해 점보 모드를 필요로 한다면 사용하지 않는 코드/스트링을 잘라내고 점보 모드를 다시 false로 설정해 보십시오.
classes.dex
결승전에 진출하지 못합니다..apk
있습니다.입니다.gradlew --offline clean && gradlew --offline assembleDebug
매번 나를 위해 고쳐준 것들.그때부터 안드로이드 스튜디오에서 앱을 다시 시작할 수 있습니다.
편집: 위에 말한 내용을 마치기 전에 작업 관리자에게 가서 모두 처치합니다.cmd.exe
그리고.conhost.exe
프로세스(또는 해당 프로세스)aapt
막혔습니다.그렇지않으면aapt
악명 높은 오류와 함께 명령 줄에서 시작할 때 지금부터 충돌할 것입니다.-1073741819
.
동일한 오류가 발생하여 내부 보관 용량을 늘려 수정하였습니다.
내부 스토리지는 처음에 32MB(알고 있습니다)로 설정한 다음 설치해야 할 공간보다 적은 공간을 사용하여 설치했습니다.
앱을 제거하고 INSTALL_FAILED_DEXOPT 오류가 발생했습니다.Android Studio / gradle: gradle clean이 저를 위해 성공적이었습니다.
gradle 변경 컴파일 및 최신 버전으로 빌드됩니다.저한테는 통했어요
================
android {
compileSdkVersion 22
buildToolsVersion "22"
이 문제에 대한 한 가지 이유가 있다는 것을 알게 되었습니다. 모바일 공간이 충분하지 않다는 것입니다.그래서 모바일에서 여러 개의 앱을 삭제하고 수정했습니다.
여기에 많은 답변이 있습니다. 하지만 실제 기기에 문제가 있었고 D8에 문제가 있었습니다.
당신의 gradle.properties에 이것을 추가해보세요. 그리고 그것은 나에게 효과가 있습니다.
android.enableD8=false
android.enableD8.desugaring= false
2.3 장치에 설치하려고 할 때 이 문제가 발생했습니다(4.0.3에서는 문제 없음).그것은 결국 내가 사용하고 있던 lib 프로젝트 때문에 안드로이드에 이미 있는 것들을 위한 여러 개의 항아리들이 있었습니다.HttpClient 및 XML 파서 등을 살피는 것logcat
이미 수업이 있어서 수업을 빼먹었다고 해서 이걸 찾게 됐어요.도움이 되지 않는 원래의 좋은 오류!
실제 기기에서 오류 테스트를 했습니다.캐시 지우기/제거하기, 다시 시작하기, 빌드 폴더 내용 삭제하기 :) (Android studio)
일반적인 해결책은 없습니다. Logcat에서 보고된 오류를 찾아야 알 수 있습니다.예를 들어 지정된 Target API에서 사용할 수 없는 클래스의 사용으로 인해 '덱스'할 수 없는 클래스인 경우도 있습니다.또는 코드에서 참조하고 있는 클래스일 수 있지만 해당 클래스가 패키지로 제공되지 않습니다.
APK를 축소하기 위해 proguard를 사용하는 것을 고려해 봅니다.proguard로 코드를 축소/최적화하지 않고 25MB+ 대형 APK를 구형 삼성 갤럭시 에이스 2.3.6 기기에 설치하려고 하면 같은 문제가 발생합니다.
점보 모드 및 디바이스 재시작이 작동하지 않습니다.
제 경우에는 코틀린 플러그인 버전 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
}
제 경우에는 API 21과 22를 실행하는 일부 장치에서 문제가 발생했습니다.세팅android:vmSafeMode="true"
명백하게 아래에application
태그를 사용하여 문제가 해결되었습니다.하지만 릴리스 빌드에는 권장되지 않아 values 폴더에 xml 파일 2개를 만들었습니다.이전 API의 기본값:
<resources>
<bool name="vm_safe_mode">true</bool>
</resources>
API >= 23의 경우도 마찬가지입니다.false
value. 이 경우 새로운 OS를 탑재한 기기는 영향을 받지 않고 최소한 오래된 기기는 작동합니다.
제 메서드 이름에 Dalvik이 좋아하지 않는 유니코드 문자가 있을 때 이 문제가 발생했습니다(무엇보다 파워포인트 파일에서 복사/붙여넣기 때문입니다.APK 설치를 시도하면서 Logcat 출력을 보면 알 수 있습니다.
이것은 실제 장치에 있었습니다.
전화의 날짜 시간을 수정하고(일부 기본 날짜인 1980년 01월 01일) 프로젝트를 정리하여 해결했습니다.
언급URL : https://stackoverflow.com/questions/5153515/how-do-i-solve-the-install-failed-dexopt-error
'programing' 카테고리의 다른 글
Oracle: SQL 또는 PL/SQL을 사용하여 파일 이름 확장명을 추출하는 가장 빠른 방법 (0) | 2023.10.18 |
---|---|
Timber RSS 피드 이슈가 있는 사용자 지정 보관 페이지 (0) | 2023.10.18 |
AngularJS를 클립보드로 복사 (0) | 2023.10.18 |
python mysqldb를 사용하여 한 번에 많은 행을 삽입하는 방법 (0) | 2023.10.18 |
프리오픈 후 출력을 다시 화면으로 리디렉션하는 방법("out.txt", "a", stdout) (0) | 2023.10.13 |