- 博客(49)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 第七板块:Android 存储体系与文件系统 | 第二十一篇:Vold 与 FUSE 存储架构
这是 Android 设备数据持久化的基石。如果说内存是暂存的思绪,那么存储就是永久的记忆。本篇将彻底拆解 Vold(Volume Daemon) 的存储管理架构、FUSE(Filesystem in Userspace) 的虚拟挂载机制、多用户存储隔离(Emulated Storage)、SD 卡与 OTG 的动态挂载、StorageManagerService 的配额管理。
2026-06-10 14:25:05
63
原创 第六板块:Android 安全与权限体系 | 第二十篇:应用签名、权限机制与 PackageManagerService 的安全校验
这是 Android 应用生态的信任锚点。如果说 SELinux 是系统内部的防弹衣,那么 应用签名 就是应用之间的身份证与防伪码。本篇将彻底拆解 APK 签名方案(v1/v2/v3/v4)的密码学原理、证书链(Certificate Chain)的信任模型、PackageManagerService (PMS) 的安装校验流水线、权限的动态授予与 UID 映射、SharedUserId 的信任边界。
2026-06-10 14:24:25
103
原创 第六板块:Android 安全与权限体系 | 第十九篇:SELinux 强制访问控制与沙箱机制
这是 Android 系统安全的最后一道防线。如果说 Linux 的 DAC(自主访问控制)是小区门禁,那么 SELinux(Security-Enhanced Linux) 就是每家每户的防盗门。本篇将彻底拆解 LSM(Linux Security Modules)框架、SELinux 的策略语言(Policy Language)、安全上下文(Security Context)、访问向量缓存(AVC)、Android 的 enforcing 模式与 neverallow 规则。
2026-06-10 14:23:58
248
原创 第五板块:Android 系统服务与电源管理 | 第十八篇:Battery Service 与 电量统计(Fuel Gauge)算法
这是 Android 设备能量视角的终极审判。如果说 PMS 是控制能量消耗的阀门,那么 Battery Service 就是计量能量流逝的仪表盘。本篇将彻底拆解 Linux 电源供应子系统(Power Supply Class)、Healthd 守护进程的轮询机制、电池容量(Capacity)的百分比算法、电流积分法(Coulomb Counting)、电池曲线校准(Gas Gauging)。
2026-06-10 14:23:33
82
原创 第五板块:Android 系统服务与电源管理 | 第十七篇:Power Manager Service 与 WakeLock 机制
这是 Android 设备续航能力的守护神。我们将以手术刀级的精度,深入 Linux 内核电源管理、Power Manager Service (PMS) 的锁仲裁算法、WakeLock 的引用计数与 Binder 死亡回收、Doze 模式的时空置换算法。本篇将包含内核 sysfs 接口、native 层调用、System Server 的源码级逻辑,揭示 Android 如何在 纳秒级 的精度上平衡 性能 与 功耗。
2026-06-10 14:20:13
104
原创 第四板块:Android 输入系统与触控事件 | 第十六篇:按键分发与软键盘(IME)的窗口协同
这是输入系统的逻辑中枢。如果说触控是连续流,那么按键就是离散的指令。本篇将彻底拆解 物理按键与软键盘按键的统一分发模型、输入法管理器(InputMethodManager)的窗口注入机制、IME 与 App 窗口的 Z-order 协同、Back 键的拦截与返回栈、无障碍服务(Accessibility)对输入的劫持。我们将深入 System Server 与 应用进程 的交互细节,揭示为何软键盘弹出时界面会压缩,以及 Back 键是如何一路回溯的。
2026-06-09 03:12:40
270
原创 第四板块:Android 输入系统与触控事件 | 第十五篇:InputReader 与 InputDispatcher 的触控流水线
这是 Android 交互系统的神经末梢。如果说图形渲染是视觉,那么输入系统就是触觉。本篇将彻底拆解 Linux 输入子系统(evdev)、InputReader 的原始事件解析、InputDispatcher 的投递策略、ANR 的超时机制、Touch 事件的预测与插值。我们将深入 System Server 的输入模块,揭示从手指触摸屏幕到应用收到 MotionEvent 的完整链路。
2026-06-09 03:12:07
381
原创 第三板块:Android 图形渲染与窗口体系 | 第十四篇:View 绘制体系与 RenderThread 异步渲染
这是 Android 应用层渲染的终极奥秘。我们将彻底拆解 View 的 Measure/Layout/Draw 三大流程、DisplayList 的录制与回放、RenderThread 的异步渲染机制、UI 线程与 RenderThread 的同步屏障(Sync Barrier)。我们将深入 Android Framework 的 UI 渲染源码,揭示为何 Android 能够实现 60/90/120 FPS 的流畅交互,以及 UI 线程卡顿 的根本原因。
2026-06-09 03:11:33
329
原创 第三板块:Android 图形渲染与窗口体系 | 第十三篇:SurfaceFlinger 与 VSYNC 信号机制
这是 Android 图形系统的心脏。如果说 View 的绘制是“画家在画板上作画”,那么 SurfaceFlinger 就是**“美术馆的策展人将画作挂上墙”**。本篇将彻底拆解 SurfaceFlinger 的合成算法、VSYNC 信号的产生与分发、Triple Buffering(三重缓冲)机制、HWC (Hardware Composer) 的硬件叠加原理。
2026-06-09 03:10:56
291
原创 第二板块:Android 四大组件标准化学理 | 第十二篇:四大组件全景总结与系统服务(System Server)架构
本文是Android四大组件标准化学理板块的终章,从系统设计者视角全面解析Android架构。内容分为三部分: 四大组件全景时序图:通过一张超级时序图串联四大组件的完整生命周期,展示从系统启动到应用交互的全链路过程,包括组件间的共生关系。 System Server深度解剖: 剖析系统核心进程的启动流程(由Zygote孵化) 详解三大核心服务(AMS、PMS、WMS)的职责与交互 解析System Server的Binder线程池架构(主线程+16个Binder线程) 进程层级模型: 构建Android进程
2026-06-09 03:10:20
166
原创 第二板块:Android 四大组件标准化学理 | 第十一篇:组件间通信(IPC)与 Binder 深度解析
Binder 是 Android 系统的神经网络。如果说四大组件是器官,那么 Binder 就是连接这些器官的神经通路。本篇将彻底拆解 Binder 的驱动层架构、内存映射(mmap)机制、线程池调度模型、AIDL 的序列化与反序列化原理、死亡通知(Death Recipient)、权限校验(Permission Check)。
2026-06-08 01:15:00
895
原创 第二板块:Android 四大组件标准化学理 | 第十篇:ContentProvider 数据共享与 SQLite 引擎
文章摘要: ContentProvider是Android系统中唯一支持应用间安全共享结构化数据的组件,本质是封装数据源并提供统一CRUD接口的系统服务。其核心架构基于URI路由标识数据,通过Binder实现跨进程通信,底层依赖SQLite数据库的ACID事务机制。
2026-06-08 01:14:02
695
原创 第二板块:Android 四大组件标准化学理 | 第九篇:BroadcastReceiver 事件分发与有序广播
BroadcastReceiver 是 Android 系统中最轻量级、最松散耦合的组件。它不提供 UI,也不直接执行长时间任务,而是作为一个系统级事件的中转站(Event Hub)。本篇将彻底拆解广播的异步分发模型、AMS 中的队列管理机制、静态注册与动态注册的权限鸿沟、有序广播(Ordered Broadcast)的拦截与修改机制、粘性广播(Sticky Broadcast)的历史遗留问题、LocalBroadcastManager 的进程内通信本质。
2026-06-08 01:12:58
315
原创 第二板块:Android 四大组件标准化学理 | 第八篇:Service 后台执行实体与优先级
Service 是 Android 系统中唯一没有可视化界面、长期运行于后台的组件。本篇将彻底拆解 Service 的双生性(启动与绑定)、生命周期悖论、优先级调度算法、前台服务(Foreground Service)的生存法则、Bound Service 的连接池模型、AIDL 的 IPC 序列化机制、JobScheduler 与 WorkManager 的系统级调度。
2026-06-08 01:12:00
325
原创 第二板块:Android 四大组件标准化学理 | 第七篇:Activity 页面载体与任务栈算法
这是 Android 系统中交互最复杂、状态最易变、调度最频繁的核心组件。本篇将以 “显微镜” 的视角,对 Activity 进行外科手术式的解剖。我们将不再满足于“是什么”,而是深入探究 “为什么是这样” 以及 “底层源码如何实现”。
2026-06-08 01:11:01
708
原创 第二板块:Android 四大组件标准化学理 | 第六篇:四大组件架构总论与 Manifest 规范
从 Android 系统设计者的视角,解析四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的架构总纲与 Manifest 注册规范。我们将深入探讨组件如何被系统发现、如何被调度、以及它们之间的进程间通信(IPC)边界。
2026-06-07 00:08:50
290
原创 第一板块:Android 系统基石与运行原理 | 第五篇:Context 上下文与资源配置体系
这是第一板块中最复杂、最深邃的一章。我们将对 Android 系统中的全局信息接口 Context 进行外科手术式的剖析。内容将覆盖 Context 的继承拓扑学、ContextImpl 的内部构造、Resources 与 AssetManager 的 Native 层实现、resources.arsc 的二进制解析、多 APK 资源加载机制、系统配置(Configuration)的动态更新、以及 LoadedApk 与 ClassLoader 的绑定关系。
2026-06-07 00:07:50
397
原创 第一板块:Android 系统基石与运行原理 | 第四篇:进程孵化(Zygote)与 Low Memory Killer 机制
解析 Android 系统最核心的进程孵化机制与内存回收机制。深入剖析 Zygote 如何通过 fork() 快速创建应用进程,以及 Low Memory Killer (LMK) 如何在系统内存不足时依据**进程优先级(oom_adj)**选择性杀掉进程。
2026-06-07 00:06:50
333
原创 第一板块:Android 系统基石与运行原理 | 第三篇:ART 与 Dalvik 运行时环境原理
深入 Android 系统的执行引擎核心。对比分析 Dalvik 与 ART 的架构差异,详解 JIT(即时编译) 与 AOT(预先编译) 的混合编译策略,剖析 DEX、OAT、VDEX 文件格式的二进制结构,以及 ART 的并发标记清除(CMS)垃圾回收机制。
2026-06-07 00:05:58
394
原创 第一板块:Android 系统基石与运行原理 | 第二篇:Android 编译、打包与安装机制
本文系统解析了Android应用从源码编译到设备安装的完整生命周期。首先阐述核心链路:源码→字节码→DEX→APK→签名安装。通过多阶段流程图详细说明编译流程,包括javac/kotlinc编译、D8转换、AAPT2资源处理和最终签名对齐。随后剖析APK标准结构,重点解读AndroidManifest.xml、resources.arsc等关键文件的二进制特性和功能原理。在签名机制部分,对比分析V1/V2/V3三种签名方案的加密原理和版本演进,并解释ZipAlign对齐机制的内存优化作用。最后深入Packa
2026-06-06 00:09:02
154
原创 第一板块:Android 系统基石与运行原理 | 第一篇:Android 系统架构分层与 AOSP 规范
Android系统架构与AOSP规范摘要 Android是基于Linux内核构建的分层操作系统,采用清晰的五层架构设计: Linux内核层:提供进程调度、内存管理、驱动支持等基础功能,包含Binder等Android特有组件 硬件抽象层(HAL):通过标准C接口屏蔽硬件差异,实现驱动与上层解耦 系统运行库层:包含Native库和ART运行时,执行核心功能与字节码 Java API框架层:以系统服务形式暴露核心功能给应用 应用层:运行在独立沙箱中的各类应用 各层间定义清晰的接口边界,通过JNI、HAL标准接口
2026-06-06 00:06:52
549
原创 系列三:组件化与模块化进阶 | 第12篇 老项目重构实战(绞杀者模式):从单体巨石到组件化架构的无痛迁移
本文探讨了如何通过"绞杀者模式"将单体应用重构为组件化架构。文章首先分析了重写项目的三大风险:业务断层、细节遗漏和验证困难,指出直接重写往往导致失败。然后详细介绍了绞杀者模式的实施策略:新建壳工程、逐步迁移功能模块、通过路由切换流量。文章提供了具体的技术方案,包括建立防腐层隔离老代码、依赖仲裁、分阶段代码迁移、数据迁移策略等。同时还涵盖了开发环境配置、分支管理、灰度发布和回滚机制等工程实践。这套方法能在保证业务连续性的前提下,实现架构的渐进式升级。
2026-06-06 00:05:27
346
4
原创 系列三:组件化与模块化进阶 | 第11篇 组件化项目规范与问题根治:依赖、资源、Manifest 与混淆的全链路管控
组件化全链路管控规范 本文深入剖析了Android组件化开发中的四大核心难题:依赖冲突、资源重叠、Manifest合并问题和混淆崩溃,并提出了企业级解决方案。 核心问题 依赖冲突:不同组件依赖库版本不一致导致编译失败 资源冲突:组件间同名资源引发编译错误 Manifest合并失败:组件与应用清单文件属性冲突 混淆崩溃:多组件混淆配置不当导致运行时异常 系统解决方案 依赖管理规范 建立严格依赖传递规则:基础模块→业务组件→壳工程 采用Version Catalog统一版本管理 合理使用implementati
2026-06-06 00:04:52
357
原创 系列三:组件化与模块化进阶 | 第10篇 组件通信与路由(ARouter 核心落地):跨组件服务、拦截器与动态降级
如果你以为组件化只是把代码拆开,那就大错特错了。拆开后,你会发现新的痛点:登录组件怎么把 UserId 告诉订单组件?支付组件怎么调用 IM 组件的聊天服务?路由跳转失败了怎么办?怎么监控路由的性能?本文将深入 ARouter 的源码级原理,并提供一套 企业级落地规范,包含 跨组件服务调用(Service Provider)、全局拦截器(登录/权限/埋点)、降级策略 以及 路由表动态更新。
2026-06-06 00:03:45
236
原创 系列三:组件化与模块化进阶 | 第9篇 组件化架构从零搭建实战:Gradle 极速配置、编译加速与多环境管控
本文深入探讨了Android组件化架构中的Gradle工程化治理问题,针对拆解后常见的编译速度慢、依赖冲突、环境混乱等痛点提供了系统解决方案。主要内容包括: Gradle现代化改造:从Groovy迁移到Kotlin DSL,使用Version Catalog统一管理依赖版本,实现版本一致性和IDE支持。 编译加速方案:详细介绍了Configuration Cache、Build Cache、并行编译等多项优化技术,可将全量编译时间从15分钟降至3分钟以内。
2026-06-05 14:00:18
269
原创 系列三:组件化与模块化进阶 | 第8篇 组件化与模块化核心实战区别:大型项目架构的必由之路
本文深入探讨了组件化与模块化在大型项目架构中的核心区别与实践应用。文章首先通过典型"单体工程"问题(编译慢、代码冲突、业务耦合等)引出组件化架构的必要性,对比分析了单体工程与组件化工程的多维度差异。 核心部分详细区分了模块化(按技术职能拆分,如网络、数据库模块)和组件化(按业务线拆分,如登录、支付模块)的本质区别,提出企业级三层架构方案: 基础模块层(技术复用) 业务组件层(独立运行) 壳工程层(组装配置) 实战环节指导如何从零搭建组件化工程,包括: 工程目录规划 Gradle多模块配置 独立调试方案 资源
2026-06-05 13:59:26
290
原创 系列二:MVVM 深度实战与项目重构 | 第7篇 LiveData & StateFlow 状态管理实战:从“粘包弹”到“丝滑流式”
本文深入探讨Android MVVM架构中的状态管理痛点,分析LiveData"粘性事件"问题的根源(如屏幕旋转导致Toast重复弹出)。通过解析LiveData内部版本号机制,揭示其原理。针对此问题,文章对比了传统解决方案SingleLiveEvent的局限性,并提出基于StateFlow的现代化方案。详细演示了如何用StateFlow重构ViewModel,实现聚合式UI状态管理,并强调生命周期安全的收集方式(repeatOnLifecycle)。最后提供企业级状态管理规范,解决
2026-06-05 13:59:02
344
原创 系列二:MVVM 深度实战与项目重构 | 第6篇 DataBinding & ViewBinding 实战落地:告别 findViewById 的“刀耕火种”
摘要:本文深入探讨了Android开发中ViewBinding和DataBinding的实战应用与规范,旨在替代传统的findViewById方法。ViewBinding作为轻量级解决方案,专注于类型安全的视图绑定,适用于大多数场景;而DataBinding则支持数据驱动UI,适合复杂的数据绑定需求。文章提供了企业级的BaseBindingActivity封装方案,介绍了RecyclerView中的高级用法,并针对常见陷阱给出避坑指南。最后,强调DataBinding应谨慎使用,避免在XML中编写业务逻辑。
2026-06-05 00:05:54
209
原创 系列二:MVVM 深度实战与项目重构 | 第5篇 ViewModel 核心原理与实战避坑:它是如何“死而复生”的?
今天,我们将深入 ViewModel 的源码级原理,彻底搞懂 ViewModelStore、ViewModelProvider、HolderFragment 的工作机制,并解决企业项目中 ViewModelScope 内存泄漏、页面销毁数据残留、多 Fragment 数据共享 等核心痛点。
2026-06-05 00:05:21
383
原创 系列二:MVVM 深度实战与项目重构 | 第4篇 MVVM 完整架构搭建:从零打造企业级框架(Base 封装、全局状态与生命周期铁律)
本文是MVVM系列第四篇,重点讲解如何从零搭建企业级MVVM框架。文章首先分析了常见的MVVM实现误区,如ViewModel直接弹Toast、Activity处理业务逻辑等问题。然后明确了MVVM三层架构的职责边界,强调UI层只负责渲染和事件收集,ViewModel处理业务逻辑,数据层提供数据。
2026-06-04 00:03:16
396
原创 系列一:架构思想进阶 | 第3篇 SOLID 原则与设计模式实战:从“代码搬运工”到“架构师”的必经之路
文章摘要:SOLID原则与设计模式实战指南 本文深入讲解了如何通过SOLID设计原则和设计模式提升代码质量,摆脱"面条式代码"的困境。文章首先通过一个典型的登录模块设计问题引入,展示了糟糕设计导致的维护难题。随后详细解析了SOLID五大原则: 单一职责原则(SRP):每个类只做一件事 开闭原则(OCP):对扩展开放,对修改关闭 里氏替换原则(LSP):子类可替换父类 接口隔离原则(ISP):避免"胖接口" 依赖倒置原则(DIP):面向接口编程 文章通过Kotlin代码示例对比了违反原则和符合原则的实现方式,
2026-06-04 00:02:23
525
原创 系列一:架构思想进阶 | 第2篇 分层架构实战:四层拆分、单向依赖与架构防腐
本文摘要: 《分层架构实战:四层拆分、单向依赖与架构防腐》深入探讨了企业级Android项目的架构设计。核心观点包括:分层旨在隔离变化(如数据库/网络库更换不影响UI层),严格遵循单向依赖原则(下层禁止依赖上层),并主张通过Gradle模块化和ArchUnit测试实现编译期约束。文章提出四层架构方案: UI层:仅处理界面交互,禁止直接操作数据 业务层:定义核心逻辑,保持平台无关性 数据层:实现Repository模式,统一数据源访问 基础层:纯技术实现(网络/存储等),严禁包含业务逻辑 文中通过代码对比强调
2026-06-03 23:44:36
714
原创 系列一:架构思想进阶 | 第1篇 Android 架构演进实录:从 MVC 的“万能类”到 MVVM 的数据驱动
本文剖析了Android架构从MVC到MVVM的演进过程,揭示了传统MVC模式导致Activity代码臃肿的根本原因(生命周期耦合、职责混乱)。通过对比MVC、MVP的实现差异,重点展示了MVP如何通过接口解耦视图与业务逻辑,并提供了标准代码示例。文章指出MVP虽解决了部分问题,但仍存在接口爆炸等痛点,为后续MVVM的引入埋下伏笔。全文采用流程图+代码片段+问题对照表的形式,直击架构设计痛点,为开发者提供可落地的架构升级方案。
2026-06-03 23:43:29
918
原创 设计模式系列 | 代码的设计美学(代理模式):从“游戏代练”窥探代理模式的终极奥义
文章摘要: 本文以游戏代练为切入点,探讨代理模式在代码设计中的美学与哲学。从原始代码的直球式调用,到普通代理、强制代理的层层递进,最终揭示动态代理作为AOP基石的强大能力。代理模式通过职责分离(如日志、权限与核心业务解耦)、访问控制(强制代理保护真实对象)和抽象接口,展现了软件设计中控制与反控制的艺术。文章指出,静态代理直观但冗余,动态代理则通过运行时生成代理类实现通用性,成为Spring AOP的核心。设计模式不仅是技术方案,更是现实社会关系在代码中的映射,体现了结构之美与逻辑诗意的融合。
2024-04-17 21:56:07
260
原创 设计模式之:观察者模式(kotlin)
古人云:知己知彼,百战不殆。打仗,靠的是信息,古时候是斥候,现如今叫侦查兵,也就是拿到敌人的动向,才好排兵布阵,不然一不小心被偷袭,那可能面临着全军覆没的风险。所以,掌握信息,才能打好准备之仗。
2024-04-16 22:51:49
454
原创 kotlin:APP超时验证
在工作过程中,有这样一个需求:1.用户退出应用后,再次点击应用需要进行验证(指纹,面部,手势)。2.用户返回桌面后,超过某时间段后返回应用需要进行验证(指纹,面部,手势)。
2024-04-14 18:50:32
373
原创 Java寻找两个正序数组的中位数
题目来源:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题目描述:给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。示例:示例 1:输入:nums1 = [1,3], nums2 = [2]...
2021-03-08 21:12:51
501
原创 【百度AR】——Android SDK Pro版本的集成和case的使用
一、介绍:1.首先我们去官网上看一下百度AR SDK Pro版本的一个简介:https://ai.baidu.com/docs#/DuMixAR-Android-SDK-Pro/top2.然后下载Demo的一个地址:https://ai.baidu.com/sdk#ar3.再一个是内容提供平台:https://dumix.baidu.com/content#/4.最后是应用开放平台...
2019-09-30 11:43:52
1328
2
原创 【Java】——基本数据类型
目录byte型short短整型int整型long长整型double双精度浮点型float单精度浮点型char字符型boolean布尔值类型Java语言提供了八种基本类型。(1个字节占8位,二进制表示为:0000 0000 ~ 1111 1111)六种数字类型(四个整数型,两个浮点型)。一种字符类型。一种布尔型。byte型byte数据类型是8位...
2019-09-25 10:25:36
373
原创 【Java】——从HelloWorld开始
一、前期准备当前JDK已经发展到了JDK13版本,但是,对于初学者来说,了解JDK的发展还是比较重要的。再次,博主建议使用JDK8来进行学习。首先是去官网下载JDK,获取去到我的百度网盘进行下载JDK,提取码:prvh。安装JDK下载完之后安装,之后选择安装路径(尽量不要有中文,中间不要有空格)。当安装到下面这一步的时候就可以直接X掉了。因为JDK包含有JRE...
2019-09-24 23:46:08
340
1
在Android中使用面向对象思想的可行性
2016-09-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅