Basilica android

sharku.egloos.com



안드로이드 pm 명령어 정리 by sharku

테스트 환경은
장치 : AVD
안드로이드 버전 : 4.1.2 
커널 버전 : 2.6.29
입니다.

-------------------------------------------

안드로이드에서 사용가능한 쉘 명령어입니다

pm의 기본 실행 권한은 -rwxr-xr-x(755) 입니다

쉘에서 pm 이라고 하면 usage가 출력됩니다

usage: pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [FILTER]
       pm list permission-groups
       pm list permissions [-g] [-f] [-d] [-u] [GROUP]
       pm list instrumentation [-f] [TARGET-PACKAGE]
       pm list features
       pm list libraries
       pm path PACKAGE
       pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f]
                  [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>] PATH

       pm uninstall [-k] PACKAGE
       pm clear PACKAGE
       pm enable PACKAGE_OR_COMPONENT
       pm disable PACKAGE_OR_COMPONENT
       pm disable-user PACKAGE_OR_COMPONENT
       pm grant PACKAGE PERMISSION
       pm revoke PACKAGE PERMISSION
       pm set-install-location [0/auto] [1/internal] [2/external]
       pm get-install-location
       pm set-permission-enforced PERMISSION [true|false]


크게
list
path
install
uninstall
clear
enable
disable
great
revoke
set-install-location
get-install-location
set-permission-enforced

이렇게 정리할수 있겠습니다

이제 시작해보겠습니다.
실제 명령어는 굵게 표시했으니 참고하시면 됩니다.

1. list

리스트는 다시 여러개의 항목으로 나눠집니다
packages
permission-groups
permissons
instrumentation
features
libraries

1) packages
pm list packages 라고 쓰면 현재 설치된 패키지 목록이 출력됩니다.
여기서 출력되는 패키지이름들이 실제 패키지명입니다
카카오톡 이런건 패키지명이 아닙니다.

여기서는 모든 패키지가 출력됩니다

그런데 친절하게도 옵션들이 있습니다.
-f  패키지명과 연관된 apk 파일의 경로를 보여줍니다
-d 실행 줄가능한 패키지를 보여줍니다
-e 실행가능한 패키지들을 보여줍니다
-s 시스템패키지만 보여줍니다
-3 시스템패키지가 아닌 서드파티 패키지만 보여줍니다(사용자가 설치한 앱)
-i 각 패키지별로 인스톨러를 표시해줍니다(보통은 null)
-u 언인스톨된 패키지까지 포함해서 보여줍니다(그런데 안보임..)

2) permission-groups
pm list permission-groups 라고 쓰면 권한이 주어진 그룹을 출력합니다.

3) permissions
pm list permissions  알려진 모든 permission을 보여줍니다.
옵션은 아래와같습니다
-g 그룹별로 부여된 permission들을 보여줍니다(permission-groups 에있는 group들을 기본으로 합니다)
-f permission 별로 상세 내용을 보여줍니다
   (각 permission 별로 package, label, descryption, protectionLevel 을 보여줍니다)
-s 간단하게 각 항목(그룹)별로 해당하는 설명과 permission 들을 보여줍니다
항목들은
development tools
Your personal informaiton
Services that cost you money
Your location
Your messages
Network communication
Your accounts
Storage
Phone calls
Hardware controls
System tools
ungrouped
-d 위함한 permission 을 보여줍니다(기본적으로는 아무것도 없습니다)
-u 위험하거나 일반적인 permission 들을 보여줍니다

4) instrumentation
pm packages instrumentation 

-f 파일경로와 함께 보여줍니다.

5) features
pm list features 시스템의 feature들을 보여줍니다.
블루투스, 카메라, 등등 이런것을 system feature 라고 합니다.


2. path
pm path [package이름]
패키지의 설치 경로를 보여줍니다.
pm list packages -f 와 기능은 똑같지만
이 명령어와 차이점은 다른 점은 한개만 보여준다는 겁니다.


3. install
pm install [apk파일명]
adb install [파일명] 과 같은 역할을 합니다.
차이점은 안드로이드의 쉘에서 실행해야 한다는 것이죠.

-l forward-lock 이라는 설정을 추가해서 설치합니다.
FORWARD-LOCK 라는 것은 이후 OS버전에서 앱이 업데이트 되지 않도록 하는 것입니다.
이후버전의 테스트 중이라거나 등등 특별한 상황에서 쓰이는 값입니다.
-r 설치된 앱을 재설치하는 옵션입니다.
-t 앱에 테스트를 허락하는 옵션입니다.
-i 인스톨러 패키지를 지정합니다.(이름을 써주면 됩니다)
-s 앱을 sdcard 에 설치합니다.
-f 앱을 내부 저장장치에 설치합니다.


4. uninstall
pm uninstall [패키지명]
설치할때는 파일명이지만 삭제할때는 패키지명으로 삭제해야 합니다 ㅎ
삭제할때는 /data/app 폴더의 앱까지 지워버립니다.
-k 삭제 후에도 앱들의 데이터는 그대로 둡니다.


5. clear
pm clear
패키지와 관련된 모든 데이터들을 삭제해버립니다.
패키지를 삭제하지는 않습니다.


6. enable, disable, disaable-user
pm enable [패키지명]
pm disable [패키지명]
pm disable-user [패키지명]
세 명령어는 패키지를 사용 가능/불가능 상태를 설정합니다.


7. grant, revoke
DB에서 자주 보던 명령어인데 여기서 또 보니 안반갑군요.. ㅋ
pm grant  [패키지명] [permission명]
pm revoke [패키지명] [permission명]
보통은 권한문제로 허락이 안됩니다.. ㅋㅋ
permission은 pm list permissions 로 확인!


8. get-install-location
pm get-install-location
패키지의 설치 장소를 보여줍니다.
0 auto는 패키지에 설정된대로 알아서 되는것이고
1 internal은 내부저장장치에
2 external은 외부저장장치에 설치됩니다.

9. set-install-location
위에와 반대로 여기는 설정하는 창입니다.
pm set-install-location [숫자]
이렇게 설정해주면 됩니다.


------------------------------

일반적인 패키지의 삭제와 설치에 관련된 모든 것이 담겨있습니다만
정리해봤지만 그렇게 특별한것은 없군요..
그럼 이만^^

덧글

  • 2013/09/23 21:51 # 삭제 비공개

    비공개 덧글입니다.
  • sharku 2013/09/24 11:29 #

    네 안됩니다.. 혹여 가능하더라도 남의 허락없이 민감한 정보를 본다는 것은 불법입니다 철컹철컹...
※ 로그인 사용자만 덧글을 남길 수 있습니다.