adb之am、pm命令

[车联网安全自学篇] Android安全之ADB命令总结「收藏版」 已转行,从此不问网络安全江湖事... ... 阅读详情

PM命令

pm即package manager,使用pm命令可以去模拟android行为或者查询设备上的应用信息等

1、命令格式:

pm

2、命令列表:

命令功能实现方法
dump dump信息AM.dumpPackageStateStatic
clear 清空App数据AMS.clearApplicationUserData
uninstall [options]卸载应用IPackageInstaller.uninstall
force-dex-opt dex优化PMS.forceDexOpt
trim-caches <目标size>紧缩cache目标大小PMS.freeStorageAndNotify
list packages列举app包信息PMS.getInstalledPackages
get-install-location获取安装位置PMS.getInstallLocation
path 查看App路径PMS.getPackageInfo
install [options] 安装应用PMS.installPackageAsUser
hide 隐藏应用PMS.setApplicationHiddenSettingAsUser
unhide 显示应用PMS.setApplicationHiddenSettingAsUser
enable <包名或组件名>enablePMS.setEnabledSetting
disable <包名或组件名>disablePMS.setEnabledSetting
set-install-location设置安装位置PMS.setInstallLocation
get-max-users最大用户数UserManager.getMaxSupportedUsers

例如:

1、获取手机app列表信息

adb shell pm list packages 

2、输出安装包的APK路径

adb shell pm path com.android.launcher3

3、删除与包相关的所有数据:清除数据和缓存

adb shell pm clear com.android.launcher3

AM命令

am即activity manager,可以使用am命令去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播等

一、常用命令

作为一名开发者,相信对adb指令一定不会陌生。那么在手机连接adb后,可通过am命令做很多操作:

(1) 拨打电话10086

adb shell am start -a android.intent.action.CALL -d tel:10086

(2) 打开网站www.gityuan.com

adb shell am start -a android.intent.action.VIEW -d  http://gityuan.com

(3) 启动Activity

启动包名为com.yuanhh.app,主Activity为.MainActivity,且extra数据以”website”为key, “yuanh.com”为value。通过java代码要完成该功能虽然不复杂,但至少需要一个android环境,而通过adb的方式,只需要在adb窗口,输入如下命令便可完成:

am start -n com.yuanhh.app/.MainActivity -es website gityuan.com

am命令还可以启动Service、Broadcast,杀进程,监控等功能,这些功能都非常便捷调试程序,接下来讲述关于am更多更详细的功能。

4、杀死进程

adb shell am force-stop com.android.fmradio

二、 Options

主要是启动Activity命令am start [options] 使用options参数,接下来列举Activity命令的[options]参数:

-D: 允许调试功能

-W: 等待app启动完成

-R : 重复启动Activity COUNT次

-S: 启动activity之前,先调用forceStopPackage()方法强制停止app.

–opengl-trace: 运行获取OpenGL函数的trace

–user | current:
指定用户来运行App,默认为当前用户。

–start-profiler : 启动profiler,并将结果发送到 ;

-P : 类似

–start-profiler,不同的是当app进入idle状态,则停止profiling

–sampling INTERVAL: 设置profiler

取样时间间隔,单位ms;
启动Activity的实现原理: 存在-W参数则调用startActivityAndWait()方法来运行,否则startActivityAsUser()。

三、启动应用特例

启动应用的方法一般是packageName/className,但是如果只知道应用的包名,而不知道启动activity的名字,该怎么启动呢?

public static void startAppWithPackageName(Activity context, String packagename) {

        // 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
        PackageInfo packageinfo = null;
        try {
            packageinfo = context.getPackageManager().getPackageInfo(packagename, 0);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        if (packageinfo == null) {
            return;
        }

        // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent
        Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
        resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        resolveIntent.setPackage(packageinfo.packageName);

        // 通过getPackageManager()的queryIntentActivities方法遍历
        List<ResolveInfo> resolveinfoList = context.getPackageManager()
                .queryIntentActivities(resolveIntent, 0);

        Log.i(TAG, "resolveinfoList.size=" + resolveinfoList.size());
        if (resolveinfoList.size() == 0) {
            return;
        }

        ResolveInfo resolveinfo = resolveinfoList.iterator().next();
        if (resolveinfo != null) {
            // packagename = 参数packname
            String packageName = resolveinfo.activityInfo.packageName;
            // 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packagename.mainActivityname]
            String className = resolveinfo.activityInfo.name;
            // LAUNCHER Intent
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory(Intent.CATEGORY_LAUNCHER);

            // 设置ComponentName参数1:packagename参数2:MainActivity路径
            ComponentName cn = new ComponentName(packageName, className);

            intent.setComponent(cn);
            context.startActivity(intent);
        }
    }
【车联网】使用adb指令清空应用缓存,指令应为`adb shell pm clear com.xxx.xxx` 指令后,该应用的所有数据(包括缓存、设置、登录信息等)都会被清除,应用会恢复到首次安装启动时的初始状态。但需注意,某些应用可能存在自定义缓存机制,这种方法不一定能完全清除所有缓存。此外,如果只想清除应用缓存而保留用户数据,对于已root的设备,可以尝试使用。替换为实际应用包名。对于未root且应用是用调试密钥编译的,还可以使用。需替换为你要清理缓存的应用的实际包名。比如要清理微信的缓存,其包名为。若要使用adb指令清空应用缓存,指令应为。 阅读详情

相关推荐

一条龙开发指南:MCP AI Agent 理论+项目实战开发你的MCP Server

MCP(Model Connection Protocol)是Anthropic于2024年推出的AI模型连接协议,旨在为AI模型提供开放、通用的标准化接口,类似于“USB-C”接口,使AI模型能够无缝连接各种数据源和工具。MCP通过标准化协议解决了AI系统集成中的碎片化问题,提升了开发效率和系统可靠性。开发者可以通过简单的配置,快速接入不同的MCP Server,实现AI模型的多样化应用。MCP支持多种协议,如Stdio、SSE等,并通过JSON-RPC格式进行数据传输。文章还以腾讯云代码助手为例,展示了

杨不易呀 3046

adb shell中的am pm命令、常用命令总结

am全称activity manager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等。 am 你也可以在adb shell前执行am命令: adb shell am start -a android.intent.action.VIEW 关于一些am命令的介绍: start [options] :启动activity通过指定的intent参数。具体intent参数参照官方表。 startservice [options] : 启动

七七的博客 2万+

STM32CubeMX + HAL库避坑指南:为什么你的代码总在SystemClock_Config卡住?

本文深入剖析了STM32开发者在使用STM32CubeMX和HAL库时,代码在SystemClock_Config函数中卡死的根本原因。文章不仅指出硬件时序、Flash延迟配置等常见陷阱,更提供了从硬件设计、软件容错到深度调试的系统性解决方案,帮助开发者构建鲁棒的时钟初始化策略,彻底告别启动卡顿问题。

bb456的博客 928

每天一个adb命令:pm 命令详解

介绍adb shell中一个很重要的命令——pm(Package Manager),这个命令主要用于获取和安装在 Android 设备上的应用信息。 关于pm命令的用法解析。命令行下输入adb shell pm即可获得关于pm的用法帮助,如下所示:usage: pm list packages [-f] [-d] [-e] [-s] [-3] [-i] [-u] [--user USER_ID]

天森爱自由 3万+

金蝶云星空初级实施认证考题

Q4.[单选题] (1.5分) 总账中的多账簿账表主要是基于什么进行查看的Q47.[多选题] (2.5分) 销售订单的收款计划页签勾选预收之后,预收控制环节可以控制哪些节点?

m0_51994557的博客 3122

从OFED到rdma-core:手把手带你搞定Linux下RDMA开发环境的选型与搭建

本文详细介绍了在Linux系统下搭建RDMA开发环境的完整流程,涵盖OFED与rdma-core的选型对比及分步安装指南。针对高性能计算和分布式存储需求,解析RDMA技术栈的核心组件,提供环境验证与性能测试方法,帮助开发者快速构建稳定高效的开发环境。特别适合需要优化网络性能的工程师参考。

weixin_26905487的博客 225

ADB之adb shell pm clear

adb shell pm clear com.xx.xx:清除对应包的数据和缓存

qq_39172055的博客 8355

安检机图像处理避坑指南:从条纹校正到物质分类,那些论文里没写的工程细节

本文深入探讨了双能X射线安检机图像处理中的关键工程实践,从条纹校正到物质分类,揭示了论文中未提及的实用技巧。针对探测器校正、物质分类模糊、伪彩色系统设计等核心问题,提供了动态参数更新、空间上下文分析和自适应色彩映射等解决方案,助力提升安检系统的准确性和鲁棒性。

weixin_30325487的博客 889

adb shell am和pm命令参数详解

am全称activity manager,你能使用am参数去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等。pm全称package manager,你能使用pm命令去模拟android行为或者查询设备上的应用等。adb shell am和pm命令参数详解。

码点 1104

C++实战指南:使用CodeBlocks构建跨平台wxWidgets窗口应用

本文是一份面向C++初学者的实战指南,详细介绍了如何使用CodeBlocks IDE和wxWidgets框架快速构建跨平台的桌面窗口应用。内容涵盖从环境搭建、项目配置到界面设计、事件处理的全流程,重点讲解了如何利用CodeBlocks的开箱即用支持和wxSmith可视化设计器,高效开发具有按钮、菜单、列表等控件的交互式窗口界面程序,帮助读者轻松入门GUI开发。

weixin_29012677的博客 154

iStoreOS等软路由插件卸载的残留?分享一款软路由高级卸载工具,自定义卸载,轻松解决卸载残留问题

iStoreOS用户看过来!👀 还在被插件包残留困扰吗?本文分享一款“高级卸载”的插件,助你深度清理iStoreOS系统,彻底解决软件卸载不净的痛点,告别频繁恢复出厂设置的烦恼!🚀

XiaoqiangClub的博客 1544

adb shell am broadcast 手动发送广播及adb shell am/pm其他命令

在命令行可用adb shell am broadcast -a [action] 手动发送广播adb shell am [command] 的用法:首先看一下各部分的作用 adb shell , 进入到设备的shell模式; am , 是activity manager的缩写,它可以启动activity,启动service,发送广播等同样的道理 pm ,就是package manager的缩写.

路子喆 1万+

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(六级)答案 + 解析

伶俐角少儿编程 729

Android SDK: adb shell 命令的使用(am、pm、wm、screencap、monkey等)

通过 Android SDK 的 adb shell 命令可以向已连接的 Android 设备或模拟器发送 shell 命令。am 是 Activity 管理命令,启动Activity、强行停止进程、开启服务、发送广播等。pm 是包管理命令,即应用管理器,可以使用该命令对设备的软件包(APP)进行管理,例如安装、查看、卸载等。wm 窗口管理命令获取和修改屏幕的分辨率、像素密度,screencap 屏幕截图,screenrecord 屏幕录制,getprop 获取设备属性信息,monkey 自动化测试。

谢TS的博客 1万+

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

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

adb shell am/pm命令

转载自: http://blog.youkuaiyun.com/commonslok/article/details/9898247 今天看了下adb shell中的am pm命令,一些自己的见解和大多数官网的翻译。 先说下am命令,am全称activity manager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等

rechanel的博客 771

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

android am发送广播,adb shell am broadcast 手动发送广播及adb shell am/pm其他命令

在命令行可用adb shell am broadcast -a [action] 手动发送广播adb shell am [command] 的用法:首先看一下各部分的作用adb shell , 进入到设备的shell模式;am , 是activity manager的缩写,它可以启动activity,启动service,发送广播等同样的道理 pm ,就是package manager的缩写.启动一...

weixin_42365251的博客 1898

adb shell中的am pm命令

adb shell中的am pm命令,一些自己的见解和大多数官网的翻译。 am命令 am全称activity manager,你能使用am去模拟各种系统的行为,例如去启动一个activity,强制停止进程,发送广播进程,修改设备屏幕属性等等。当你在adb shell命令下执行am命令: am &amp;lt;command&amp;gt;你也可以在adb shell前执行am命令:adb shell am st...

weixin_33743248的博客 192

adb、adb shell am、adb shell pm命令的详细使用说明

本文博客地址:http://blog.youkuaiyun.com/qq1084283172/article/details/64183248 1.在命令行终端执行下面的命令: adb >adb.txt 2>&amp;1 Android Debug Bridge version 1.0.31 -a ...

墨鱼菜鸡 361

adb shell am/pm 常用命令详解与使用

一、adb shell am 使用此命令可以从cmd控制台启动 activity, services;发送 broadcast等等 1、am start <packageName/.className> 或者是   am start packageName/packageName.className 直接启动指定activity   -n packageName/package...

weixin_30753873的博客 556

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

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

weixin_34008784的博客 455

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

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

weixin_33853827的博客 395
上一篇: Android通讯录、通话记录、短信、应用等模糊查询方法
下一篇: java.util.ConcurrentModificationException异常处理
Picasso_L
博客等级 码龄12年 105粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值