> 文档中心 > Android开发-使用pm命令进行package的管理,包括apk的安装和卸载(pm install && pm uninstall)

Android开发-使用pm命令进行package的管理,包括apk的安装和卸载(pm install && pm uninstall)


pm命令简介:

pm全称是package manager,是一个可执行程序。顾名思义,pm命令用来进行package的管理,例如安装apk,卸载apk,列出所有的应用的包名,列出权限等。

pm在Android系统中的源码位置:

frameworks\base\cmds\am\src\com\android\commands\pm

pm help:

在adb shell命令行,输入pm或者pm help,可以列出pm的使用帮助信息,部分信息如下:

% adb shell

shell@bullhead:/ $ pm

usage: pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID] [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 list users

       pm path PACKAGE

       pm dump PACKAGE

       pm install [-lrtsfd] [-i PACKAGE] [--user USER_ID] [PATH]

       pm install-create [-lrtsfdp] [-i PACKAGE] [-S BYTES]

               [--install-location 0/1/2]

               [--force-uuid internal|UUID]

       pm install-write [-S BYTES] SESSION_ID SPLIT_NAME [PATH]

       pm install-commit SESSION_ID

       pm install-abandon SESSION_ID

       pm uninstall [-k] [--user USER_ID] PACKAGE

       pm set-installer PACKAGE INSTALLER

       pm move-package PACKAGE [internal|UUID]

       pm move-primary-storage [internal|UUID]

       pm clear [--user USER_ID] PACKAGE

       pm enable [--user USER_ID] PACKAGE_OR_COMPONENT

       pm disable [--user USER_ID] PACKAGE_OR_COMPONENT

       pm disable-user [--user USER_ID] PACKAGE_OR_COMPONENT

       pm disable-until-used [--user USER_ID] PACKAGE_OR_COMPONENT

       pm hide [--user USER_ID] PACKAGE_OR_COMPONENT

       pm unhide [--user USER_ID] PACKAGE_OR_COMPONENT

       pm grant [--user USER_ID] PACKAGE PERMISSION

       pm revoke [--user USER_ID] PACKAGE PERMISSION

       pm reset-permissions

       pm set-app-link [--user USER_ID] PACKAGE {always|ask|never|undefined}

       pm get-app-link [--user USER_ID] PACKAGE

       pm set-install-location [0/auto] [1/internal] [2/external]

       pm get-install-location

       pm set-permission-enforced PERMISSION [true|false]

       pm trim-caches DESIRED_FREE_SPACE [internal|UUID]

       pm create-user [--profileOf USER_ID] [--managed] USER_NAME

       pm remove-user USER_ID

       pm get-max-users

pm list packages: prints all packages, optionally only

  those whose package name contains the text in FILTER.  Options:

    -f: see their associated file.

    -d: filter to only show disbled packages.

    -e: filter to only show enabled packages.

    -s: filter to only show system packages.

    -3: filter to only show third party packages.

    -i: see the installer for the packages.

    -u: also include uninstalled packages.

pm list permission-groups: prints all known permission groups.

pm list permissions: prints all known permissions, optionally only

  those in GROUP.  Options:

    -g: organize by group.

    -f: print all information.

    -s: short summary.

    -d: only list dangerous permissions.

    -u: list only the permissions users will see.

pm list instrumentation: use to list all test packages; optionally

  supply to list the test packages for a particular

  application.  Options:

    -f: list the .apk file for the test package.

pm list features: prints all features of the system.

pm list users: prints all users on the system.

pm path: print the path to the .apk of the given PACKAGE.

pm dump: print system state associated with the given PACKAGE.

pm install: install a single legacy package

pm install-create: create an install session

    -l: forward lock application

    -r: replace existing application

    -t: allow test packages

    -i: specify the installer package name

    -s: install application on sdcard

    -f: install application on internal flash

    -d: allow version code downgrade

    -p: partial application install

    -g: grant all runtime permissions

    -S: size in bytes of entire session

pm install-write: write a package into existing session; path may

  be '-' to read from stdin

    -S: size in bytes of package, required for stdin

pm install-commit: perform install of fully staged session

pm install-abandon: abandon session

pm set-installer: set installer package name

pm uninstall: removes a package from the system. Options:

    -k: keep the data and cache directories around after package removal.

pm clear: deletes all data associated with a package.

pm enable, disable, disable-user, disable-until-used: these commands

  change the enabled state of a given package or component (written

  as "package/class").

pm grant, revoke: these commands either grant or revoke permissions

    to apps. The permissions must be declared as used in the app's

    manifest, be runtime permissions (protection level dangerous),

    and the app targeting SDK greater than Lollipop MR1.

pm reset-permissions: revert all runtime permissions to their default state.

pm get-install-location: returns the current install location.

    0 [auto]: Let system decide the best location

    1 [internal]: Install on internal device storage

    2 [external]: Install on external media

pm set-install-location: changes the default install location.

  NOTE: this is only intended for debugging; using this can cause

  applications to break and other undersireable behavior.

    0 [auto]: Let system decide the best location

    1 [internal]: Install on internal device storage

    2 [external]: Install on external media

pm trim-caches: trim cache files to reach the given free space.

pm create-user: create a new user with the given USER_NAME,

  printing the new user identifier of the user.

pm remove-user: remove the user with the given USER_IDENTIFIER,

  deleting all data associated with that user

pm命令常用参数说明:

pm命令的格式:

pm [list|path|install|uninstall] 

说明:

list用于查询

install用户安装

uninstall用于卸载

 (1)查询:

pm list:

参数

描述

-f 显示每个包的文件位置
-d 使用过滤器只显示禁用的应用的包名
-e 使用过滤器,只显示可用的应用的包名
-s 使用过滤器,只显示系统应用的包名
-3 使用过滤器,只显示第三方应用的包名
-i 查看应用的安装者

例如:

adb shell pm list instrumentationadb shell pm list instrumentation TARGET_PACKAGE

pm命令常用参数:

(2)安装:

pm install [-lrtsfd] [-i PACKAGE] [PATH]

通过指定路径安装apk到手机中(与adb install不同的是adb install安装的.apk是在你的电脑上,而pm install安装的apk是存储在你的手机中)

参数

说明

-l 锁定应用程序
-r 重新安装应用,且保留应用数据
-t 允许测试apk被安装
-i 指定安装包的包名
-s 安装到sd卡
-f 安装到系统内置存储中(默认安装位置)
-d 允许降级安装(同一应用低级换高级)
-g 授予应用程序清单中列出的所有权限(只有6.0系统可用)

(3) 卸载:

pm uninstall [options]

#卸载应用

参数

说明

-k 卸载应用且保留数据与缓存(如果不加-k则全部删除)

(4)其它命令:

1. pm dump PACKAGE  打印给定的包的系统状态

2. list feature    打印系统的所有功能
                        列出所有硬件相关信息
3. list libraries    打印当前设备所支持的所有库 

4. pm clear  清除应用数据