프로그래밍 언어/Android

Android에서 INSTALL_FAILED_INSUFFICIENT_STORAGE 오류 해결

Rateye 2021. 10. 25. 11:14
728x90
반응형
질문 : Android에서 INSTALL_FAILED_INSUFFICIENT_STORAGE 오류 해결

INSTALL_FAILED_INSUFFICIENT_STORAGE 오류는 모든 Android 개발자의 삶의 골칫거리입니다. 앱 크기 나 사용 가능한 저장 용량에 관계없이 발생합니다. 대상 장치를 재부팅하면 문제가 잠시 해결되지만 곧 다시 나타납니다. 문제가 발생하는 이유를 묻는 사람들의 메시지 보드 게시물이 수백 개 (수천 개는 아니지만) 있지만 Google 직원들은이 문제에 대해 답답할 정도로 침묵하고 있습니다.

간단한 해결 방법이 있습니다. 테스트 기기가 Android 2.2 이상을 실행 "preferExternal" android:installLocation 속성을 애플리케이션의 매니페스트 파일에 추가합니다. 이렇게하면 앱이 휴대 전화의 SD 카드와 같은 기기의 외부 저장소에 강제로 설치됩니다.

예를 들면 :

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.andrewsmith.android.darkness"
          android:installLocation="preferExternal"

이것은 수정 이라기보다는 반창고에 가깝고 완성 된 앱을 기기의 내부 메모리에 설치하려는 경우 이상적이지 않을 수 있습니다. 그러나 적어도 개발 프로세스를 훨씬 덜 실망스럽게 만들 것입니다.

답변

이것은 일시적인 해결 방법 일뿐 실제 수정이 아닙니다.

나에게 이런 일이 발생하고 현재 응답에 만족하지 못한 후 AOSP 소스에서 그것을 파악하기 위해 노력했습니다. REAL 솔루션을 찾았습니다.

먼저, Android 설치 및 업데이트 방법에 대한 (간소화 된) 배경 지식

앱이 처음 설치 될 때 :

  1. APK 파일은 다음으로 저장됩니다.
    /data/app/<full.package.name>-1.apk (1.apk)

 

앱 업데이트시기 :

  1. 업데이트 된 APK 파일은 다음과 같이 저장됩니다.
    /data/app/<full.package.name>-2.apk (2.apk)
  2. 첫 번째 버전 (1.apk)이 삭제됩니다.

 

 

다음 업데이트에서 :

 

우리 대부분이 겪고있는 문제는 애플리케이션이 업데이트 될 때 발생하지만 이전 APK 삭제에 실패합니다. 그 자체로 아직 업데이트가 실패하지는 않지만 /data/app 에 두 개의 APK 파일이 있습니다.

다음에 앱을 업데이트하려고하면 (1.apk)와 (2.apk)가 비어 있지 않기 때문에 시스템에서 임시 파일을 이동할 수 없습니다. File # renameTo (File)은 예외를 던지지 않고 대신 부울 PackageManager를 반환하기 때문에 실패가 여유 공간의 양과 관련이 없더라도 INSTALL_FAILED_INSUFFICIENT_STORAGE를 반환하는 이유를 알 수있는 방법이 없습니다.

운영:

adb shell "pm uninstall <full.packge.name>"
                    adb shell "rm -rf /data/app/<full.package.name>-*"
                    

또는

앱 제거

좋아하는 방법을 사용하여 둘 다 삭제 :

/data/app/<full.package.name>-1.apk

/data/app/<full.package.name>-2.apk

유사한 방식으로 향후 설치를 차단하는 다른 항목이 없는지 확인하십시오. 제 경우에는 /data/app-lib/<full.package.name>-1 디렉토리가 남아 있습니다! 이 경우 SD 카드에 대한 설치가 작동하고 이후 내부 메모리로 이동했습니다. ( -1 끝나지 않고 /data/app-lib/<full.package.name> .)

  • 외부 저장소에 설치하는 코드가 크게 다르며 동일한 문제가 없습니다.
  • /data/app 에있는 APK 파일의 한 버전 만 삭제됩니다. 그렇기 때문에 한 번 다시 설치할 수 있지만 업데이트 할 수는 없습니다.
  • 이 버그가 발생할 때 에뮬레이터의 여유 공간은 실제로 관련이 없습니다.

 

 

출처 : https://stackoverflow.com/questions/4709137/solution-to-install-failed-insufficient-storage-error-on-android
728x90
반응형