- 博客(602)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 【Android FrameWork】第四十三天: PowerManagerService
Android PowerManagerService(PMS)是电源管理的核心服务,横跨Java和C++层实现。Java层位于frameworks/base/services/core/java/com/android/server/power/,负责状态机管理、WakeLock控制和与Native层交互。核心方法updatePowerStateLocked()综合唤醒锁、充电状态等因素决定电源状态变更,并通过JNI调用Native层接口执行亮灭屏操作。Native层位于frameworks/native
2026-01-06 07:00:00
727
原创 【Android 性能分析】延伸阅读:新版的Profiler
Android Studio Profiler提供7个核心任务工具,帮助开发者精准定位性能问题:系统级性能跟踪(Capture System Activities)用于分析卡顿原因;堆内存快照(Analyze Memory Usage)检测内存泄漏;两种CPU分析模式(Find CPU Hotspots)定位高耗时方法;对象分配跟踪(Track Memory Consumption)解决内存抖动;Native内存分析支持NDK开发;实时监控(View Live Telemetry)提供资源波动可视化。这些工
2026-01-05 19:44:00
564
原创 【Android 性能分析】第三天:Android Studio Profiler
Android Studio Profiler 是性能分析的核心工具,提供 CPU、内存、GPU 等一站式分析功能。启动方式包括底部导航栏直达、菜单栏唤起和多进程定向启动。面板采用五分区布局:顶部控制区(进程切换/数据记录)、左侧工具区(6大专项分析)、中间时间轴(实时可视化)、底部详情区(深度分析)和右侧配置区(参数调整)。使用前需完成设备调试权限开启、项目切换为 Debug 构建类型等基础配置。掌握这些核心功能可帮助开发者高效定位性能问题,为后续专项优化打下基础。
2026-01-05 17:47:06
472
原创 【Android 性能分析工具】第二天:认识Perfetto
Perfetto是一套开源性能分析工具集,主要用于Android系统和Chrome浏览器的追踪调试。它提供高性能追踪守护进程、低开销SDK、系统级探针、可视化UI和SQL分析库,支持定位功能问题和性能瓶颈。Perfetto适用于Android系统调试、Java/原生堆分析、调用栈采样等场景,并能处理多种追踪文件格式。但分布式系统追踪、游戏GPU分析等并非其设计目标。该项目由Google维护,已被Meta、微软等公司采用。开发者可通过GitHub获取源码和文档,并参与社区讨论。
2026-01-05 17:33:27
427
原创 【Android FrameWork】延伸阅读: Android应用安装过程
Android应用安装过程解析 本文深入分析了Android 11系统中的应用安装流程,主要包含四个关键阶段: 安装触发阶段:通过PackageInstaller提交安装请求,跨进程调用PMS接口 Framework层处理: PMS进行权限校验、包解析和签名验证 通过Installer代理与Native层通信 Native层执行: installd守护进程执行底层文件操作 dex2oat工具完成Dex优化 收尾阶段:更新包信息并完成安装 整个流程涉及PackageManagerService、Package
2025-12-24 11:44:37
1308
原创 【Android FrameWork】第四十二天:PMS main函数
摘要: Android 11的PMS main函数是系统启动核心逻辑,主要完成:1)进程安全校验;2)PMS实例化(核心包括目录初始化、内存数据库构建、分阶段扫描系统/第三方应用);3)服务注册至ServiceManager;4)权限初始化与授予。构造函数通过scanDirTracedLI()分层扫描系统目录(如/system/app),构建包信息内存数据库(mPackages),并处理权限授予逻辑。onlyCore模式可优化启动速度,仅加载核心系统包。整个过程严格校验目录权限,确保系统稳定性。
2025-12-24 11:01:26
844
原创 【Android FrameWork】第四十一天:ClipboardService
Android Clipboard Service是管理跨应用数据复制的核心系统服务,负责存储和传递文本、图片等剪贴板数据。它通过Binder IPC实现跨进程通信,采用"生产者-消费者"模型:应用通过ClipboardManager写入或读取ClipData对象,服务端维护当前剪贴板内容。从Android 10开始加强了安全性限制,13+版本支持历史记录功能。源码分析显示,服务通过IClipboard AIDL接口定义核心操作,在SystemServer启动时初始化,Clipboard
2025-12-23 08:30:00
2099
原创 【Android FrameWork】延伸阅读:SamplingProfilerIntegration
摘要: Android的SamplingProfiler Integration实现了跨层协同的采样分析框架,通过SamplingProfilerService连接工具层(如Perfetto)、Framework层(AIDL接口)、Native层(libprofiler/ART)和目标进程。Framework层通过AIDL定义标准化接口,由SystemServer注册服务,并协调采样任务的生命周期管理;Native层负责底层数据采集与解析。该集成方案以低侵入性打通了采样全链路,为性能分析工具提供统一支持。
2025-12-23 07:45:00
611
原创 【Android FrameWork】延伸阅读:ptrace机制
Linux ptrace机制是进程追踪的核心系统调用,允许调试器、性能分析工具等控制目标进程的执行流程、读取内存和寄存器数据。其核心功能包括建立追踪关系(通过PTRACE_ATTACH或PTRACE_TRACEME)、执行控制(暂停/继续/单步)、数据操作(读写内存/寄存器)和系统调用拦截。典型应用场景包括GDB调试器实现、Android性能分析工具的系统调用监控等。该机制通过内核级权限管控确保操作安全性,是Linux进程管控和调试功能的基础支撑。
2025-12-22 21:12:35
896
原创 【Android FrameWork】第四十天:SamplingProfilerService
Android采样分析服务SamplingProfilerService解析 SamplingProfilerService是Android系统中负责性能数据采集的核心服务,采用采样分析技术实现对应用进程的轻量级性能监控。该服务通过Linux内核接口(/proc文件系统、ptrace等)以固定间隔采集线程调用栈和CPU使用数据,相比插桩分析具有更低侵入性。服务架构分为Java层(服务管理)和Native层(底层采样),支持多任务并发执行,为Android Studio Profiler等工具提供底层数据支持
2025-12-22 19:04:17
907
原创 【Android FrameWork】第三十九天:DeviceStorageManagerService
本文深入分析了Android系统中的DeviceStorageManagerService(DSMS),该系统服务负责设备存储空间的管理与监控。文章从Framework层和Native层两个维度展开: Framework层(Java)实现: 服务通过SystemServer启动,注册到ServiceManager 采用定时任务+事件监听方式监控存储状态 实现阈值管理(低空间/关键空间)及告警触发机制 通过IDeviceStorageManager接口向上层提供服务 Native层(C++)实现: 通过JNI
2025-12-22 18:58:01
898
原创 【Android FrameWork】延伸阅读:StorageStatsService 与应用目录管理
本文分析了Android系统中应用存储目录的创建与管理机制,重点探讨StorageStatsService的核心作用。主要内容包括: 目录创建主体:PackageManagerService负责APK安装目录创建,ActivityManagerService负责应用首次启动时的私有数据目录创建。 StorageStatsService角色:作为存储统计服务,通过扫描目录文件系统信息计算存储占用,并进行权限校验以确保数据安全。 权限管理规范:详细说明了各类应用目录(私有数据目录、缓存目录、APK安装目录等)的
2025-12-21 09:00:00
1695
原创 【Android FrameWork】第三十八天:StorageManagerService
StorageManagerService 是 Android 系统的核心服务之一,隶属于包,其核心定位是统一管理设备的所有存储资源,包括内部存储、外部 SD 卡、USB 存储设备等。它不仅为系统组件和应用提供存储相关的操作接口,还负责实现存储安全、存储优化等高级特性。/*** 存储管理核心服务,负责设备存储的全生命周期管理*/// 上下文对象// Binder 服务实现// 存储卷管理器,负责外部存储设备的挂载/卸载// 存储统计服务,负责应用级/分区级存储统计。
2025-12-21 07:30:00
889
原创 【Android FrameWork】延伸阅读:DiskStatsService 的存在状态与角色演变
摘要: 最新Android版本(如Android 14/15)仍保留DiskStatsService,但其角色已弱化为兼容层服务,核心功能被StorageManagerService接管。验证显示该服务仍存在于系统服务列表并能响应dumpsys diskstats命令,但功能缩减至仅提供基础分区统计和调试支持。源码迁移至storage模块,代码量不足200行,移除了Native依赖。保留主因是兼容旧工具和简化调试流程,实际存储管理已完全由StorageManagerService体系实现。
2025-12-20 09:00:00
716
原创 【Android FrameWork】第三十八天:DiskStatsService
摘要 DiskStatsService 是 Android 系统核心服务,负责监控磁盘存储状态(如容量、使用量、分区信息等),为系统及应用提供数据支持。其实现分为两层: Java 层(Framework):继承 SystemService,通过 Binder 提供跨进程接口(如查询分区状态、支持 dumpsys 命令),核心逻辑通过 JNI 调用底层实现。 C++ 层(Native):利用 Linux 系统调用(如 statvfs())获取实际磁盘数据,并通过 JNI 与 Java 层交互。 该服务由 Sy
2025-12-20 08:00:00
742
原创 【Android FrameWork】延伸阅读:EntrDropBoxManagerService解析
本文深入分析了Android系统中的DropBoxManagerService(DMS),该系统服务负责收集和管理系统日志与诊断信息。文章从架构设计、Java层实现和Native层实现三个维度展开:架构上采用分层设计,通过ServiceManager注册服务;Java层实现包括服务启动、日志提交处理及文件管理,核心类如DropBoxManagerService负责初始化存储目录和清理策略;Native层则优化日志写入性能。DMS为系统稳定性分析提供重要支持,通过异步处理和文件压缩确保高效运行。
2025-12-19 08:45:00
924
原创 【Android FrameWork】第三十七天:认识EntrDropBoxManagerService
摘要: DropBoxManagerService是Android系统的核心服务,用于持久化存储系统和应用运行时的诊断信息(如崩溃日志、ANR记录等)。其核心特性包括按标签分类存储、容量限制与自动清理机制,以及严格的访问权限控制。系统服务或拥有权限的应用可通过API或ADB命令读写数据,普通应用仅能访问自身写入的内容。该服务在系统调试、应用诊断和自动化测试中发挥关键作用,为问题排查提供可靠依据。
2025-12-19 08:15:00
684
原创 【Android FrameWork】第三十六天:随机数EntropyMixer
摘要: Android EntropyService(后更名为EntropyMixer)是保障系统随机数安全性的核心服务,通过维护内核熵池解决启动初期随机数可预测问题。该服务在Framework层(Java)实现核心逻辑,包括加载历史熵数据、补充设备信息、硬件随机源以及定时持久化操作;同时依赖C++层通过JNI进行高效文件读写。其通过读写/dev/urandom设备与内核熵池交互,确保为加密、认证等场景提供高质量随机数。
2025-12-19 07:30:00
936
原创 【Android 高斯模糊】第三天:RenderScript实现(一)
Android RenderScript高斯模糊实现摘要(150字): 本文介绍基于RenderScript的高性能高斯模糊实现方案。相比传统Java实现,RenderScript利用并行计算框架,通过ScriptIntrinsicBlur内核实现数量级性能提升。关键点包括:1) 配置gradle开启RenderScript支持;2) 使用Allocation内存分配器高效传输位图数据;3) 通过ScriptIntrinsicBlur设置模糊半径(0-25)并执行并行计算。文中提供了完整代码实现,包含位图生
2025-12-18 08:30:00
778
原创 【Android FrameWork】第三十五天:Android RenderScript
摘要: RenderScript是Android的高性能并行计算框架,通过自动分发任务到CPU/GPU实现高效处理,适用于图像处理、数值计算等场景。其核心优势包括自动并行化、内置优化内核(如高斯模糊)、低内存开销及广泛兼容性。尽管已进入维护模式,RenderScript仍被用于图片滤镜、实时视频特效等需求。本文以高斯模糊为例,详解其配置、Kotlin调用流程及资源管理,并探讨其技术价值与替代方案。开发者可通过RenderScript简化复杂计算,但需关注未来生态演进。
2025-12-18 08:15:00
577
原创 【Android FrameWork】第三十四天:系统设置项(Settings)与系统属性(System Properties)
Android系统配置管理存在两个核心维度:系统设置项(Settings)和系统属性(System Properties)。系统设置项面向应用层,通过SettingsProvider和SQLite数据库实现持久化配置,支持权限分级和监听机制;系统属性面向底层,通过init进程维护内存哈希表和持久化文件,提供轻量级运行时配置。二者在设计目标、存储机制和访问权限上存在显著差异,前者适合用户可感知的持久化配置,后者适合系统底层的运行时状态管理。
2025-12-18 07:30:00
2064
原创 【Android FrameWork】第三十三天:Camera视频流写入SurfaceView的机制
本文摘要: Android Camera视频流写入SurfaceView的底层机制基于多模块协同,核心依赖BufferQueue的生产者-消费者模型。Camera HAL作为生产者采集视频帧,通过ANativeWindow绑定到应用层Surface,SurfaceFlinger作为消费者进行合成渲染。系统通过Camera Service桥接应用与硬件,Gralloc分配硬件缓冲区实现高效数据传输,全程避免CPU/GPU拷贝。关键流程包括:Surface映射为ANativeWindow、Camera Serv
2025-12-17 14:16:53
754
原创 【Android FrameWork】第三十二天:Framework层自定义系统服务
本文介绍了在Android Framework层自定义系统服务的开发流程。首先解析了系统服务的核心机制,包括其运行载体SystemServer进程、跨进程通信的Binder机制等。然后详细说明了开发环境准备,包括硬件要求、源码下载编译等步骤。最后通过实现一个CustomSystemService示例,展示了从定义AIDL接口、实现服务逻辑到注册服务的完整过程。该服务提供了获取自定义版本号和设置标识的功能,适用于系统功能定制场景。全文150字,涵盖了自定义系统服务的关键技术要点和实践指南。
2025-12-17 10:41:36
1141
原创 【Android 高斯模糊】第二天:Android 实现高斯模糊的四种方法
本文介绍了Android开发中四种主流的高斯模糊实现方案: RenderScript方案 - 官方高性能计算框架,支持并行处理,模糊效果均匀,适用于API 11+设备 Glide方案 - 图片加载库自带模糊功能,集成简单但需依赖Glide库 FastBlur方案 - Java层手动实现,兼容所有Android版本但性能较差 其他方案 - 如OpenCV等 每种方案在兼容性、性能和实现复杂度上各有特点,开发者可根据项目需求选择最合适的实现方式。文章提供了可直接复用的代码示例,帮助开发者快速集成高斯模糊功能。
2025-12-17 08:30:00
1145
原创 【Android GLSurfaceView源码学习】第二天:GLSurfaceView深度分析
摘要: GLSurfaceView是Android中基于SurfaceView扩展的OpenGL ES渲染组件,封装了EGL上下文管理、渲染线程调度等复杂逻辑。它继承SurfaceView的独立绘制能力,并通过EGLConfigChooser、EGLContextFactory等接口实现OpenGL配置自动化。内置的GLThread支持持续/按需两种渲染模式,Renderer接口则解耦了渲染逻辑。此外,GLSurfaceView优化了生命周期管理(暂停/恢复时处理EGL上下文),提供调试工具和线程通信机制(
2025-12-16 10:39:09
1127
原创 【Android 高斯模糊】第一天:高斯模糊实现原理
高斯模糊是一种基于高斯分布的图像处理技术,通过加权平均使相邻像素颜色自然融合。相比平均模糊,它赋予中心像素更高权重,边缘权重按高斯函数衰减,模糊效果更符合人眼视觉。核心参数σ控制模糊程度,σ越大模糊范围越广。实现过程包括生成归一化高斯核和滑动卷积运算,其可分离性可显著提升计算效率。广泛应用于图像降噪、景深模拟、边缘检测预处理和UI设计等领域,成为兼顾自然效果与工程实用的经典算法。
2025-12-16 08:30:00
821
原创 【Android FrameWork】延伸阅读:SurfaceFlinger 的 openTransaction 与 closeTransaction
本文分析了Android图形系统中的SurfaceFlinger服务的openTransaction与closeTransaction机制。这两个接口是控制图层操作原子性的关键,通过事务机制确保多个图层属性修改能同步生效。openTransaction开启事务并缓存操作,closeTransaction提交事务并触发合成,两者必须成对调用。其实现依赖VSync信号同步,避免画面撕裂。典型应用场景包括多窗口管理和复杂动画,使用时需注意成对调用、避免耗时操作,并优先使用现代API如SurfaceControl.
2025-12-16 07:30:00
769
原创 【Android FrameWork】实战:跟踪Android APP Surface创建流程
摘要 本文深入分析了Android系统中Surface的创建流程,探讨了其核心价值与追踪意义。Surface作为图形渲染的关键载体,其创建涉及APP进程、WMS和SurfaceFlinger三方协作。文章详细拆解了5个关键阶段:ViewRootImpl初始化、setView方法调用、relayoutWindow请求、performTraversals绘制及mSurface字段赋值。通过反射技术实现流程追踪,优化了工具类的容错性、版本适配和状态回调功能,帮助开发者精准定位UI渲染问题。代码实现强调主线程校验、
2025-12-15 21:43:07
992
原创 【Android FrameWork】延伸阅读:SurfaceFlinger线程
本文深入解析了Android SurfaceFlinger的核心线程模型及其工作机制。SurfaceFlinger通过多线程分工实现高性能图形渲染,主要包括: 主线程负责服务初始化、Binder请求处理和全局状态管理,其核心逻辑在Looper循环中运行,确保轻量化以避免阻塞。 VSyncThread作为硬件同步信号的监听者,从Display HAL获取VSync事件并转发给EventThread,是整个渲染流程的时钟基准。 EventThread负责VSync信号的分发调度,通过事件队列机制协调应用渲染和S
2025-12-15 09:00:00
990
原创 【Android FrameWork】第三十一天:Surface创建流程解析
**摘要: SurfaceFlinger是Android图形渲染的核心系统服务,负责多图层合成与显示输出。它通过Layer管理应用窗口,借助HWComposer(HWC)制定硬件/GPU合成策略,同步VSync信号实现稳定渲染。工作流程包含应用绘制、缓冲区提交、VSync触发、图层合成与屏幕输出七个步骤。开发者可通过adb命令(如dumpsys SurfaceFlinger)和Systrace工具调试性能问题,优化方向包括减少Layer数量、适配HWC合成及VSync对齐。该服务贯穿应用层到硬件层,是保证A
2025-12-15 08:00:00
1259
原创 【Android FrameWork】延伸阅读:IGraphicBufferProducer驱动UI绘制过程
本文分析了Android UI绘制流程中IGraphicBufferProducer的关键作用。当Surface持有IGraphicBufferProducer后,XML定义的UI通过"onDraw触发绘制→GBP申请显存→写入绘制指令→提交缓冲区→SurfaceFlinger合成"的闭环显示在屏幕上。文章从XML布局解析开始,详细拆解了UI绘制全流程,重点剖析了C++层IGraphicBufferProducer作为应用进程与SurfaceFlinger核心接口的实现逻辑,揭示了UI数
2025-12-13 11:57:33
701
原创 【Android FrameWork】第三十天:Surface创建流程解析
Android Surface创建流程涉及应用进程、SystemServer(WMS)和SurfaceFlinger三方跨进程协作。核心步骤包括:1)应用进程通过ViewRootImpl发起Surface申请;2)WMS校验窗口属性后,通过JNI调用Native层;3)SurfaceFlinger创建BufferQueue并返回Producer端;4)WMS将结果回传给应用进程。整个流程中,Java层负责请求封装和结果处理,核心的BufferQueue创建和显存管理由C++层的SurfaceFlinger实
2025-12-13 08:30:00
930
原创 【Android FrameWork】实战:基于MediaPlayer和MediaRecorder的录音机
华为录音机以简洁的UI设计、稳定的录音/播放功能成为安卓原生录音机的标杆,本文将基于Android原生开发(Java),从项目架构、核心代码、功能实现到问题排查,完整讲解如何复刻一款1:1还原华为风格的录音机应用。
2025-12-12 20:03:55
926
原创 【Android FrameWork】延伸阅读:MediaRecorder状态机
MediaRecorder状态机采用三层联动设计(Java层、JNI/Native层、MediaServer层),每层维护独立状态变量并通过严格校验保证状态转换合法性。Java层通过枚举变量和同步机制提供API调用屏障;JNI层作为桥接,同步状态并校验跨进程调用;MediaServer层作为最终权威,确保底层操作的安全性。这种分层管控机制有效避免了资源泄漏和功能异常。
2025-12-12 16:35:23
1053
原创 【Android FrameWork】第二十九天:MediaPlayer和MediaRecorder
MediaPlayer的核心是“解封装→解码→输出”,依赖MediaExtractor、MediaCodec、AudioTrack/Surface;MediaRecorder的核心是“采集→编码→封装”,依赖AudioRecord/Camera、MediaCodec、MediaMuxer。
2025-12-12 16:28:37
829
原创 【Android FrameWork】延伸阅读:Jetpack Compose
Jetpack Compose是Google推出的新一代Android声明式UI框架,采用纯Kotlin代码构建界面,通过状态驱动视图更新。其核心优势包括:开发效率高(实时预览、代码量减少)、状态管理优雅(自动重组)、性能优化(智能局部更新)以及更好的代码复用性。但存在学习曲线陡峭、生态适配不全和调试复杂等问题。相比传统XML布局,Compose在开发效率和现代性上更优,而XML布局则在兼容性和成熟度上占优。开发者需根据项目需求(如目标用户设备、团队技术栈)选择合适方案,新项目推荐Compose,旧项目可渐
2025-12-11 18:00:00
814
原创 【Android FrameWork】第二十八天:Activity 的 UI 绘制全过程
Activity → PhoneWindow → DecorView → ContentParent → 开发者布局(如 R.layout.activity_main),形成 “Activity - 窗口 - 根视图 - 自定义布局” 的四层 UI 载体结构,为后续绘制奠定基础。载体初始化:Activity 创建时初始化 PhoneWindow,PhoneWindow 创建 DecorView 并确定 ContentParent。布局加载。
2025-12-11 08:00:00
955
原创 【Android FrameWork】延伸阅读:CursorWindow的作用
摘要:CursorWindow是Android数据库框架的核心内存缓存组件,用于存储Cursor查询结果。它通过内存缓存减少数据库IO开销,并支持跨进程数据共享。实现上采用可控大小的共享内存块(默认2MB)和行列结构的二进制数据布局。生命周期与Cursor绑定,跨进程场景需特殊处理以避免内存泄漏。开发中需注意内存管理、数据超限及线程安全问题。现代开发中,Room框架底层仍依赖CursorWindow,但封装了其复杂性。理解CursorWindow原理有助于优化数据访问性能,尤其在大数据或跨进程场景中。
2025-12-11 07:30:00
1977
原创 【Android FrameWork】第二十七天:ContentProvider的实现
本文深入解析了Android系统中ContentProvider的跨进程访问机制。关键点包括: 底层依赖Binder IPC机制实现进程间通信,通过IContentProvider接口定义跨进程协议 ContentProvider内部Transport类作为Binder服务端载体,将请求转发给应用层实现 完整访问流程分为四个阶段: ContentResolver向AMS请求代理 AMS管理进程并分发Binder代理 Binder驱动中转请求 数据返回与处理 该机制通过系统服务协同工作,实现了安全高效的跨进程
2025-12-10 20:28:34
632
原创 【Android FrameWork】第二十六天:BroadcastReceiver
BroadcastReceiver是Android四大组件之一,负责跨进程、跨组件的解耦通信,用于处理系统事件通知(如网络状态变化、应用安装等)。其工作原理主要涉及三大角色:广播发送者、接收者和系统调度中心(AMS/PMS)。 注册机制分为静态注册(通过Manifest声明,由PMS解析存储)和动态注册(代码调用,直接与AMS交互)。静态注册适用于应用未启动时接收广播,动态注册则绑定组件生命周期。 广播分发以AMS为核心,通过Binder实现跨进程通信。发送者通过Binder将Intent传给AMS,AMS
2025-12-10 08:00:00
811
Android SurfaceView+OpenGL ES 3.0 kotlin版本实现绘制彩色三角形源码
2025-10-16
snmpwalk的timeout问题
2016-07-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅