programing

Android에서 INSTALL_FAILED_INSUFFICY_STORIAGE 오류에 대한 솔루션

stoneblock 2023. 6. 3. 08:07

Android에서 INSTALL_FAILED_INSUFFICY_STORIAGE 오류에 대한 솔루션

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

간단한 해결 방법이 있습니다. 2에는 테트스상을 Android 2.2이실행중경다추다가를 합니다.android:installLocation파일에 값 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " 을 지정합니다."preferExternal"이렇게 하면 전화기의 SD 카드와 같은 장치의 외부 스토리지에 앱이 강제로 설치됩니다.

예:

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

이것은 수정이라기보다는 반창고에 가까우며, 완성된 앱을 장치의 내장 메모리에 설치하는 것이 이상적이지 않을 수 있습니다.하지만 적어도 개발 과정을 훨씬 덜 좌절하게 만들 것입니다.

이는 일시적인 해결책일 뿐 실제 해결책은 아닙니다.

이런 일이 저에게 일어났고 현재의 반응에 만족하지 못한 후, 저는 AOSP 소스에서 그것을 알아내려고 일하러 갔습니다.저는 진정한 해결책을 찾았습니다.

설명.

먼저 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)이 삭제됩니다.

다음 업데이트 시:

  1. 새 APK는 (1.apk)로 저장되고 (2.apk)는 삭제됩니다(영구적으로 반복).

 

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

다음 번에 앱을 업데이트하려고 하면 (1.apk) 및 (2.apk) 둘 다 비어 있기 때문에 시스템이 임시 파일을 이동할 수 없습니다.File#renameTo(File)는 예외를 발생시키지 않고 부울 PackageManager를 반환하기 때문에 사용 가능한 공간의 양과 아무런 관련이 없음에도 불구하고 INSTALL_FAILED_INSUFFICY_STORIAGE를 반환하는 이유를 알 수 없습니다.

해결책

실행:

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

OR

앱 제거

원하는 방법을 사용하여 둘 다 삭제합니다.

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

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

이와 유사한 방식으로 향후 설치를 차단하는 다른 방법이 없는지 확인합니다.저 같은 경우에는./data/app-lib/<full.package.name>-1디렉터리가 남아 있습니다!이 경우 SD 카드에 대한 설치가 작동하고 이후에 내장 메모리로 이동했습니다. (생성 중/data/app-lib/<full.package.name> 없이-1종료.)

다른 "솔루션"이 작동한 이유

  • 외부 스토리지에 설치하기 위한 코드가 크게 달라 동일한 문제가 발생하지 않습니다.

  • 하면 앱제거면다서 APK 삭버제에서 의 한 됩니다./data/app따라서 한 번만 다시 설치할 수 있지만 업데이트할 수는 없습니다.

  • 이 버그가 발생할 때 에뮬레이터의 사용 가능한 공간의 양은 실제로 관련이 없습니다.

Android 에뮬레이터의 메모리 용량을 늘려야 합니다.두 가지 방법이 있습니다.

  1. Android Project의 루트를 마우스 오른쪽 단추로 클릭하고 "다른 이름으로 실행"으로 이동한 다음 "구성 실행..."으로 이동합니다. 왼쪽 트리에서 "Android Application" 노드를 찾습니다.그런 다음 프로젝트를 선택하고 창의 오른쪽에 있는 "대상" 탭으로 이동하여 "추가 에뮬레이터 명령줄 옵션" 필드(때로는 창을 더 크게 만들어야 함)를 찾은 다음 마지막으로 "-partition-size 1024"를 붙여넣습니다.적용을 클릭한 다음 실행을 클릭하여 에뮬레이터를 사용합니다.

  2. Eclipse의 환경설정으로 이동한 다음 "기본 에뮬레이터 옵션" 필드에서 "실행" "-partition-size 1024" 추가를 선택합니다.적용을 클릭하고 에뮬레이터를 평소와 같이 사용합니다.

이 질문을 올려주셔서 감사합니다.일부 개발자에게 도움이 될 수 있는 추가적인 통찰력이 있습니다.

에뮬레이터가 아닌 장치에서 응용 프로그램을 디버깅하는 중입니다.는 의장치 21MB에서 기능을 합니다./data(" shell할 때 ") 내 않습니다. ("adb shell"은 "df"로 표시됨) 5MB로 표시됩니다.하지만 전화기를 재부팅하거나 adbd를 다시 시작하지 않고 기기의 다른 앱을 삭제하면 INSTALL_FAILED_INSUFFICY_STORAGE가 잠시 사라졌다가 다시 돌아오는 것을 발견했습니다.

제 20MB 이상의 한 것 ./data게다가 앱을 디버깅할 때마다 무언가가 새고 있었습니다.

는 " shell하고 "adb shell" 했습니다./data가 있는 디렉토리

cd /data
ls -a -l -R

그리고 저는 모든 공간이 어디로 가는지 보기 위해 5000줄의 출력물을 보았습니다.

몇 달 전 디버깅 세션에서 가져온 오래된 로그 파일 형식의 디렉터리에 있는 장치에서 방대한 공간이 낭비된 것을 발견했습니다.

이 파일들은 제 로그 파일이 아닙니다. Android 인프라의 일부에서 생성되었습니다.

저는 그것들을 삭제했고, 설정 앱에서 특정 앱에 귀속되지 않은 58MB를 즉시 저장했습니다.저는 작은 기기를 가지고 있기 때문에 58MB가 매우 중요합니다(약 40%).

지금까지 여러 번 실행한 후 다시 INSTALL_FAILED_INSUFFICY_STORAGE를 얻지 못했습니다.OP가 그의 장치에 충분한 공간이 있다고 제안하지만 (얼마나 많은지는 말하지 않았지만) 그것이 진짜 문제이기를 바랍니다.

여러분 중 일부는 정기적으로 삭제함으로써 INSTALL_FAILED_INSUFFICY_STORADE를 탈출할 수 있기를 바랍니다./data/klog/*.

아니면, 적어도 당신은 할 수 있습니다.ls -a -l -R/data모든 공간이 어디로 가는지 확인합니다. 실제로 어떤(숨겨진) 공간 문제가 있는지 확인합니다.

다음은 도움이 됩니다.

  • 장치에 대한 셸 열기

    adb shell
    
  • 들어오는 APK가 처음 복사되는 임시 디렉토리로 이동합니다.

    cd /data/local/tmp
    
  • 사용 가능한 파일을 나열하고 원하는 대로 삭제

    rm * // use at your own risk, good practice to list files first
    

이것은 지금까지 실제 기기에서 신뢰할 수 있었습니다.


편집: 이것은 위의 해결책만큼 신뢰할 수 있는 해결책이 아닌 것으로 밝혀졌습니다.

저는 여러 가지 해결책을 시도했습니다.아무것도 도움이 되지 않았습니다.드디어 SD 메이드라는 을 찾았습니다.도움이 되었습니다.

뿌리가 없는 장치에는 기능이 제한되어 있다고 합니다.내 것은 뿌리가 있기 때문에 사람들로부터 효과적인 시나리오를 듣는 것을 보는 것이 좋을 것이고 만약 그것이 나에게 효과가 있었다면 그것은 단지 운이 좋았을 것입니다(어쨌든 그것은 예측할 수 없는 문제입니다).

참고: 저는 앱과 관련이 없습니다.방금 검색해서 찾았어요.

다음을 포함하여 해결했습니다.android:installLocation="auto"東京의 <manifest>AndroidManifest.xml 파일입니다.

나는 애플리케이션의 매니페스트 파일에 추가 행을 추가했는데, 그것은android:installLocation="preferExternal"이 라인을 사용하면 외부 스토리지에 앱을 설치할 수 있습니다.아래의 예를 참조하십시오.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.nasir.phonegap"
    android:installLocation="preferExternal" >

다음을 시도했습니다.

  • 단말기 다시 시작
  • 이전 APK 삭제
  • 내 APK 재구축
  • 장치에서 이전 복사본 제거
  • 다시 설치

당신에게도 똑같이 작동하는지 확인하세요.

에뮬레이터와 관련된 문제는 공간이 남아 있지 않은 경우입니다./data칸막이를 치다

예를들면,

% adb shell df

Filesystem             Size   Used   Free   Blksize
/dev                   252M    32K   252M   4096
/mnt/asec              252M     0K   252M   4096
/mnt/obb               252M     0K   252M   4096
/system                154M   154M     0K   4096
/data                   64M    57M     6M   4096
/cache                  64M     1M    62M   4096

의 샘플 입니다./data/app디렉터리:

% adb shell ls -l /data/app

-rw-r--r-- system   system      19949 2011-10-12 17:09 CubeLiveWallpapers.apk
-rw-r--r-- system   system      27670 2011-10-12 17:09 GestureBuilder.apk
-rw-r--r-- system   system      34341 2011-10-12 17:09 SoftKeyboard.apk
-rw-r--r-- system   system      20151 2011-10-12 17:09 WidgetPreview.apk

는 여분의 APK 파일을 제거했습니다.설치할 때마다 새 APK 파일이 생성되는 것 같습니다.여분의 APK 파일만 제거하면 됩니다.

예를들면,

adb shell rm /data/app/com.brooklynmarathon.calendarapi2-1.apk

은 나의경실는패입니다.com.android.providers.media에뮬레이터에서 . 앱. x86 드안로에마서에니다습주했터이뮬레드이▁app다니.내가 무슨 짓을 한 거지?

$ adb shell df
Filesystem             Size   Used   Free   Blksize
...
/data                  224M   209M    14M   4096
....

사용 가능한 공간이 너무 부족합니다./data

$ adb shell du /data
...
409870  /data/data/com.android.providers.media
...

거의 모든 것이 단일 앱으로 소비되었습니다!시스템 앱이기 때문에 삭제하지 않는 것이 좋다고 생각합니다.대신 앱 데이터를 정리했습니다.

$ adb shell pm clear com.android.providers.media
Success
$ adb shell df
Filesystem             Size   Used   Free   Blksize
...
/data                  224M     8M   215M   4096
...

디스크가 지워지고 앱이 설치되었습니다.

이 주제의 첫 번째 게시물에 답변하는 중...

증상 : 일부 앱이 설치되지 않고 공간이 없으며 실제로는 내부 및 외부 스토리지 모두에 충분한 공간이 있습니다!!!솔루션: 기본적으로 외부 설치를 사용하지 않도록 설정합니다.

외부 설치를 기본적으로 설정하는 방법:

adb shell pm set-install-location 2

외부에서 설치할 수 없는 많은 앱(예: 광고 블록 + 등)에 설치할 수 없게 합니다.

그렇다면 해결책은

adb shell pm set-install-location 0

또는

adb shell pm set-install-location 1

0: auto (if one is full - or irrelevant !!! - it select the other)
1: internal
2: external

저는 이 글을 쓰는 것이 좀 이상하지만, 어떤 경우에는 그것이 사실이 아니라고 100% 확신할 수 없습니다(저에게 효과가 있었습니다).다음과 같은 증상이 있는 경우:

  • 물리적 장치를 사용하여 작업을 해오셨습니다(저의 경우 삼성 갤럭시 에이스).
  • 당신은 며칠 연속으로 발전해 왔고,
  • 당신의 전화는 밤낮없이 연결되어 있었습니다.
  • 며칠 후부터 이 오류가 발생하기 시작했고, 계속해서 악화되었습니다.
  • 다른 어떤 대답도 당신에게 효과가 없었습니다.
  • 당신도 나처럼 체념하고 있어요

그런 다음 다음을 시도합니다.

  • 일을 하지 않을 때는 전화 플러그를 뽑으세요!

저는 핸드폰의 플러그를 뽑고 하루 종일 핸드폰을 쉬게 했습니다.배터리가 좀 닳았어요.그 후 다시 연결하고 다시 디버깅을 시작했습니다.이번에는 모든 것이 잘 작동했습니다!제 말은 예전처럼 정말 괜찮다는 겁니다.

이 오류가 배터리 관련 하드웨어 때문일 수 있습니까?아직도 이렇게 생각하니 기분이 이상한데, 지금은 가끔 (그리고 밤에도) 계속 전화를 끊는데 문제가 안 돌아옵니다.

이 문제가 여전히 존재하기 때문에 개발 목적으로 RacZo의 답변에 뭔가 추가해야겠다고 생각했습니다.Eclipse 플러그인을 사용하지 않거나 원본이 아닌 .apk만 사용하는 경우 에뮬레이터를 시작할 때 동일한 옵션을 사용하여 명령줄에서 파티션 크기를 늘릴 수 있습니다.

emulator -avd <emulator name> -partition-size 1024

제가 알기로는 이 옵션은 developer.android.com 에 문서화되어 있지 않기 때문에 사람들이 이 솔루션을 찾을 수 있도록 여기에 게시해야겠다고 생각했습니다.

에뮬레이터 솔루션

..Android디렉토리입니다.일반적으로 홈 디렉토리에 있습니다.그럼 다음으로 이동avd그런 다음 변경할 avd의 이름이 있는 디렉토리를 엽니다.

이제 편집합니다.config.ini파일을 작성하고 다음 행을 추가하거나 다음 행을 수정합니다.

disk.dataPartition.size=1024

에▁where디1024MB 파일 형식으로 입니다.을 저장한 합니다.wipe user data되었습니다.이제 에뮬레이터의 크기가 새 것입니다.

삼성 갤럭시 에이스는 사양에 158MB의 내부 스토리지를 광고하고 있지만 핵심 애플리케이션과 서비스는 그 중 약 110MB를 소비합니다(이를 점검하기 위해 기기의 작업 관리자를 사용했습니다).제 앱은 자산이 많아서 52MB였습니다.제가 45MB 이하의 것들 중 일부를 삭제한 후, 앱은 문제 없이 설치할 수 있었습니다.장치에서 내부 저장소가 거의 가득 찼다는 경고를 여전히 표시하고 있었고, 앱을 하나만 설치했는데도 일부 앱을 제거해야 했습니다.

.apk 번들의 릴리스 버전을 설치한 후 제거하면 장치에 99MB의 사용 가능한 공간이 표시되므로 결국 장치를 복잡하게 만드는 디버깅 정보일 수 있습니다.Louis Semprini의 답변을 참조하십시오.

해결책은 간단합니다.

AVD 관리자를 엽니다.AVD를 편집합니다.

하드웨어 섹션 아래에는 "새로 만들기..." 및 "삭제"와 함께 나열된 몇 가지 속성이 있습니다.

새로 만들기를 누릅니다.데이터 파티션 크기를 선택합니다."512MB"로 설정합니다(MB는 필수).그리고 당신은 끝났습니다.여전히 문제가 발생하는 경우 동일한 방법을 사용하여 시스템 및 캐시 파티션을 늘립니다.

이 모든 것이 여기에 문서화되어 있습니다. http://developer.android.com/guide/developing/devices/managing-avds.html

명령행에서 에뮬레이터에서 응용 프로그램을 제거하거나 설정으로 이동하여 응용 프로그램을 제거합니다.그러면 오류가 발생하지 않습니다.

새로운 Nexus 4와 Adobe AIR로 구축된 APK에서 이 문제에 부딪혔습니다.제 매니페스트에는 이미 안드로이드:installLocation="preferExternal"이 있습니다.저도 전화를 하고 있다는 것을 알았습니다.adb install-s옵션(sdcard와 같은 공유 대용량 저장소에 패키지 설치)은 오버킬처럼 보였습니다.

제거하기-s에서 깃발을 내미는adb install문제를 해결해 주었습니다.

Sideload Wonder Machine을 사용하여 실제 전화기에 앱을 설치할 때 이 오류가 발생했기 때문에 이 문제를 발견했습니다.문제는 /payload 디렉토리에 여러 개의 .apk 파일이 있다는 것입니다.저는 이것이 지원되는 것이라고 생각했지만, 하나를 제외하고 모두 제거했을 때 오류가 사라졌습니다.

에뮬레이터를 실행하는 동안 Android 장치를 usb에 연결하지 마십시오.

해결 방법:

를 사용하지 않고 2.1로 컴파일android:installLocation="preferExternal".

괜찮니?

2.2로컴을 포함하여 2android:installLocation="preferExternal".

이 버전은 여전히 8 미만의 SDK 버전에 설치됩니다(XML 태그는 무시됨).

실제 장치를 사용하는 경우에는 내장 메모리가 부족할 뿐입니다.Android 설정 -> 응용 프로그램으로 이동하여 일부 응용 프로그램을 SD 카드로 이동하거나 일부 응용 프로그램을 제거하면 됩니다.

에뮬레이터를 사용하는 경우 RacZo의 답변을 참조하십시오.

전체 ROM 업데이트 후 ADB 셸을 사용하여 SD 카드 디렉터리에 약 50개의 앱을 일괄 설치하려고 할 때 동일한 오류가 발생했습니다.

for x in *.apk; do pm install -r $x; done

일부는 설치되었지만 대부분은 INSTALL_FAILED_INSUFFICY_STORY 오류로 실패했습니다.실패한 모든 앱은 이름에 공백이 있습니다.일괄적으로 이름을 바꾸고 다시 시도했습니다.이번엔 다 통했어요.재부팅 같은 것은 하지 않았습니다.여러분이 직면한 문제가 아닐 수도 있지만, 제가 직면한 문제와 동일한 문제를 검색하는 데 도움이 될 수도 있습니다.

에뮬레이터에서 응용 프로그램을 실행하고 있지만 이 문제가 지속되면 알림 관리자에게 문의하십시오.아이콘과 "전화 메모리가 가득 찼습니다"에 대한 알림이 표시되면 에뮬레이터에 이미 많은 응용 프로그램이 설치되어 있음을 의미합니다.현재 "설정 >> 응용프로그램 관리 >> 응용프로그램 선택 >> 제거"에서 원하지 않는 여러 응용프로그램을 제거합니다.
세트 그세트.
이제 프로그램을 다시 실행합니다.

오늘 이클립스를 사용하여 테스트/디버깅할 때 이 오류가 발생했습니다.

애플리케이션 이름에 노르웨이 특수 문자(""", "ø", """)를 사용한 것이 실수였습니다.앱 이름을 리팩터링("ø" 대신 "o" 사용)했더니 앱이 올바르게 설치되었습니다.

문제가 아닐 수도 있지만, 다른 사용자가 동일한 오류를 발견할 때 참고할 수 있습니다.

이 스레드의 다른 모든 것을 시도해 본 후, 저는 제 자신의 문제가 .apk 파일에 대한 경로가 너무 길기 때문이라는 것을 알게 되었습니다.그래서 저는 .apk가 있는 디렉토리에 CD를 넣어 다음을 수행했습니다.

cd /Very/Long/Path/To/Package/
adb install mypackage.apk

대신에

adb install /Very/Long/Path/To/Package/mypackage.apk

그리고 잘 작동했어요... 잘 설치됐어요

다른 사람에게 도움이 될 거라고 생각했어요

저의 경우 일식의 확장 메모리를 늘려서 수정이 되었고, 일식에서 -Xmx768m의 값을 변경했습니다.이니

저는 결국 기기에서 앱을 제거한 후 이클립스에서 다시 설치하게 되었습니다.이것은 제가 정기적으로 사용할 때마다 기기에서 발생하는 문제입니다. 하지만 오늘 저는 개발에서 이러한 메시지를 받았습니다.

저도 같은 문제에 직면했고, "공장 데이터 재설정"을 수행했는데, 그 후에는 문제가 없었습니다.

권한이 않았습니다. 할 수 ./data/그리고 제 지원서는 2MB 미만입니다.

한동안 Eclipse 프로젝트를 청소하고 전화기를 다시 시작했지만 결국 작동하지 않았습니다(아마 업데이트 후).

응용 프로그램 캐시를 정리하면 문제가 해결되어 전화기를 다시 시작하거나 응용 프로그램을 제거할 필요가 없습니다.

시장에는 여러 애플리케이션의 캐시를 한 번에 지우는 데 사용할 수 있는 애플리케이션이 있습니다."clean"을 검색합니다.

시간이 좀 걸리지만 어떤 경우에도 작동해야 합니다.

  • 전화기에 Adao Task Manager와 같은 파일 관리자를 설치합니다.

USB를 통해 연결하고 USB 스토리지를 활성화합니다.APK 파일을 로컬 빌드에서 전화기로 복사합니다(애플리케이션 설정에서 알 수 없는 소스를 허용해야 할 수 있음).

그러면 APK 파일을 탭하기만 하면 안드로이드가 설치할 것입니다.말씀드렸다시피 시간이 많이 걸리지만 가끔 재부팅하는 것보다 빠를 수도 있습니다.

언급URL : https://stackoverflow.com/questions/4709137/solution-to-install-failed-insufficient-storage-error-on-android