Gityuan

Keep on going never give up

[置顶]Android开篇

基于Android 6.0的源码,专注于分享Android系统原理、架构分析的原创文章,这是Android系列文章的开篇。

Binder子系统之调试分析(三)

一. binder调试信息 1.1 binder_thread 调用方法:print_binder_thread thread 8980: l 12 //tid=8980,looper=12 关于looper状态值: BINDER_LOOPER_STATE_REGISTERED = 0x01, // 创建注册线程BC_REGISTER_LOOPER BINDER_LOOPER...

Binder子系统之调试分析(二)

一. 概述 上一篇文章已经介绍了binder子系统调试的一些手段,这篇文章再来挑选系统几个核心服务进程来进行分析. 1.1 创建debugfs 首先debugfs文件系统默认挂载在节点/sys/kernel/debug,binder驱动初始化的过程会在该节点下先创建/binder目录,然后在该目录下创建下面文件和目录: proc/ stats state trans...

Binder子系统之调试分析(一)

一. 概述 在博客以前有写过关于binder系列,大概写了10篇关于binder的文章,从binder驱动,到native层,再到framework,一路写到app层的使用。有兴趣的可以看看 Binder系列—开篇。 二.Binder驱动调试 看过Binder系列文章的同学,会发现Binder IPC过程最终都交给Binder Driver来完成,这是真正干跨进程通信活的地方,那么意...

搭建Android 7.0的源码环境

一. 引言 Google已发布Android 7.0源码,想要快人一步,先下载源码一睹为快。“show me the code, change the world”,接下来说一说如何搭建Android 7.0的源码环境。 翻墙工具:要时刻能查看Google官方最新的源码资料,在我国天朝,必须要有一个得力地翻墙工具。 虽然各种方法总有人能找到一些免费的翻墙工具,经常会不稳定之类的问题,又...

Android进程调度之adj算法

一、概述 提到进程调度,可能大家首先想到的是Linux cpu调度算法,进程优先级之类概念,本文并不打算介绍这些内容,而是介绍Android framework层中承载activity/service/contentprovider/broadcastrecevier的进程是如何根据组件运行状态而动态调节进程自身的状态。进程有两个比较重要的状态值,即adj(定义在ProcessList.j...

理解ContentProvider原理

基于Android 6.0源码剖析,本文涉及的相关源码: frameworks/base/core/java/android/app/ActivityThread.java frameworks/base/core/java/android/app/ContextImpl.java frameworks/base/core/java/android/app/IActivityMan...

Android存储系统之架构篇

基于Android 6.0的源码,剖析存储架构的设计 一、概述 本文讲述Android存储系统的架构与设计,涉及到最为核心的便是MountService和Vold这两个模块以及之间的交互。上一篇文章Android存储系统之源码篇从源码角度介绍相关模块的创建与启动过程,那么本文主要从全局角度把握和剖析Android的存储系统。 MountService:Android Binde...

Android存储系统之源码篇

基于Android 6.0源码, 来分析存储相关架构,涉及源码: /framework/base/services/java/com/android/server/SystemServer.java /framework/base/services/core/java/com/android/server/MountService.java /framework/base/serv...

Android重启流程(一)

framework/base/services/core/java/com/android/server/power/PowerManagerServer.java framework/base/services/core/java/com/android/server/power/ShutdownThread.java 一、概述 重启动作从按键触发中断,linux kernel层给...

理解Android ANR的触发情景

一、概述 ANR(Application Not responding),是指应用程序未响应,Android系统对于一些事件需要在一定的时间范围内完成,如果超过预定时间能未能得到有效响应或者响应时间过长,都会造成ANR。一般地,这时往往会弹出一个提示框,告知用户当前xxx未响应,用户可选择继续等待或者Force Close。 那么哪些场景会造成ANR呢? Service Time...