Adb显示第3方应用的包名原理

Android早期版本实现原理请看 Android源码分析-pm命令的实现,列出包名pm list package,列出系统库pm list libraries_pm list packages-CSDN博客

Android12 对adb shell pm 实现原理做了重构:改成了template模式PackageManagerShellCommand extends ShellCommand

adb shell pm list package -3 源码:

adb shell pm 会初始化1个PackageManagerShellCommand对象,

com.android.server.pm.PackageManagerShellCommand#onCommand

复制代码
final boolean isSystem = !isApex &&
        (info.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) != 0;
final boolean isEnabled = !isApex && info.applicationInfo.enabled;
if ((!listDisabled || !isEnabled) &&
        (!listEnabled || isEnabled) &&
        (!listSystem || isSystem) &&
        (!listThirdParty || !isSystem) &&
        (!listApexOnly || isApex)) {
    pw.print("package:");

是否是3方app主要是看有没有flag:ApplicationInfo.FLAG_SYSTEM

framework已有的api:

ProcessRecord.info.isSystemApp()

android.content.pm.ApplicationInfo#isSystemApp

相关推荐
有位神秘人1 天前
Android中Notification的使用详解
android·java·javascript
·云扬·1 天前
MySQL Binlog落盘机制深度解析:性能与安全性的平衡艺术
android·mysql·adb
天马37981 天前
MySql9 免安装版_配置和启动_MySql9安装
adb·mysql9 免安装版·mysql9安装
独自破碎E1 天前
【BISHI9】田忌赛马
android·java·开发语言
·云扬·1 天前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb
代码s贝多芬的音符1 天前
android 两个人脸对比 mlkit
android
darkb1rd1 天前
五、PHP类型转换与类型安全
android·安全·php
gjxDaniel1 天前
Kotlin编程语言入门与常见问题
android·开发语言·kotlin
csj501 天前
安卓基础之《(22)—高级控件(4)碎片Fragment》
android
峥嵘life1 天前
Android16 【CTS】CtsMediaCodecTestCases等一些列Media测试存在Failed项
android·linux·学习