안드로이드 스튜디오에서 에뮬레이터를 실행하고 개발중인 애플리케이션을 실행하려 하면 로그 창에 아래와 같이 표시되면서 앱 설치에 실패하는 현상이 발생합니다.
Launching lib/main.dart on sdk gphone64 arm64 in debug mode... Running Gradle task 'assembleDebug'... ✓ Built build/app/outputs/flutter-apk/app-debug.apk Installing build/app/outputs/flutter-apk/app-debug.apk... Uninstalling old version... Error: ADB exited with exit code 1 Performing Streamed Install adb: failed to install /Users/user/MyProject/build/app/outputs/flutter-apk/app-debug.apk: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE: Failed to override installation location] Installing build/app/outputs/flutter-apk/app-debug.apk... Error: ADB exited with exit code 1 Performing Streamed Install adb: failed to install /Users/user/MyProject/build/app/outputs/flutter-apk/app-debug.apk: Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE: Failed to override installation location] Error: Failed to install APK again. Error launching application on sdk gphone64 arm64.
위 에러 메시지에서 표시되는 주요 문제는 ‘INSTALL_FAILED_INSUFFICIENT_STORAGE‘ 라고 표시된 부분입니다. 무슨 이유로 이러한 문제가 발생하는 것일까요?
이 문제는 사실 코드상에서 잘못 작성하여 발생하는 오류 보다는 에뮬레이터 기기에서 발생하는 문제라고 볼 수 있습니다. 에러 메시지 내용대로 에뮬레이터의 스토리지(저장장치)와 관련하여 문제가 발생하였기 때문에 설치에 실패한 것입니다.
가장 큰 원인은 에뮬레이터에 할당된 최대 저장 공간이 너무 작다는 것입니다. 일반적으로 에뮬레이터를 생성하면 작게는 2GB 정도의 작은 공간만 할당하려 합니다.
먼저 저장 공간을 늘리지 않고 해결하는 방법이 있습니다. 먼저 안드로이드 스튜디오에서 ‘Tools – Device Manager’ (AVD Manager)를 열고 실행하려는 에뮬레이터의 설정에서 더보기 아이콘을 클릭한 후 ‘Wipe Data’를 선택하여 기본 데이터를 제외한 데이터들을 모두 초기화하는 방법입니다. 설치했거나 다운로드받은 앱과 데이터를 모두 삭제하고 초기 이미지 상태로 되돌리며, 열려있는 에뮬레이터의 재부팅이 필요할 수 있습니다.
그래도 더 많은 저장 공간이 필요하다면 이미 만든 에뮬레이터의 설정을 변경하여 기존 저장 공간을 늘릴 수 있습니다.
이번에도 ‘Tools – Device Manager’ (AVD Manager)를 엽니다. 변경하려는 에뮬레이터에서 더보기 아이콘을 클릭한 후 ‘Edit’을 클릭합니다.
이제 해당 에뮬레이터의 설정을 변경할 수 있습니다. 여기서 왼쪽 하단의 ‘Show Advanced Settings’를 클릭하여 전체 설정이 보이도록 합니다.
하단으로 스크롤을 내리다보면 ‘Memory and Storage’ 항목에 ‘Internal Storage’ 부분이 보일 것입니다. 이 것이 내장 저장 공간 용량이며 이 값을 늘려 저장 공간을 여유롭게 설정할 수 있습니다. 필요한 경우 SD Card(외장 저장 공간)의 저장 공간을 수정할 수도 있습니다.
수정을 완료했다면 우측 하단의 ‘Finish’를 눌러 적용합니다. 적용 후 에뮬레이터가 열려있다면 종료 후 다시 시작해야 합니다.
이제 다시 애플리케이션을 빌드하여 설치하면 해당 문제가 해결 될 것입니다.
리눅스 명령어 - kill, killall 리눅스 kill 명령어는 특정 프로세스를 종료해주는 명령어입니다. 백그라운드에서 실행되고 있는…
JavaScript는 역사가 긴 스크립트 프로그래밍 언어입니다. 세월이 흐르면서 많은 자바스크립트 표준이 만들어졌고, 현재는 많은 문법적…
NodeJS 테스트 프레임워크인 Mocha는 비동기 테스트를 지원합니다. 간혹 특정 테스트 스크립트를 작성하고 실행하면 아래와 같이…
언제부턴가 윈도우 11을 처음 설치할 때 마이크로소프트(Microsoft) 계정 로그인을 강제로 요구하게 되었습니다. 물론 마이크로소프트 계정이…
애플 에어팟 프로 2 (AirPods Pro 2) 케이스에는 스피커가 내장되어 있습니다. 그런데 간혹 아무 것도…