Administrator
Published on 2024-06-06 / 39 Visits
0

Android 的包管理器PM命令

help: 显示帮助信息。

path: 打印指定包的 APK 文件路径。

  • 参数: --user USER_ID PACKAGE

    • --user USER_ID: 指定要查询的用户 ID。

    • PACKAGE: 要查询的包名。

dump: 打印与指定包相关的系统状态信息。

  • 参数: PACKAGE

    • PACKAGE: 要查询的包名。

has-feature: 检查系统是否具有指定的特性。

  • 参数: FEATURE_NAME [version]

  • 说明: 如果系统具有该特性,则打印 true 并返回退出状态码 0;否则打印 false 并返回退出状态码 1。

    • FEATURE_NAME: 特性名称。

    • [version]: 可选参数,指定特性的版本。

list features: 列出系统的所有特性。

list instrumentation: 列出所有测试包,可以选择只列出针对指定目标包的测试包。

  • 参数: [-f] [TARGET-PACKAGE]

    • -f: 打印包含测试包的 APK 文件名。

    • TARGET-PACKAGE: 目标包名。

list libraries: 列出所有系统库。

list packages: 列出所有已安装的包,可以选择过滤条件。

  • 参数: [-f] [-d] [-e] [-s] [-3] [-i] [-l] [-u] [-U] [--show-versioncode] [--apex-only] [--uid UID] [--user USER_ID] [FILTER]

    • -f: 打印包的关联文件。

    • -a: 打印所有已知的包(但不包括 APEX 包)。

    • -d: 过滤,只显示已禁用的包。

    • -e: 过滤,只显示已启用的包。

    • -s: 过滤,只显示系统包。

    • -3: 过滤,只显示第三方包。

    • -i: 打印包的安装程序。

    • -l: 被忽略(用于与旧版本兼容)。

    • -U: 也显示包的 UID。

    • -u: 也包含未安装的包。

    • --show-versioncode: 也显示版本代码。

    • --apex-only: 只显示 APEX 包。

    • --uid UID: 过滤,只显示具有指定 UID 的包。

    • --user USER_ID: 只列出属于指定用户的包。

    • FILTER: 过滤条件,只显示名称包含该文本的包。

list permission-groups: 列出所有已知的权限组。

list permissions: 列出所有已知的权限,可以选择过滤条件。

  • 参数: [-g] [-f] [-d] [-u] [GROUP]

    • -g: 按组组织权限。

    • -f: 打印所有信息。

    • -s: 简短摘要。

    • -d: 只列出危险权限。

    • -u: 只列出用户可见的权限。

    • GROUP: 权限组名称。

list staged-sessions: 列出所有已暂存的安装会话。

  • 参数: [--only-ready] [--only-sessionid] [--only-parent]

    • --only-ready: 只显示已准备好的暂存会话。

    • --only-sessionid: 只显示每个会话的会话 ID。

    • --only-parent: 隐藏所有子会话。

list users: 列出所有用户。

resolve-activity: 打印与指定意图匹配的活动。

  • 参数: [--brief] [--components] [--query-flags FLAGS] [--user USER_ID] INTENT

    • --brief: 简短输出。

    • --components: 打印组件名称。

    • --query-flags FLAGS: 指定查询标志。

    • --user USER_ID: 指定要查询的用户 ID。

    • INTENT: 意图。

query-activities: 打印所有可以处理指定意图的活动。

  • 参数: [--brief] [--components] [--query-flags FLAGS] [--user USER_ID] INTENT

    • --brief: 简短输出。

    • --components: 打印组件名称。

    • --query-flags FLAGS: 指定查询标志。

    • --user USER_ID: 指定要查询的用户 ID。

    • INTENT: 意图。

query-services: 打印所有可以处理指定意图的服务。

  • 参数: [--brief] [--components] [--query-flags FLAGS] [--user USER_ID] INTENT

    • --brief: 简短输出。

    • --components: 打印组件名称。

    • --query-flags FLAGS: 指定查询标志。

    • --user USER_ID: 指定要查询的用户 ID。

    • INTENT: 意图。

query-receivers: 打印所有可以处理指定意图的广播接收器。

  • 参数: [--brief] [--components] [--query-flags FLAGS] [--user USER_ID] INTENT

    • --brief: 简短输出。

    • --components: 打印组件名称。

    • --query-flags FLAGS: 指定查询标志。

    • --user USER_ID: 指定要查询的用户 ID。

    • INTENT: 意图。

install: 安装应用。

install-existing: 为新用户安装已存在的应用。

  • 参数: [--user USER_ID|all|current] [--instant] [--full] [--wait] [--restrict-permissions] PACKAGE

    • --user: 指定要安装应用的目标用户。

    • --instant: 将应用安装为即时应用。

    • --full: 将应用安装为完整应用。

    • --wait: 等待应用安装完成。

    • --restrict-permissions: 不将受限权限列入白名单。

    • PACKAGE: 要安装的应用的包名。

install-create: 创建一个安装会话。

install-write: 将 APK 文件写入安装会话。

  • 参数: [-S BYTES] SESSION_ID SPLIT_NAME [PATH|-]

  • 说明: 如果路径为 -,则从标准输入读取数据。

    • -S: 指定包的大小(以字节为单位),在从标准输入读取数据时需要。

    • SESSION_ID: 安装会话的 ID。

    • SPLIT_NAME: 拆分包的名称。

    • [PATH|-]: APK 文件的路径,或者 - 表示从标准输入读取数据。

install-remove: 从安装会话中移除指定的拆分包。

  • 参数: SESSION_ID SPLIT...

    • SESSION_ID: 安装会话的 ID。

    • SPLIT...: 要移除的拆分包的名称。

install-add-session: 将一个或多个会话 ID 添加到多包会话中。

  • 参数: MULTI_PACKAGE_SESSION_ID CHILD_SESSION_IDs

    • MULTI_PACKAGE_SESSION_ID: 多包会话的 ID。

    • CHILD_SESSION_IDs: 要添加的子会话 ID。

install-commit: 提交安装会话,安装应用。

  • 参数: SESSION_ID

    • SESSION_ID: 安装会话的 ID。

install-abandon: 删除安装会话。

  • 参数: SESSION_ID

    • SESSION_ID: 安装会话的 ID。

set-install-location: 更改默认安装位置。

  • 参数: LOCATION

  • 说明: 注意,这仅用于调试,使用此命令可能会导致应用崩溃和其他不良行为。

    • LOCATION: 安装位置,可以是以下值之一:

      • 0 [auto]: 让系统决定最佳位置。

      • 1 [internal]: 安装到设备内部存储。

      • 2 [external]: 安装到外部存储。

get-install-location: 获取当前安装位置。

  • 说明: 返回当前安装位置,值为 012,与 set-install-location 命令中的值相同。

move-package: 移动包。

  • 参数: PACKAGE [internal|UUID]

    • PACKAGE: 要移动的包名。

    • [internal|UUID]: 目标存储位置,可以是 internal(内部存储)或 UUID(磁盘卷的 UUID)。

move-primary-storage: 移动主存储。

  • 参数: [internal|UUID]

    • [internal|UUID]: 目标存储位置,可以是 internal(内部存储)或 UUID(磁盘卷的 UUID)。

uninstall: 卸载应用。

  • 参数: [-k] [--user USER_ID] [--versionCode VERSION_CODE] PACKAGE [SPLIT...]

  • 说明: 如果没有指定拆分包名称,则可能移除整个应用;否则只移除指定应用的拆分包。

    • -k: 移除包后保留数据和缓存目录。

    • --user: 从指定用户中移除应用。

    • --versionCode: 只有当应用的版本代码与指定版本代码匹配时才卸载。

    • PACKAGE: 要移除的包名。

    • [SPLIT...]: 要移除的拆分包的名称。

clear: 清除应用数据。

  • 参数: [--user USER_ID] PACKAGE

    • --user: 指定要清除数据的用户 ID。

    • PACKAGE: 要清除数据的包名。

enable: 启用指定的包或组件。

  • 参数: [--user USER_ID] PACKAGE_OR_COMPONENT

    • --user: 指定要启用的用户 ID。

    • PACKAGE_OR_COMPONENT: 要启用的包或组件名称,格式为 "包名/类名"。

disable: 禁用应用。

  • 参数: [--user USER_ID] PACKAGE_OR_COMPONENT

    • --user: 指定要禁用的用户 ID。

    • PACKAGE_OR_COMPONENT: 要禁用的包或组件名称,格式为 "包名/类名"。

disable-user: 禁用指定用户下的指定的包或组件。

  • 参数: [--user USER_ID] PACKAGE_OR_COMPONENT

    • --user: 指定要禁用的用户 ID。

    • PACKAGE_OR_COMPONENT: 要禁用的包或组件名称,格式为 "包名/类名"。

disable-until-used: 禁用应用,直到下次使用。

  • 参数: [--user USER_ID] PACKAGE_OR_COMPONENT

    • --user: 指定要禁用的用户 ID。

    • PACKAGE_OR_COMPONENT: 要禁用的包或组件名称,格式为 "包名/类名"。

default-state: 设置指定的包或组件的默认状态。

  • 参数: [--user USER_ID] PACKAGE_OR_COMPONENT

    • --user: 指定要设置的用户 ID。

    • PACKAGE_OR_COMPONENT: 要设置的包或组件名称,格式为 "包名/类名"。

hide: 隐藏指定的包或组件。

  • 参数: [--user USER_ID] PACKAGE_OR_COMPONENT

    • --user: 指定要隐藏的用户 ID。

    • PACKAGE_OR_COMPONENT: 要隐藏的包或组件名称,格式为 "包名/类名"。

unhide: 显示指定的包或组件。

  • 参数: [--user USER_ID] PACKAGE_OR_COMPONENT

    • --user: 指定要显示的用户 ID。

    • PACKAGE_OR_COMPONENT: 要显示的包或组件名称,格式为 "包名/类名"。

suspend: 挂起指定的包(作为用户)。

  • 参数: [--user USER_ID] PACKAGE [PACKAGE...]

    • --user: 指定要挂起的用户 ID。

    • PACKAGE: 要挂起的包名。

unsuspend: 恢复指定的包(作为用户)。

  • 参数: [--user USER_ID] PACKAGE [PACKAGE...]

    • --user: 指定要恢复的用户 ID。

    • PACKAGE: 要恢复的包名。

set-distracting-restriction: 设置指定的限制标志到指定的包(对于用户)。

  • 参数: [--user USER_ID] [--flag FLAG ...] PACKAGE [PACKAGE...]

    • --user: 指定要设置限制的用户 ID。

    • --flag FLAG ...: 限制标志,可以是以下值之一:

      • hide-notifications: 隐藏来自该包的通知。

      • hide-from-suggestions: 隐藏该包在建议中(例如,启动器等)。

    • PACKAGE: 要设置限制的包名。

grant: 授予应用权限。

  • 参数: [--user USER_ID] PACKAGE PERMISSION

    • --user: 指定要授予权限的用户 ID。

    • PACKAGE: 要授予权限的包名。

    • PERMISSION: 要授予的权限名称。

revoke: 撤销应用权限。

  • 参数: [--user USER_ID] PACKAGE PERMISSION

    • --user: 指定要撤销权限的用户 ID。

    • PACKAGE: 要撤销权限的包名。

    • PERMISSION: 要撤销的权限名称。

reset-permissions: 将所有运行时权限重置为默认状态。

set-permission-enforced: 设置权限是否强制执行。

  • 参数: PERMISSION [true|false]

    • PERMISSION: 要设置的权限名称。

    • [true|false]: 是否强制执行权限,true 表示强制执行,false 表示不强制执行。

get-privapp-permissions: 打印应用的权限。

  • 参数: TARGET-PACKAGE

    • TARGET-PACKAGE: 要查询的包名。

get-privapp-deny-permissions: 打印应用被拒绝的权限。

  • 参数: TARGET-PACKAGE

    • TARGET-PACKAGE: 要查询的包名。

get-oem-permissions: 打印应用的 OEM 权限。

  • 参数: TARGET-PACKAGE

    • TARGET-PACKAGE: 要查询的包名。

trim-caches: 修剪缓存文件,以达到指定的可用空间。

  • 参数: DESIRED_FREE_SPACE [internal|UUID]

    • DESIRED_FREE_SPACE: 目标可用空间(以字节为单位)。

    • [internal|UUID]: 目标存储位置,可以是 internal(内部存储)或 UUID(磁盘卷的 UUID)。

list users: 列出当前用户。

create-user: 创建一个新的用户,并打印新用户的 ID。

  • 参数: [--profileOf USER_ID] [--managed] [--restricted] [--ephemeral] [--guest] [--pre-create-only] [--user-type USER_TYPE] USER_NAME

    • --profileOf USER_ID: 指定新用户是哪个用户的配置文件。

    • --managed: 指定新用户是受管理的配置文件。

    • --restricted: 指定新用户是受限制的配置文件。

    • --ephemeral: 指定新用户是临时的。

    • --guest: 指定新用户是访客用户。

    • --pre-create-only: 只创建用户,不进行其他操作。

    • --user-type USER_TYPE: 指定用户的类型,例如 android.os.usertype.profile.MANAGED

    • USER_NAME: 新用户的名称。

remove-user: 删除指定的用户,并删除与该用户相关的所有数据。

  • 参数: [--set-ephemeral-if-in-use] USER_ID

    • --set-ephemeral-if-in-use: 如果用户当前正在运行,因此无法立即删除,则将用户标记为临时用户,以便在可能的情况下自动删除(在用户切换或重启后)。

    • USER_ID: 要删除的用户 ID。

set-user-restriction: 设置用户限制。

  • 参数: [--user USER_ID] RESTRICTION VALUE

    • --user: 指定要设置限制的用户 ID。

    • RESTRICTION: 限制名称。

    • VALUE: 限制值。

get-max-users: 获取最大用户数。

get-max-running-users: 获取最大运行用户数。

compile: 触发指定包或所有包的编译。

  • 参数: [-m MODE | -r REASON] [-f] [-c] [--split SPLIT_NAME] [--reset] [--check-prof (true | false)] (-a | TARGET-PACKAGE)

    • -a: 编译所有包。

    • -c: 在编译之前清除配置文件数据。

    • -f: 强制编译,即使不需要。

    • -m: 选择编译模式。

      • MODE: 编译模式,可以是以下值之一:

        • assume-verified: 假设已验证。

        • extract: 提取。

        • verify: 验证。

        • quicken: 加速。

        • space-profile: 空间配置文件。

        • space: 空间。

        • speed-profile: 速度配置文件。

        • speed: 速度。

        • everything: 所有。

    • -r: 选择编译原因。

      • REASON: 编译原因,可以是以下值之一:

        • first-boot: 首次启动。

        • boot-after-ota: OTA 后启动。

        • post-boot: 启动后。

        • install: 安装。

        • install-fast: 快速安装。

        • install-bulk: 批量安装。

        • install-bulk-secondary: 批量安装(辅助)。

        • install-bulk-downgraded: 批量安装(降级)。

        • install-bulk-secondary-downgraded: 批量安装(辅助降级)。

        • bg-dexopt: 后台 dex 优化。

        • ab-ota: AB OTA。

        • inactive: 非活动。

        • cmdline: 命令行。

        • shared: 共享。

    • --reset: 将包恢复到安装后的状态。

    • --check-prof (true | false): 在执行 dex 优化时是否查看配置文件?

    • --secondary-dex: 编译应用的辅助 dex 文件。

    • --split SPLIT: 只编译指定的拆分包名称。

    • --compile-layouts: 编译布局资源,以加快布局加载速度。

    • TARGET-PACKAGE: 要编译的包名。

force-dex-opt: 强制立即执行指定包的 dex 优化。

  • 参数: PACKAGE

    • PACKAGE: 要优化的包名。

bg-dexopt-job: 立即执行后台优化。

reconcile-secondary-dex-files: 协调应用的辅助 dex 文件。

dump-profiles: 转储方法/类配置文件。

snapshot-profile: 拍摄应用配置文件快照。

set-home-activity: 设置默认主活动。

set-installer: 设置安装程序包名。

get-instantapp-resolver: 返回当前即时应用安装程序的组件名称。

set-harmful-app-warning: 将应用标记为有害,并添加警告信息。

get-harmful-app-warning: 获取应用的警告信息。

uninstall-system-updates: 移除系统应用的更新。

get-moduleinfo: 显示模块信息。

log-visibility: 启用或禁用可见性被阻止的应用的调试日志。

set-silent-updates-policy: 设置静默更新策略。

get-app-links: 打印应用的域名验证状态。

reset-app-links: 重置应用的域名验证状态。

verify-app-links: 广播域名验证请求。

set-app-links: 手动设置应用的域名验证状态。