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

相关推荐
LSL666_11 小时前
5 Repository 层接口
android·运维·elasticsearch·jenkins·repository
alexhilton14 小时前
在Jetpack Compose中创建CRT屏幕效果
android·kotlin·android jetpack
2501_9400940216 小时前
emu系列模拟器最新汉化版 安卓版 怀旧游戏模拟器全集附可运行游戏ROM
android·游戏·安卓·模拟器
下位子16 小时前
『OpenGL学习滤镜相机』- Day9: CameraX 基础集成
android·opengl
参宿四南河三18 小时前
Android Compose SideEffect(副作用)实例加倍详解
android·app
Java追光着19 小时前
ADB 无线调试 APP 完全攻略(2025 最新版)—— 从连接到查看日志,一文搞定!
adb
火柴就是我19 小时前
mmkv的 mmap 的理解
android
没有了遇见19 小时前
Android之直播宽高比和相机宽高比不支持后动态获取所支持的宽高比
android
shenshizhong20 小时前
揭开 kotlin 中协程的神秘面纱
android·kotlin
vivo高启强20 小时前
如何简单 hack agp 执行过程中的某个类
android