天天看点

Android pm命令

介绍

pm命令提供了app包的管理,即packagemanager以命令行的方式提供给开发者使用。以下将介绍常用pm命令的基本使用。

常用命令

查看当前用户的ID(USER_ID)

$pm list users

x20l_fhd_portrait:/ $ pm list users
Users:
        UserInfo{0:机主:13} running
           

当前用户信息,USER_ID是0,用户名是13

查看已经安装的包

$pm -l
x20l_fhd_portrait:/ $ pm -l
package:com.android.fmradio
package:com.mediatek.gba
package:com.mediatek.ims
package:com.smc.hccarddemo
package:cn.heils.hap
package:com.android.cts.priv.ctsshim
package:com.smc.bitmapclap
package:com.android.providers.telephony
package:com.maniu.cameraopengldemo
package:com.mediatek.fwk.plugin
package:com.sohu.inputmethod.sogou
package:com.android.wallpapercropper
package:com.mediatek.schpwronoff
package:com.android.egg
package:com.android.mms
package:com.android.mtp
package:com.android.stk
package:com.android.launcher3
           

列举设备上安装好的所有的app包

$pm -l | grep com.android.launcher3
x20l_fhd_portrait:/ $ pm -l | grep com.android.launcher3
package:com.android.launcher3
           

查询某一个包是否安装,如果没有安装则结果为空

查看第三方安装包

格式:  pm list package -3 

$ pm list package -3 

列出第三方开发的app的包名
           

查看测试包

格式: pm list instrumentation

$ pm list instrumentation 
x20l_fhd_portrait:/ $ pm list instrumentation
instrumentation:com.tencent.android.qqdownloader/com.live.watermelon.Instrumentation (target=com.tencent.android.qqdownloader)
           

查看安装包的路径

格式: pm path [--user USER_ID] PACKAGE

如查看launcher3的安装包路径

$pm path --user 0 com.android.launcher3
x20l_fhd_portrait:/ $ pm path --user 0 com.android.launcher3
package:/system/priv-app/Launcher3_m/Launcher3_m.apk
           

查看一下这个路径是否正确

x20l_fhd_portrait:/ $ ls -l /system/priv-app/Launcher3_m/Launcher3_m.apk
-rw-r--r-- 1 root root 8205210 2019-01-17 19:02 /system/priv-app/Launcher3_m/Launcher3_m.apk
           

查找结果完全正确

输出安装包信息

格式: pm dump PACKAGE

$pm dump com.android.launcher3
x20l_fhd_portrait:/ $ pm dump com.android.launcher3
DUMP OF SERVICE package:
  Activity Resolver Table:
    Full MIME Types:
        image/*:
          6c52abe com.android.launcher3/.WallpaperCropActivity filter 60468b1
            Action: "android.service.wallpaper.CROP_AND_SET_WALLPAPER"
            Category: "android.intent.category.DEFAULT"
            Type: "image"
            mPriority=0, mHasPartialTypes=true
            AutoVerify=false

    Wild MIME Types:
        image:
          6c52abe com.android.launcher3/.WallpaperCropActivity filter 60468b1
            Action: "android.service.wallpaper.CROP_AND_SET_WALLPAPER"
            Category: "android.intent.category.DEFAULT"
            Type: "image"
            mPriority=0, mHasPartialTypes=true
            AutoVerify=false

    Non-Data Actions:
        android.intent.action.MAIN:
          863513 com.android.launcher3/.Launcher filter 5331e35
            Action: "android.intent.action.MAIN"
            Category: "android.intent.category.HOME"
            Category: "android.intent.category.DEFAULT"
            Category: "android.intent.category.MONKEY"
            AutoVerify=false
          d029350 com.android.launcher3/.LauncherExtension filter bf632ca
            Action: "android.intent.action.MAIN"
            Category: "android.intent.category.HOME"
            Category: "android.intent.category.DEFAULT"
            Category: "android.intent.category.MONKEY"
            AutoVerify=false
          2db4949 com.android.launcher3/.ToggleWeightWatcher filter d895c3b
            Action: "android.intent.action.MAIN"
            Category: "android.intent.category.DEFAULT"
            AutoVerify=false
          f28a24e com.android.launcher3/.MemoryDumpActivity filter 1acb196
            Action: "android.intent.action.MAIN"
            Category: "android.intent.category.DEFAULT"
            AutoVerify=false
        android.intent.action.SET_WALLPAPER:
          e77c03c com.android.launcher3/.LauncherWallpaperPickerActivity filter e386f58
            Action: "android.intent.action.SET_WALLPAPER"
            Category: "android.intent.category.DEFAULT"
            AutoVerify=false
            ...
           

输出launcher3的安装信息,信息太多了,截取其中一段

包安装

格式: pm install [-lrtsfd] [-i PACKAGE] [--user USER_ID] [PATH]

参数说明:

[-lrtsfd]说明

参数 说明
-l 锁定应用
-r 强行安装(即便设备上已经存在该app,也重新安装并覆盖)
-t 安装测试包(一般是debug包)
-s 安装到sd卡(/mnt/sdcard,用户分区)中
-f 安装到内置卡(/data/data,data分区)中
-d 允许降级安装(同一应用低级换高级)

[-i PACKAGE]

表示指定包名

[--user USER_ID]

表示指定用户ID

[PATH]

apk的路径,如: /sdcard/release.apk

通常在开发过程中,如下使用:

强行安装apk包

$pm install -r /sdcard/release.apk

安装测试包

$pm install -t /sdcard/debug.apk

包卸载

格式: pm uninstall [-k] [--user USER_ID] PACKAGE

参数说明

参数 说明
-k 卸载应用且保留数据与缓存,如果不加 -k 则全部删除
--user 用户ID,android下目前只有一个用户,这个值默认为0

常用指令

$pm uninstall com.example.test

卸载普通应用包

#pm uninstall -k --user 0 com.android.launcher3

注意卸载系统包,需要root权限

清空应用缓存

格式: pm clear [--user USER_ID] PACKAGE

如: 清理launcher3的指令

$pm clear --user 0 com.android.launcher3
x20l_fhd_portrait:/ $ pm clear --user 0 com.android.launcher3
Success
           

隐藏和显示安装包

格式: pm hide [--user USER_ID] PACKAGE_OR_COMPONENT

以设置程序为例子,进行隐藏

$pm hide --user 0 com.android.settings
x20l_fhd_portrait:/ $ pm hide --user 0 com.android.settings
Error: java.lang.SecurityException: Neither user 2000 nor current process has android.permission.MANAGE_USERS.
           

报错了,这个指令需要root权限

格式: pm unhide [--user USER_ID] PACKAGE_OR_COMPONENT

以设置程序为例子,进行显示

$pm unhide --user 0 com.android.settings
x20l_fhd_portrait:/ $ pm unhide --user 0 com.android.settings
Error: java.lang.SecurityException: Neither user 2000 nor current process has android.permission.MANAGE_USERS.
           

同样需要root权限

授权和撤销权限

格式: pm grant [--user USER_ID] PACKAGE PERMISSION

$pm grant --user 0 com.android.launcher3 android.permission.WRITE_EXTERNAL_STORAGE

格式: pm revoke [--user USER_ID] PACKAGE PERMISSION

$pm revoke --user 0 com.android.launcher3 android.permission.WRITE_EXTERNAL_STORAGE

需要root权限

获取系统支持最大用户数

格式: pm get-max-users

$pm get-max-users
x20l_fhd_portrait:/ $ pm get-max-users
Maximum supported users: 4
           

继续阅读