내장 저장공간이 32GB밖에 되지 않는 스마트폰을 쓰다가 앱이 너무 많아져 128GB SD 카드를 구매하고, SD 카드를 기본 설치 저장소로 지정했다고 가정해 보겠습니다. 그런데 시간이 지날수록 내장 메모리는 거의 가득 찬 반면, SD 카드는 거의 사용되지 않는 기이한 현상을 겪게 됩니다. 대체 무슨 일이 벌어지고 있는 걸까요?
원인은 간단합니다. 앱은 본질적으로 내부 저장소에서 실행되도록 설계되어 있습니다. 개발자가 설정하면 SD 카드에서도 실행할 수 있지만, 대부분의 개발자는 성능 문제 때문에 앱을 내부 저장소에 맞춰 최적화합니다. 일반적으로 내부 저장소의 읽기·쓰기 속도가 SD 카드보다 훨씬 빠르기 때문입니다. 결국 SD 카드를 '기본 설치 위치'로 지정해도, 개발자가 의도한 앱의 설정이 사용자의 설정을 우선해 덮어쓰게 되는 것입니다. 그렇다면 어떻게 앱을 강제로 SD 카드에 설치할 수 있을까요? 이번 글에서는 이를 실현하는 두 가지 방법을 소개합니다.
시작하기 전에: 루팅이 필요합니다
아래에서 소개하는 방법들을 사용하려면 스마트폰이 루팅(rooting)되어 있어야 합니다. 아직 루팅하지 않았다면 먼저 안드로이드 폰 루팅 방법에 대한 가이드를 검색해 진행한 뒤 돌아오세요.
방법 1: Link2SD 앱 활용하기
앱을 내부 저장소에서 SD 카드로 강제 이동시켜 주는 앱이 몇 가지 있습니다. 다만 성공률은 앱마다 천차만별입니다. 예를 들어 일부 앱은 /cache 폴더만 SD 카드로 옮기고 나머지는 내부 저장소에 그대로 두기도 합니다. 사실 이런 앱들은 '설정 > 저장공간 > 앱'으로 이동해 'SD 카드로 이동' 버튼을 누르는 것과 크게 다르지 않으며, 그 버튼을 GUI로 감싼 바로가기에 불과한 경우가 많습니다.
진짜 원하는 것은 앱 전체를 완벽하게 옮겨주는 도구입니다. 이를 위해서는 Link2SD가 필요합니다. 단, Link2SD를 사용하려면 폰이 init.d 스크립트를 지원해야 합니다.
init.d 지원 여부를 확인하려면 플레이 스토어에서 Universal Init.D를 설치하세요.

먼저 Universal Init.D를 설치하고 실행한 뒤 'Test(테스트)' 버튼을 누릅니다. 그다음 폰을 재부팅하고 Universal Init.D를 다시 실행하면 init.d 지원 여부 테스트 결과를 알려줍니다. 만약 폰이 init.d를 지원하지 않는다면, Universal Init.D의 'Off/On' 토글 버튼을 사용해 필요한 지원을 에뮬레이션할 수 있습니다.

준비가 끝났으면 플레이 스토어에서 Link2SD를 설치하고 실행합니다. 오른쪽 상단의 첫 번째 버튼을 누른 뒤, 앱 목록을 Internal storage(내부 저장소) 기준으로 필터링하세요.

SD 카드로 옮기고 싶은 앱을 찾아 누릅니다. 마시멜로(Marshmallow) 이상 버전이라면 "Second partition not found(두 번째 파티션을 찾을 수 없음)"라는 메시지는 무시해도 됩니다. 마시멜로부터는 안드로이드가 SD 카드를 별도 장치가 아닌 내부 저장소의 확장으로 취급하기 때문입니다. 이후 'Android App2SD' 메뉴 아래의 'Move to SD card(SD 카드로 이동)' 버튼을 누르면 됩니다.
방법 2: ADB 명령어 활용하기
이 방법은 다소 기술적이지만, 폰이 항상 앱을 SD 카드에 설치하도록 강제할 수 있다는 큰 장점이 있습니다. 즉, 매번 별도의 앱으로 내부 저장소에서 SD 카드로 옮길 필요가 없습니다. ADB 터미널이 익숙하지 않다면 먼저 'Windows에 ADB 설치하는 방법' 관련 자료를 참고해 환경을 준비하세요.
ADB 설정이 끝나면 USB 케이블로 폰을 PC에 연결하고, PC에서 ADB 터미널을 실행한 뒤 다음 명령어를 입력합니다:
adb shell pm set-install-location 2
설정을 원래대로 되돌리려면 다음을 입력합니다:
adb shell pm set-install-location 0
위 명령어가 작동하지 않는다면, SD 카드를 PC에서 완전히 포맷한 후 안드로이드 폰에 다시 삽입하고, Internal(내부)이 아닌 Portable(휴대용) 저장소로 선택해야 할 수 있습니다. 다만 주의할 점이 있습니다. 기기가 이전에 SD 카드를 내부 저장소 확장 형태로 사용하고 있었다면, 공장 초기화 없이는 단순 포맷만으로 휴대용 저장소로 전환할 수 없습니다. 마시멜로 이상을 탑재한 일부 안드로이드 폰은 시스템 차원에서 SD 카드를 별도 저장 장치가 아닌 내부 저장소의 확장으로 통합(adopt)하기 때문입니다. 이 경우 SD 카드에는 중요한 시스템 데이터가 상당 부분 저장되어 있어, SD 카드를 제거하면 안드로이드 시스템 전체가 오작동할 수 있습니다.