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

相关推荐
知行合一。。。4 小时前
Python--05--面向对象(属性,方法)
android·开发语言·python
leobertlan4 小时前
好玩系列:用20元实现快乐保存器
android·人工智能·算法
代龙涛7 小时前
WordPress single.php 文章模板开发详解
android
YF02118 小时前
Flutter 编译卡顿解决方案
android·flutter·ios
空中海9 小时前
第十二章:安卓实战架构与最佳实践
android·架构
angerdream11 小时前
Android手把手编写儿童手机远程监控App之四大组件详解2
android
kerli11 小时前
基于 kmp/cmp 的跨平台图片加载方案 - 适配 Android View/Compose/ios
android·前端·ios
半条-咸鱼12 小时前
基于安卓的 WAV 音频采集方案_含工具
android·音视频
九皇叔叔12 小时前
MySQL8.0 版本安装部署
android·adb