IT박스

Android 앱을 기기에 업로드 할 수 없음 (오래된 dexed jar)

itboxs 2020. 12. 15. 08:27
반응형

Android 앱을 기기에 업로드 할 수 없음 (오래된 dexed jar)


이 앱을 개발하기 위해 Android Studio를 사용하고 있으며, 오늘 테스트를 위해 기기에 업로드하려고 할 때 다음과 같은 팝업 창이 나타납니다.

기기에 현재 버전과 일치하지 않는 오래된 dexed jar가있을 수 있으므로 설치에 실패했습니다 (dexopt 오류). 계속하려면 기존 애플리케이션을 제거해야합니다.

경고 : 제거하면 응용 프로그램 데이터가 제거됩니다!

기존 애플리케이션을 제거 하시겠습니까?

확인 또는 취소의 두 가지 옵션이 있습니다. 확인을 누르면 실행 탭에 다음 메시지가 표시됩니다.

DEVICE SHELL COMMAND: pm uninstall my.bundle.id
Unknown failure

앱이 제거 된 것 같습니다. 애플리케이션 관리 아래에 흔적이 없습니다.
앱을 업로드 할 수 없습니다. 프로젝트를 청소하고 재건을 시도했지만 작동하지 않았습니다.

어떡해?


나는 또한 버전 2.0 Preview 6에서 2.0 Beta 3까지 Android Studio 에서이 문제가 발생했으며 여기에 언급 된 솔루션 중 어느 것도 나를 위해 일하지 않았습니다.

Instant Run과 관련이없는 것으로 나타났습니다. 내가해야 할 일은 다음 알림이 사라질 때까지 AVD의 내부 저장소를 늘리는 것뿐이었습니다. 또한 값을 변경 한 후 데이터 지우기를 수행해야했습니다.

여기에 이미지 설명 입력


이 프로젝트에서 Instant run을 비활성화했고 문제가 해결되었습니다.

Android 스튜디오 2.0 미리보기의 즉시 실행 기능의 버그 일 수 있습니다.

Instant Run 은 Android Studio 2.0에 도입 된 새로운 기능입니다.

추신 : 인스턴트 실행을 찾을 수없는 경우 다음 위치에 있습니다.

Android Studio --> Preferences --> Build, execution, deploy --> Instant run.

또는 기본 설정 탭에서 검색 할 수 있습니다.


AVD Manager로 이동 한 다음 기기의 작업 섹션에서 데이터 삭제를 선택합니다. 이것은 나를 위해 일했으며 도움이되기를 바랍니다 ....


64k 미만의 메서드가 포함되어 있지만 dex 파일이 버퍼보다 ​​커지는 것을 발견했습니다. 그런 다음 ProGuard를 활성화하고 dex 파일 크기를 줄이는 데 많은 도움이되었습니다.

응용 프로그램 dex-method-counts 는 메서드 수뿐만 아니라 어떤 패키지가 속하는지 확인하여 dex 파일을 디버그하는 데 많은 도움이됩니다.


내 문제가 이전 SDK 빌드 도구 버전으로 인해 발생하여 Clean이 실패한다는 것을 알았습니다. SDK 빌드 도구를 최신 버전으로 업그레이드 한 후 청소가 완료된 후 더 이상 오래된 dexed jars 오류가 표시되지 않습니다. 이 문제로 어려움을 겪는 다른 사람에게 도움이되기를 바랍니다.


이것은 나를 위해 일했습니다.

Android Studio에서는 Build> Clean Project를 클릭하여 수행 할 수 있습니다 . Sysadmin 팁


dex 파일이 버퍼 크기보다 커지면 (즉, 65k 이상의 메서드가 포함됨)이 오류가 발생합니다. 다음 두 가지 방법으로이 오류를 피할 수 있습니다. 1.) ProGuard를 사용하여 사용하지 않는 코드 제거-ProGuard를 실행하도록 앱에 대한 ProGuard 설정을 구성하고 릴리스 빌드에 대해 축소를 활성화했는지 확인합니다. 축소를 사용 설정하면 사용하지 않는 코드를 APK와 함께 제공하지 않습니다.

2.) multidex 지원을 위해 앱을 구성 할 수 있습니다. 사용하려면 다음 링크를 참조 하세요 . https://developer.android.com/tools/building/multidex.html

multidex 지원을 위해 애플리케이션 클래스에서이 메서드를 재정의합니다.

@Override
protected void attachBaseContext(Context base) {
  super.attachBaseContext(base);
  MultiDex.install(this);
}

다음과 같이 내 build.gradle을 수정하십시오.

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.1"

         defaultConfig {
             minSdkVersion 14 //lower than 14 doesn't support multidex
             targetSdkVersion 21

             // Enabling multidex support.
             multiDexEnabled true
         }
}

dependencies {
    compile 'com.android.support:multidex:1.0.0'
}

도움이 되었기를 바랍니다.

EDITS : 코드에서 텍스트 설명을 꺼 냈습니다.


내 프로젝트에서 나는 Google Play 서비스의 어느 부분과 연결했는지에 대해 더 구체적으로 설명함으로써이 문제를 극복했습니다. 특히 나는 변했다

dependencies {
    ...
    compile 'com.google.android.gms:play-services:8.4.0'
}

...에

dependencies {
    ...
    compile 'com.google.android.gms:play-services-maps:8.4.0'
}

in my app module's build.gradle, since all I was really using was the maps API.


What i did was modified build.gradle (Module:app) file.

Initially it was

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

I changed it to

    buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

Then Rebuild and deploy !


In my case was because my emulator was full of apps. I saw how much space the emulator had and was almost nothing so I deleted some apps and with this my problem was resolved


If you're using Android studio 2.0 preview , disable the instant run .

All credit and thanks go for the life saver https://stackoverflow.com/a/34192979/1413998


This helped me for the emulator: Close Emulator. Tools > AVD Manager > Select Emulator Settings > Wipe Data > Cold Boot.. Now Install App.

Reference


None of answer didn't solve my problem

you should also make progaurd for debug too. just add buildtypes to your main gradle file:

buildTypes {
    debug {  // change release to debug
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}

제 경우에는 "dictionary.txt"라는 파일로 인해 발생했습니다. 방금 삭제하고 문제를 해결했습니다.


나는 오늘이 문제에 직면했습니다. 해결책을 찾았습니다. 에뮬레이터의 공간이 얼마나되는지를 보았고 거의 아무것도 아니 었으므로 일부 앱을 삭제하고 문제가 해결되었습니다.

참조 URL : https://stackoverflow.com/questions/25493310/cant-upload-android-app-to-device-stale-dexed-jars

반응형