갤럭시s 내장앱 지우기.

@codemaru · August 10, 2010 · 7 min read

갤럭시s를 사서 첫 부팅을 시키면 정말 덕지덕지 내장 앱들이 잔뜩 깔려있습니다. 흠, 뭐 앱 설치하고 이런 걸 잘 못하시는 분들에게는 그게 도움이 되겠지만 그렇지 않은 사람들에게는 그게 오히려 독이 되는 것 같습니다. 똑같은 프로그램인데도 성능 떨어지고, 디자인 구린 것들이 많기 때문이죠. ㅋㅋ~ 어쨌든 그래서 루팅하면 젤 먼저 하는 작업이 요론 내장앱들을 정리하는 작업입니다.

내장앱은 기본적으로 /system/app에 들어있습니다. 들어가면 정말 말도 안되게 많은 앱들이 있는 걸 보실 수 있을 거예요. 어떻게 보시는지 모르신다구요. ls /system/app 하시면 됩니다. 그런데 다 필요없다고 함부로 지우시면 쪼다 크리 맞는 수가 있습니다. 먼저가신 분들이 친히 정리해 놓으신 자료가 있으니 그걸보고 지우시는게 한결 마음이 편합니다. 아래 글타래는 그런 목록을 정리해둔 자료입니다.

http://www.matpclub.com/board/index.html?id=tipn&asort=&smode=both&skey=%B3%BB%C0%E5&no=7

삭제하는 방법은 주로 파일을 삭제하라고 되어 있는데 외국 포럼을 찾아보니 pm이란 명령어를 사용해서 지우는게 좋다고 나와 있더라고욤. 그래서 요기서는 그걸로 지우는 방법을 간단히 설명드릴까 합니다. Root explorer다, 뭐 핸폰에 있는 쉘 프롬프트로 지워라, 등등 방법은 정말 많은데요. 젤 편한 방법은 adb를 이용하시는 방법입니다. 구글에 뭐 adb 설치 이런식으로 쳐보면 자료가 많으시니 adb 연결은 알아서 각자 하시면 될 것 같구욤.

adb shell로 들어가면 젤 먼저 나오는 프롬프트는 당연히 $예욤. 우리가 보고 싶은 거는 #이죠.  su치면 한방에 넘어가시는 분들도 계시겠지만 잘 안되시는 분들도 계실거예요. 저도 여기서 삽질을 좀 했는데요. 스크린락을 걸어두면 넘어가지질 않습니다. 따라서 환경설정 가셔서 스크린락같은거는 해제한 다음에 su하셔야 합니다. 해제하고 su하면 핸폰창에 루트 권한을 허용하겠냐고 묻는 창이 뜹니다. 그러면 살포시 allow 눌러주시면 되겠습니다.

#을 본다음 다음으로 확인해야 하는 거는 system 디렉토리가 rw로 마운트되었는지 확인하는 겁니다. ro로 마운트되어 있으면 당연히 삭제가 안됩니다. ro로 되어 있다면 아래 명령어를 입력해서 rw로 변경해 주시면 됩니다.

mount -o remount rw /system

여기까지 오면 이제 내장앱을 삭제할 준비는 모두 되었습니다. /system/app에서 지우고 싶은 것들을 마구 지울 수 있습니다. 앞서 설명드렸던 pm을 사용하는 방법을 간단히 설명드리겠습니다. 예를들어 A00000000D.apk 파일을 삭제하고 싶다면 다음과 같이 명령어를 입력합니다.

pm list packages -f | grep A00000000D

입력해서 결과가 아무거도 없다면 해당 프로그램은 아직 설치가 안된겁니다. 그런 경우에는 파일만 삭제하시면 됩니다. 설치가 되었다면 뭔가 메시지가 출력될겁니다. 대충 “파일이름=앱이름” 요론 식인데요 = 다음에 있는 앱이름을 기억해 둡니다. 그리고는 아래 명령어로 삭제를 하시면 됩니다. com.skt.skaf.A00000000D가 앱이름입니다.

pm uninstall com.skt.skaf.A00000000D 

이렇게 지울려면 뭐 한 세월이겠죠. ㅋㅋ~ 그럴 때는 스크립트의 도움을 받으면 편리합니다. 여러분의 편의를 위해서 한방에 지우는 스크립트를 한번 만들어 봤습니다. 소스는 다음과 같구요. 텍스트 파일은 여기서 다운로드 받으실 수 있습니다.

#!/system/bin/sh


mount -o remount rw /system


if [ ! -e /system/app/useless ]  

then  

    mkdir /system/app/useless  

fi


for args in "/system/app/A00000000D.apk com.skt.skaf.A00000000D" \  

    "/system/app/A00000000E.apk com.skt.skaf.A00000000E" \  

    "/system/app/A000Z00040.apk com.skt.skaf.A000Z00040" \  

    "/system/app/andSisWidget3-signed.apk com.neomtel.android.SisWidget" \  

    "/system/app/Dlna.apk com.sec.android.app.dlna" \  

    "/system/app/DrmProvider.apk com.providers.drm" \  

    "/system/app/l000400002.apk com.skt.skaf.l000400002" \  

    "/system/app/l001f00002.apk com.skt.skaf.l001f00002" \  

    "/system/app/l001mtm091.apk com.skt.skaf.l001mtm091" \  

    "/system/app/Melon.apk com.iloen.melon" \  

    "/system/app/MiniDiary.apk com.sec.android.app.minidiary" \  

    "/system/app/SamsungWidget\_CalendarClock.apk com.sec.android.widgetapp.calendarclock" \  

    "/system/app/SisoDrmProvider.apk com.sec.android.providers.drm" \  

    "/system/app/SKAFCore.apk com.skt.skaf.skafcore" \  

    "/system/app/skafLauncher.apk com.android.skafLauncher" \  

    "/system/app/thinkdroid.apk com.tf.thinkdroid.samsung" \  

    "/system/app/TService.apk com.sec.android.TService" \  

    "/system/app/VideoTutorial.apk com.sec.android.app.videotutorial" \  

    "/system/app/Weather.apk com.weathernews.weather" \  

    "/system/app/WeatherWidget.apk com.weathernews.weatherwidget" \  

    "/system/app/Z0000OMPDL.apk com.skt.skaf.Z0000OMPDL" \  

    "/system/app/Z0000UP000.apk com.skt.skaf.Z0000UP000" \  

    "/system/app/SamsungWidget\_Mirror.apk com.sec.android.widgetapp.mirror"  

do  

    set $args


    if [ -e $1 ]  

    then  

        echo Remove $1  

        mv $1 /system/app/useless  

        pm uninstall $2  

    fi  

done

그럼 다운받은 스크립트를 실행하는 방법은 간단합니다. c 루트에 해당 파일이 있다고 생각하면 다음과 같이 입력하면 됩니다. 정상적으로 실행되면 메시지가 출력되면 삭제가 진행될 겁니다. 삭제하는데 몇 초씩 걸리기 때문에 아주 순식간에 끝나지는 않습니다. 물론 목록에 있는 파일이 이미 모두 지워진 경우에는 바로 끝납니다. 불필요한 파일은 /system/app/useless에 백업되어 있습니다. 필요하실 때에 다시 /system/app으로 옮겨서 설치해서 사용하시면 됩니다.

**adb push c:\clean_app.txt /skttmp/clean_app.txt

adb shell

su

sh /skttmp/clean_app.txt**

덧) 스크립트를 제작하시는 분들은 crlf 주의하세요. DOS용 crlf 형태로 저장하면 스크립트가 제대로 실행이 되지 않더군요. 그것 때문에 또 한 2시간 삽질했습니다. ㅠㅠ~

 2  0

 

@codemaru
돌아보니 좋은 날도 있었고, 나쁜 날도 있었다. 그런 나의 모든 소소한 일상과 배움을 기록한다. 여기에 기록된 모든 내용은 한 개인의 관점이고 의견이다. 내가 속한 조직과는 1도 상관이 없다.
(C) 2001 YoungJin Shin, 0일째 운영 중