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

相关推荐
枯骨成佛8 小时前
MTK Android 14 通过属性控制系统设置显示双栏或者单栏
android
雨白8 小时前
Android 自定义 View:范围裁切和几何变换
android
jiushiapwojdap9 小时前
Flutter上手记:为什么我的按钮能同时在iOS和Android上跳舞?[特殊字符][特殊字符]
android·其他·flutter·ios
limuyang212 小时前
Android RenderScript-toolkit库,替换老式的脚本方式(常用于高斯模糊)
android
柿蒂12 小时前
产品需求驱动下的技术演进:动态缩放View的不同方案
android·kotlin·android jetpack
Andy_GF15 小时前
鸿蒙Next在蒲公英平台分发测试包
android·ios·harmonyos
枫の准大一15 小时前
【C++游记】List的使用和模拟实现
开发语言·c++·list
恋猫de小郭16 小时前
iOS 26 正式版即将发布,Flutter 完成全新 devicectl + lldb 的 Debug JIT 运行支持
android·前端·flutter
幻雨様16 小时前
UE5多人MOBA+GAS 54、用户登录和会话创建请求
android·ue5