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

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:/ ... 阅读详情
AI摘要

本文深入解析了Android系统中pm命令的使用方法,包括安装、卸载、查询应用包、权限、特征等常见操作,并详细解释了各参数的作用,帮助开发者更好地管理和维护Android应用。

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 <TARGET-PACKAGE> 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 instrumentation

adb 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 <INSTALLER_PACKAGE_NAME>指定安装包的包名
-s安装到sd卡
-f安装到系统内置存储中(默认安装位置)
-d允许降级安装(同一应用低级换高级)
-g授予应用程序清单中列出的所有权限(只有6.0系统可用)

(3) 卸载:

pm uninstall [options] <PACKAGE>

#卸载应用

参数

说明

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

(4)其它命令:

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

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

4. pm clear <PACKAGE_NAME> 清除应用数据

ADB核心命令实战:高效查看、安装与卸载Android应用 Android Debug Bridge(ADB)是连接计算机与Android设备的核心调试工具,它通过命令行接口实现了对设备底层的直接操作。其原理基于客户端-服务器架构,允许开发者在无需图形界面的情况下执行关键指令。在Android开发与测试中,ADB的技术价值在于极大提升了应用部署、调试和设备管理的效率。典型应用场景包括批量安装测试包、快速排查应用问题以及自动化脚本执行。本文将聚焦ADB中最实用的包管理命令,特别是`adb shell pm list packages`用于查看所有已安装应用,并结合`a 阅读详情

相关推荐

使用ADB卸载安卓手机内置应用:原理、步骤与安全指南

在安卓系统开发与优化中,ADB(Android Debug Bridge)是连接电脑与设备进行深度调试的核心工具。其工作原理是通过命令行接口与设备建立通信,实现对系统层级的操作权限。这一技术对于开发者测试、系统定制和性能优化具有重要价值,尤其在移动设备存储管理和用户体验优化场景中应用广泛。通过ADB命令,可以安全地管理用户空间的应用安装状态,例如针对特定品牌机型(如iQOO)的预装软件进行卸载,从而释放存储空间并提升系统纯净度。本文将以实际操作为例,详解如何利用ADB工具卸载内置应用,并涵盖常见问题排查与风

weixin_33858485的博客 431

Pm命令用法

一、Pm命令 1.1 命令列表 命令格式: pm <command> 命令列表: 命令 功能 实现方法 list packages 列举app包信息 PMS.getInstalledPackages

wq892373445的博客 1861

adb install和 pm install 的区别是什么?

adb install和pm install的核心区别在于执行环境与APK存储位置:前者通过电脑安装本地APK到设备,后者在设备内部安装存储中的APK(需绝对路径)。当车机禁用adb时,需先将APK传输至设备存储,再使用pm install完成安装。

知道这个有什么用? 425

pm命令安装apk

安装apk有很多种方法,除了常见的打开开发者中心–debug模式 ① 使用adb命令 adb install apk路径 1 ② 使用串口工具【Android P之前】,连接之后,su,然后使用pm进行安装: pm install -r apk路径 1 ② 使用串口工具【Android P之后】,连接之后,su,接着cd到apk所在路径,然后使用pm进行安装: 首先查看apk的大小: wc -c SkyFactory.apk 1 得到apk的大小为5080067字节,然后执行 cat SkyFact

hnlgzb的专栏 3214

pm-uninstall:卸载模块

名称 App :: pmuninstall-卸载模块 描述 App :: pmuninstall是快速的模块卸载程序。 从.packlist删除文件。 和具有很高的亲和力。 概要 卸载MODULE $ pm-uninstall App::pmuninstall 选项 -f,--force 卸载时无提示 $ pm-uninstall -f App::pmuninstall -v,--verbose 打开聊天输出 $ pm-uninstall -v App::cpnaminus -c,--checkdeps 检查依赖关系(默认启用) $ pm-uninstall -c Plack -n,--no-checkdeps 不要检查依赖项 $ pm-uninstall -n LWP -q,-安静 禁止显示某些消息 $ pm-uninstall -q Furl -h,--

Jetson Orin NX上PyTorch环境搭建与性能优化指南

本文详细指导如何在Jetson Orin NX上搭建高效的PyTorch开发环境。内容涵盖CUDA与cuDNN的“隐藏”配置、Miniconda虚拟环境管理、PyTorch for Jetson的正确安装与验证,并提供了电源模式设置、TensorRT加速、混合精度等关键性能优化实战技巧,帮助开发者充分释放边缘AI设备的算力。

weixin_29090089的博客 338

Android下pm 命令详解

本文详细介绍了Android开发中的pm(PackageManager)命令,作为管理应用包的核心工具,支持安装、卸载、查询及权限管理等操作。主要内容包括: 基础命令:如list packages查询已安装应用、path获取APK路径; 安装与卸载:通过install/uninstall管理应用,支持保留数据、指定存储位置等选项; 组件控制:启用/禁用应用组件(Activity/Service); 存储管理:设置默认安装位置(内部/外部存储); 注意事项:需root或调试权限,不同Android版本可能存在

xingfuyisheng的专栏 1万+

PADS Layout新手必看:从元件摆放到地线处理的10个实用技巧

本文为PADS Layout新手提供了10个实用技巧,涵盖元件摆放、地线处理等关键环节。从功能模块化布局到高频信号处理,再到电磁兼容性设计,帮助初学者快速掌握PCB设计核心技能,提升Layout效率和质量。特别适合需要优化PADS Layout工作流程的设计师参考。

stone的博客 255

使用adb命令管理应用

adb常用命令总结

知识共享,你我皆是知识的搬运工 8846

AD21导出gerber文件

文件–>制造输出–>Gerber Files 文件–>制造输出–>Gerber Files 通用、光圈和高级跟第一步一样 3.文件–>制造输出–>NC Drill Files 这个默认就可以了 主要参考视频来自bilibili添加链接描述 此篇博客主要是写给自己好记的,无其他商业用途 ...

新手小杨 1万+

逆向工程实战:解密AppleAccount的X-MMe-Nas-Qualify签名生成机制

本文通过逆向工程实战,详细解析了AppleAccount服务中X-MMe-Nas-Qualify签名的生成机制。作者利用Frida进行动态追踪定位签名源头,结合IDA Pro进行静态分析,并借助LLDB动态调试还原核心算法。文章最终分享了如何独立于苹果官方库,通过Python代码复现签名算法,为自动化测试和深度交互苹果服务的开发者提供了关键技术路径。

weixin_29323049的博客 707

android pm list,Android adb命令中pm工具的作用及用法说明

玩安卓的人都知道adb,玩adb的人都知道install和uninstall,但是为什么adb shell pm install packagename命令中间要有一个pm?pm是什么意思,起什么作用的?这个问题恐怕不是每个人都能回答的出来的。pm工具为包管理(package manager)的简称,可以使用pm工具来执行应用的安装和查询应用包的信息、系统权限、控制应用。pm工具是Android开...

weixin_39956353的博客 1739

NVIDIA vGPU三种授权方式(个人玩家版)

NVIDIA vGPU三种方式搭建授权服务器(个人玩家版)

wstc2689784536的博客 8439

adb基本命令(3)——adb和Package Manager的相关命令

adb全称是安卓调试桥,是协助安卓开发和测试的一款很实用的工具,下面就来对其基本命令做一个简单的介绍,主要从以下几类展开: (1)Wireless (2)adb debugging (3)Package Manager (4)File Manager (5)Network (6)Logcat (7)Screenshot (8)System 今天先介绍PM(Package Ma...

hfut_why的博客 3059

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

2024届数字IC秋招-华为机试-数字芯片-笔试真题和答案(五)(含2022年和2023年)

此部分包含华为机试真题,方向是数字芯片,内容详细包括设计、验证、后端等,大部分题目给出参考答案。华为机试都是从题库里抽题目,所以这些题目还是很有参考性的,甚至是完全一样,可以搜到的。(题目内容较多,将分开编写几个文章)

qq_42135020的博客 2083

PackageManager实战:用JADB实现Android应用的安装与卸载自动化

JADB(ADB Client in pure Java)是一个纯Java实现的ADB客户端库,它允许开发者通过Java代码与Android设备进行交互。其中,PackageManager模块提供了强大的应用管理功能,能够帮助开发者轻松实现Android应用的安装、卸载、查询等自动化操作。本文将详细介绍如何使用JADB的PackageManager来简化Android应用管理流程,提升开发效率。

gitblog_00040的博客 1083

AI上推荐 之 逻辑回归模型与GBDT+LR(特征工程模型化的开端)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 8253

安卓调试进阶:adb shell中am与pm命令的深度解析与应用

在安卓开发与调试领域,掌握系统级命令行工具是提升效率与理解系统运行机制的关键。从基础概念上讲,Android Debug Bridge (ADB) 提供了与安卓设备通信的桥梁,而adb shell则是进入设备底层Linux环境的入口。其核心原理在于通过命令行直接调用系统服务,绕过图形界面,实现对应用生命周期和软件包管理的精准控制。这一技术的核心价值在于实现了操作的自动化与脚本化,能够大幅提升开发、测试和系统管理的效率。典型的应用场景包括自动化测试脚本编写、批量应用管理、深度问题排查以及系统性能调优。本文将聚

weixin_33853827的博客 395

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Android下pm 命令详解 - 安装/卸载/APK等

原文地址:http://blog.youkuaiyun.com/xingfuyusheng/article/details/37911495 Sam在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下。这个命令与Package有关,且非常实用。所以研究之。 0. Usage: usage: pm [list|pa

Zmn的博客 1万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android调试进阶:adb shell中am与pm命令的深度应用指南

在Android开发与调试中,命令行工具是连接PC与设备的核心桥梁。adb作为Android Debug Bridge,提供了与设备通信的基础能力,而adb shell则让开发者能够直接访问设备的Linux环境。在这一环境中,am和pm命令作为系统服务接口,分别负责活动管理与包管理,是进行高效调试、自动化测试和系统控制的关键技术。理解其原理,能够帮助开发者深入Android框架内部,实现从基础安装卸载到复杂场景模拟的全面控制。例如,通过pm命令可以精细管理应用权限、提取APK文件,而am命令则能通过Inte

weixin_34008784的博客 455

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ADB包管理命令实战:从安装卸载到系统排查的完整指南

在Android开发与测试中,包管理是应用部署与维护的基础操作。其核心原理是通过系统级包管理器服务与底层PackageManagerService交互,实现对应用生命周期的精准控制。掌握命令行包管理技术,不仅能提升批量操作与自动化脚本的效率,更能深入探查图形界面无法触及的系统状态,在紧急故障排查与持续集成场景中体现关键价值。本文聚焦ADB包管理命令,通过实战案例解析`adb shell pm list packages`、`adb install`与`adb uninstall`等核心操作,涵盖多设备管理、

weixin_34348805的博客 289

adb 常用命令汇总

本文汇总 Android 开发高频 ADB 命令,覆盖设备连接、应用安装卸载、日志抓取、文件传输、Shell 调试与常见排错。每类命令按“场景—命令—注意事项”整理,便于快速检索与实战使用,减少查文档和试错成本。适合开发、测试与运维同学作为日常调试速查手册长期收藏。

帅次的博客 5万+

Android开发必备:ADB包管理命令深度解析与实战应用

在移动应用开发与测试领域,包管理是应用生命周期管理的核心环节。其原理是通过系统级接口对应用进行安装、卸载、查询等操作,实现对应用状态的控制。这项技术的价值在于为开发者提供了底层、高效的设备交互能力,尤其在自动化测试、批量部署和问题排查等工程实践中不可或缺。具体到Android平台,ADB(Android Debug Bridge)工具链中的包管理命令,如`adb shell pm`,正是实现这一能力的关键。通过掌握`list packages`、`install`、`uninstall`等核心命令及其高级参

aodanchui1057的博客 426

安卓apk软件卸载安装导出

adb install C:\Users\97251\Desktop\sdkdemo.apk #安装appadb install -r C:\Users\97251\Desktop\sdkdemo.apk #覆盖安装app。

冬天里的夏天 239
上一篇: Android开发-使用am命令启动Activity,Service等组件,以及发送广播等操作
下一篇: Android基础#38:Android短信内容的监听
liranke
博客等级 码龄20年 4939粉丝 594原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值