Android之内核学习笔记

0、Android系统启动

《Android系统启动流程 -- bootloader》

《The Android boot process from power on》

《Android 启动过程介绍》

《Android培训班(86)内核运行之前的引导程序》 这是一系列文章

《Android 分区挂载》


1、init

深入理解android 卷1》 第3章 深入理解init

《Android框架揭秘》第3章 init进程

《Android的init过程详解(一)》

《Android的init过程(二):初始化语言(init.rc)解析》

《Android系统初始化开始位置及流程分析》

《Android的初始化语言脚本init.rc解析》

《Android Init进程源码分析》 init.rc解析过程描述详细,图文并茂。

《Android Init进程分析》

《Android情景分析之详解init进程(以启动zygote为例)》


2、binder

《Android框架揭秘》第六章 -- 第十章 以生动的形式讲述了binder,其中也大量的插图,但是不够详细。值得参考。

Android系统源代码情景分析》第五章 描叙详细,但是不够生动。值得参考。第六章的6.5小结描述BINDER_TYPE_FD。

《Android_IPC机制与Binder框架》 高焕堂著,形象的描述了从Java层到C++层的binder,偏重应用的实现。

《Android Binder通信》

《ServiceManager 进程启动源码分析》

《图解Android - Binder 和 Service》 描述别树一帜,形象生动,强烈推荐。

《Android Binder线程》 重点描述了binder线程的创建

《本地Binder框架通信原理》

《Binder 机制详解—Binder 系统架构》

《浅析android中getStrongProxyForHandle函数动态申请索引对应的内存空间》

红茶一杯话Binder(ServiceManager篇)


3、Ashmem(Anonymous Shared Memory) 匿名内存共享

Android系统源代码情景分析》第六章 描叙详细。

《Android技术内幕》第二章 2.3.2小结 描述的比较简单,但是对于《Android系统源代码情景分析》第六章的描述可以起到补充的作用。

《3.2.1 匿名共享内存(1)》 《Android安全机制解析与应用实践》第3章

《3.2.1 匿名共享内存(2)》

《3.2.1 匿名共享内存(3)》

《Android Ashmem相关介绍》


4、activity

Android系统源代码情景分析》第七章 activity启动过程描叙详细。

Android的设计与实现》 package manager篇(第8~9章)主要讲解了package manager的机制与实现,以及apk的安装方法与过程;activity manager篇(第10~12章)深入阐述了activitymanagerservice的运行机制、应用程序和进程的启动流程,以及进程管理机制。

《Android内核剖析》第十章 AMS内部原理

《解开Android应用程序组件Activity的”singleTask”之谜》

《Activity启动分析》

《android Application Component研究之Activity(一)》比较详细的描述了“task管理”,即startActivityUncheckedLocked函数(主要是处理activity的launchMode和intent的flag)

《android Application Component研究之Activity(二)》

《android:clearTaskOnLaunch的用法》

《Android 笔记之 clearTaskOnLaunch&finishOnTaskLaunch》

《FLAG_ACTIVITY_RESET_TASK_IF_NEEDED》

《android:clearTaskOnLaunch》

《Android开发之旅:活动与任务》

《Activity启动创建 (AcitivtyManageService,ActivityThread,Activity)》

《深入理解Activity启动流程》


5、service

Android系统源代码情景分析》第八章 service启动过程描叙详细。

《android Application Component研究之Service》 Forground属性的描述,有unbind过程的分析

《Android服务之Service(其一)》 有生命周期图,有例子。

《Service》google官方描述。

Android 中的 Service 全面总结

《android如何保证service不被杀死》


6、BroadcastReceiver

Android系统源代码情景分析》第九章 broadcast receiver启动过程描叙详细

《android Application Component研究之BroadcastReceiver》有broadcast发送和分发过程的描述,有Protected Broadcast的讲解,有broadcast超时的过程分析。


7、ContentProvider

《android Application Component研究之ContentProvider》

《存储文件的ContentProvider》


8、Mashup设计思想

《Android开发精要》3.1 基于Mashup的应用设计


9、属性系统(property system)

android property system 

《属性系统代码分析》

Android平台上使用属性系统(property system)

《Android Property System | Android属性系统》

深入理解android 卷1》 第3章 3.2.4 属性系统

《Android框架揭秘》第3章 init进程 3.6 属性服务

《Android 系统属性SystemProperty分析》

《Android情景分析之属性服务》

《SEAndroid安全机制对Android属性访问的保护分析》

《Android 的系统属性(SystemProperties)分析》

《Android 属性系统设计分析》 有__libc_prenit的分析


10、创建设备节点文件uevent

《Android框架揭秘》第3章 init进程 3.4创建设备节点文件

《基于android2.3.5系统:开天辟地Android启动机制[二]》

《基于android2.3.5系统:开天辟地Android启动机制[三]》

《android之init进程-uevent》

《为Android应用程序读取/dev下设备而提权》

《android ueventd 本地native部分源码分析》

《Android设备节点的动态管理》

《android提权漏洞CVE-2010-EASY修复》

《Android uevent进程源码分析》


11、zygote和system_server

《深入理解android 卷1》 第4章 深入理解zygote

《Android框架揭秘》第5章 Zygote

Android系统源代码情景分析 》第11章 Zygote和System进程的启动过程

《Android内核剖析》第15章 15.6 Framework资源

《Zygote进程启动过程源代码分析》

《SystemServer进程启动过程源码分析》

《图解Android - Zygote, System Server 启动分析》


12、进程管理和OOM

《深入理解Android 卷2》 第6章 6.6 AMS中的进程管理 从部分代码角度讲解,不是很详细;

《Android开发精要》第5章 组件生命周期解析 5.2 应用进程托管 -- 从上层角度描述为何要进程托管及托管的算法

《Android内核剖析》第十章 AMS内部原理 10.2 内存管理

《Android 操作系统的内存回收机制》

《android 2.3 应用管理机制分析》

《Android内存管理机制详解》

《Android内存阀值修改--内存回收机制配置》

《Linux 2.6 中的页面回收与反向映射》

《Android内存管理原理》

《Android Low memory killer》

《Android 系统内存分析》

《Android开发:性能最佳实践-管理应用内存》

《Android代码内存优化建议-OnTrimMemory优化》


13、Android编译系统
《Android内核剖析》 第18章 Android编译系统
《Android核心原理与系统应用高效开发》 第2章 编译结构和各种构建

《Android编译系统参考手册》


14、WMS

《Android 4.4(KitKat)窗口管理子系统 - 体系框架》


15、电池

《android 电池(一):锂电池基本原理篇》

《android 电池(二):android关机充电流程、充电画面显示》

《android 电池(三):android电池系统》

《android电池(四):电池 电量计(MAX17040)驱动分析篇》

《android电池(五):电池 充电IC(PM2301)驱动分析篇》

《android 2.3 电量管理》


16、input系统

《android 物理按键》

《InputMonitor笔记》

《Android之input系统流程》

《Android之Input子系统事件分发流程》

《Android Input Framework(一)》

《Android4.0 input事件输入流程详解(中间层到应用层)》

《Android 4.2 Input 流程分析》

《安卓4.1: input系统从frameworks到kernel 》

《Android输入输出机制之来龙去脉之前生后世》

《android发现之旅之输入事件如何在应用端传递》

《Android触摸屏事件派发机制详解与源码分析一(View篇)》


17、内存泄露

《Android中native进程内存泄露的调试技巧》


18、intent

《Android开发之旅: Intents和Intent Filters(理论部分)》


20、Dalvik

《 Dalvik虚拟机进程和线程的创建过程分析》

《Android开发工具ADB教程之三:Dalvik虚拟机之jdwp线程》

《Android培训班(54)虚拟机的历史》 这是一个系列文章

《Android 信号处理面面观 之 trace 文件含义》

《Java中System.loadLibrary() 的执行过程》


21、View

《android文本布局引擎》

《Android Text Layout 框架》

《ViewGroup源码分析》

《Android TextView显示中文不对齐问题》

《Android 属性动画 源码解析 深入了解其内部实现》

《Android应用程序UI硬件加速渲染的动画执行过程分析》


22、AMS

《ActivityManagerService分析一:AMS的启动》


23、资源

《framework资源文件》

《如何在Android中写和使用一个自定义的java库》

《如何为Android系统添加一个新的资源包》

《浅谈Android的资源编译过程》

《在android中增加公用资源包(类似framework-res.apk)》

《Android APK应用安装原理(1)-解析AndroidManifest原理-PackageParser.parserPackage》

《Android 资源类型 整理》

《res与res-auto的区别》

《Android中自定义属性的两种方法》

《Android应用资源---样式资源类型(Style)》

《Android应用资源---其他资源类型(More Types)(一)》

《Android应用资源---其他资源类型(More Types)(二)》

《Android应用资源---其他资源类型(More Types)(三)》

《Android xml资源文件中@、@android:type、@*、?、@+含义和区别》

《android三个特殊的资源目录 /res/xml /res/raw 和 /assets》

《Android字符串进阶之三:字体属性及测量(FontMetrics)》

《Styling Views on Android (Without Going Crazy)》

《Android学习系列(39)--Android主题和样式之系统篇(上)》

《Android学习系列(40)--Android主题和样式之系统篇(下)》

《Android系统自带样式(android:theme)》

《浅谈Android的资源编译过程》

《Andriod中Style/Theme原理以及Activity界面文件选取过程浅析》


24、android:persistent属性

《android persistent属性研究》

《Android: HowTo设置app不被系统kill掉》

《android里面的进程回收机制》

《说说Android应用的persistent属性》


25、Handler、Looper和MessageQueue

《Handler Looper MessageQueue 详解》


26、debuggerd

《Android debuggerd 源码分析》


27、log

《解读Android LOG机制的实现》

《Android架构分析之LOG模块》

《Android系统开发中LOG的输出与使用》

《打开Android C文件中的LOG》

《Android日志系统驱动程序Logger源代码分析》

《Android应用程序框架层和系统运行库层日志系统源代码分析》

《Android日志系统Logcat源代码简要分析》

《android log 和logcat 分析(一)》

《android log你不知道的小技巧》

《android中BuildConfig.DEBUG的使用》

《android 代码优化:关闭输出日志》


28、DropBox

《介绍 Android DropBoxManager Service》


29、AppOpsManager

《Android Kitkat的AppOps》

《Android 4.3 隐藏功能 App Ops 分析》

《AppOpsManager 一次简单应用》


30、ADB

《android adb adbd analyse》

《android2.3-adb源码分析》

《Android系统root破解原理分析》


31、BackupManagerService

《第十五篇 Android 的Backup服务管理机制与架构分析》

《BackupManager的使用与解析》

《关于BackupManagerService》


32、UserManager 多用户机制

《Android4.2多用户模式的结构与实现》


33、DisplayManager 多屏幕机制

《DisplayContent、StackBox、TaskStack笔记》

《android 扩展屏幕 多屏显示》

《第十七篇 --ANDROID DisplayManager 服务解析一》

《android wifi display》

《Android WifiDisplay分析一:相关Service的启动》


34、Vold

《Android vold 工作流程分析》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/292345.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

能源项目xml文件 -- app-context.xml

<?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xmlns:context"http://www.springframework.org/schema/c…

python列表操作程序_Python列表操作,比较常见的10个问题

列表是比较常用的数据类型之一&#xff0c;本文整理了 StackOverflow 上关于列表操作被访问较多的10个问答&#xff0c;如果你在开发过程中遇到这些问题&#xff0c;不妨先思考一下如何解决。1、迭代列表&#xff0c;如何访问列表下标索引普通版&#xff1a;items [8, 23, 45]…

ViewData 和 ViewBag 到底有什么区别?

咨询区 user469652请问 ASP.NET MVC 中的 ViewBag 和 ViewData 到底哪一个好&#xff0c;在实际项目开发中应该选择哪一个&#xff1f;回答区 Naresh RavlaniViewData它需要对复杂类型进行类型转换并且还要检查null值来防止错误。ViewBag它不需要对 复杂类型 进行类型转换。考虑…

更新整理本人所有博文中提供的代码与工具(C++,2013.11)

为了更方便地管理博文中涉及的各种代码与工具资源&#xff0c;现在把这些资源迁移到 Google Code 中&#xff0c;有兴趣者可前往下载。C1、《通用高性能 Windows Socket 组件 HP-Socket v3.0.2 正式发布》 《基于 IOCP 的通用异步 Windows Socket TCP 高性能服务端组件的设计…

Android之用AccessibilityService实现红包插件

微信红包自打出世以来就极其受欢迎,抢红包插件可谓红极一时.今天,我们重新谈谈抢红包插件的哪些事儿.本质上,抢红包插件的原理不难理解,其过程就是在收到红包时,自动模拟点击.做过自动化UI测试的童鞋应该非常熟悉了.那么问题来了,我们怎么知道有没有红包,又怎么模拟点击操作呢?…

【软件周刊】D语言卷土重来,Vue.js 应获 1024 个赞,小薇可以一键启动了

2019独角兽企业重金招聘Python工程师标准>>> 一、 前端相关 1. Vue.js — Vue.js 这次的更新比较频繁&#xff0c;才刚刚更新完 2.0.4 版本不久&#xff0c;立马就更新出了 2.0.5 版本。这次发布的 2.0.4 版本主要的亮点是 SSR 性能改进了 20%&#xff0c;然后接着更…

LINUX内核完全注释

学习教材&#xff1a;LINUX内核完全注释&#xff0c;内核版本0.11&#xff0c;修正版V3.0 赵炯编著 参考教材&#xff1a;UNIX操作系统设计--M. J. Bach&#xff0c; programming the 80x86 --John H. Crawford MINIX操作系统的设计与实现--Andrew S.Tanenbaum --Tanenbaum 学…

Autofac实现拦截器和切面编程

Autofac.Annotation框架是我用.netcore写的一个注解式DI框架&#xff0c;基于Autofac参考 Spring注解方式所有容器的注册和装配,切面,拦截器等都是依赖标签来完成。开源地址&#xff1a;https://github.com/yuzd/Autofac.Annotation上期说了Autofac实现有条件的DI本期讲的是最新…

python好用的模块和包_Python模块和包详细讲解与实例分析

一丶模块我们经常说模块模块的,究竟什么是模块呢?一个模块就是包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀但其实import加载的模块分为四个通用类别:1.使用Python编写的代码(.py文件)2.已被编译为共享库或DLL的C或C扩展3.包好一组模块的包4.使用C编写并链接…

C语言之struct A *b和struct A c区别

struct A *b; 是指针 struct A c; 是定义了一个struct A对象,你得提供相应的结构体的具体定义 结构体A没有具体的定义,当struct A c时,实际是定义一个结构体变量,这是要分配存储空间的,空间大小依结构体中具体的变量而定,如果没有具体的结构体定义,编译器不知道结构体到底是什…

JS的类型转换

当string&#xff0c;number函数不被用作构造函数的可以当成转换函数 如 string(false),number(‘3’),boolean([]) Object(3) new number(3); 除了NULL和undefined以外任何值都具有toString()方法 JS 在执行程序的时候会自动检测表达式来进行变量转换。 显示转换变量&#xf…

linux 下执行.sh文件总是提示permission denied

今天执行.sh文件懂得时候提示 permission denied错误 解决办法: chmod 777 file.sh 或者 chmod+x file.sh 比如我们执行一个变量加1的时候,不能这样写 a = 1; a = $($a +1) echo $a 需要这样写: a=1 a=$(($a+1)) echo $a 还有写sh文件的时候代码之间不需要留下空格…

ahjesus解决win下U盘无法写入的问题

可能是由于不同品牌的U盘出厂时磁盘分区和格式化方式不同而引起的兼容性问题。解决方案如下 启动cmd。输入diskpart&#xff0c;启动DISKPART工具 在DISKPART窗口中输入以下命令&#xff1a; >list disk &#xff08;此命令是列出所有磁盘驱动器&#xff0c;请务必看清楚你的…

[探索 .NET 6]01 揭开 ConfigurationManager 的面纱

在这个系列中&#xff0c;我将探索一下 .NET 6 中的一些新特性。已经有很多关于 .NET 6 的内容&#xff0c;包括很多来自 .NET 和 ASP.NET 团队本身的文章。在这个系列中&#xff0c;我将探索一下这些特性背后的一些代码。在这第一篇文章中&#xff0c;来研究一下 Configuratio…

mysql锁表_MySQL中Alter table 你不知道的性能问题

前言&#xff1a;MySQL 的大表运维总是令人头疼的一件事&#xff0c;特别是大表表结构的修改尤为困难。首先&#xff0c;alter table 的process不可被kill &#xff0c; 一旦执行就不可回退。其次&#xff0c;大多数的alter table操作都会涉及 lock --- copy to new table --- …

打印文件前,千万记得把弹窗叉掉!!!

1 父母能有多迷信&#xff1f;&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼2 打印前千万记得把弹窗关掉&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼3 挺好的&#xff08;素材来源网络&#xff0c;侵删&#xff09;▼4 饭桌上&#xff0c;领导叫你去…

Java队列集合的性能测试

同时开10个线程存入和取出100万的数据&#xff0c;结论如下&#xff1a; DoubleBufferedQueue < ConcurrentLinkedQueue < ArrayBlockingQueue < LinkedBlockingQueue 执行结果如下&#xff1a; 100万 DoubleBufferedQueue入队时间&#xff1a;9510 出队时间&#xff…

linux之man命令用法入门

man命令的解释: man的全称是manual,手册的意思,所以man命令有帮助解释其它命令的作用 基本用法: man + 命令 比如: man pwd 就会出现下面信息 PWD(1) User Commands PWD(1) //注意括号中的数字 NAME //关于命令的名次和说明pwd - print name of current/work…