Android开发系列之系统源码目录
相信大家对于Google给出的那副经典Android架构图非常的熟悉,从下往上依次是Linux内核层(主要是负责硬件管理调度),HAL层(主要是硬件抽象层),libs层+Runtime,Framework层,App层。今天在这里我想对于各个层级的目录结构做一个细分整理,本次的目录结构是基于Android7.0系统,如果有什么不对的地方欢迎拍砖。
当我们进到Android源码目录之后,从左往右依次有bionic文件夹,该文件夹里面放置主要是Google为了取代Glibc而开发出来的C运行库,官方的解释是能够带来更好的性能提升,对于这个文件夹里面的内容笔者不想过多说明,因为我也不太清楚各文件是对应什么功能。
bootable文件夹,相信大家从名字应该就能一窥功能,主要是加载器了。当Android系统启动的时候,就是通过该文件夹提供的功能装载整个系统。点击进入包括三个子文件夹:bootloader、fbd、recovery,bootloader文件夹应该就是装载的主要执行者,其他两个文件夹呢?分别对应不同启动模式下的装载方式,recovery就是对应复原模式,fbd的功能笔者也不太清楚,如果有知道的朋友可以留言指教。
build文件夹对应的是Android系统编译构建,在该文件夹里面有各模块对应的mk文件,相当于编译过程的执行脚本。然后还有个envsetup.sh脚本,通过执行该脚本可以实现Android模块编译。
cts文件夹主要为了兼容Google的CTS测试而创建的了。
device文件夹用于放置不同厂商的硬件驱动了,点开可以发现google呀、htc呀、华为呀子文件夹。
external文件夹用于放置第三方扩展的文件,点开可以发现里面的文件数量挺多的,对此笔者的研究不多,所以略过。
frameworks文件夹是我们进行修改定制的主要对象了,在该文件夹里面我们可以找到Activity、Service、Handler、WindowManager、Message、Thread等java源码,对于我们了解Android原生的一些控件、组件很有帮助。
hardware文件夹对应的就是HAL层,主要提供硬件抽象层的功能。
kernel文件夹笔者理解的就是Linux内核层了,虽然在我们下载源码的时候,内核需要我们单独去下载。
libcore文件夹,笔者理解的是主要提供链接器、编译器、词语法分析等功能的地方。
ndk、sdk文件夹就不用过多解释了,相信大家都懂的。
packages文件夹用于我们放置一些系统原生集成的App源码,点击进入我们可以发现里面有个Apps文件夹,然后就分目录放置不同的App,通过修过mk文件链接编译就行。
system文件夹具体功能笔者不太清楚,如果说是硬件驱动吧,不是还有device吗?如果说是system运行时环境吧,不是还有libcore吗?
当我们编译Android系统之后,应该会多创建一个out文件夹,里面存放了编译之后的.img文件,如果我们需要烧录系统的时候,就可以用它们重刷系统。
上面的一些整理,只是笔者自己对着系统源码目录以及自己的一些分析理解而得,如果有什么不对的地方,欢迎交流。
Android开发系列之系统源码目录的更多相关文章
- Android系统架构与系统源码目录
前言 技术博客终于可以恢复正常的更新速度了,原因是我编写的进阶书籍的初稿已经完成,窃以为它将会是Android应用书籍中最有深度的一本,可以说是<Android开发艺术探索>的姊妹篇.在这 ...
- Android系统源码目录
Android系统源码目录 我们要先了解Android系统源码目录,为后期源码学习打下基础.关于源码的阅读,你可以访问http://androidxref.com/来阅读系统源码.当然,最好是将源码下 ...
- Android 7.1.1系统源码下载、编译、刷机-Nexus 6实战
想成为一位合格的Android程序员或者一位Android高级工程师是十分有必要知道Android的框架层的工作原理,要知道其工作原理那么就需要阅读Android的源代码. 想要阅读Android的源 ...
- 基于Android开发的天气预报app(源码下载)
原文:基于Android开发的天气预报app(源码下载) 基于AndroidStudio环境开发的天气app -系统总体介绍:本天气app使用AndroidStudio这个IDE工具在Windows1 ...
- 迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法
迅为4412开发板QtE系统源码-屏幕横竖屏切换修改方法 详情了解:http://topeetboard.com 更多了解:https://arm-board.taobao.com/ 用户在开发板上运 ...
- Linux基础系列—Linux内核源码目录结构
/** ****************************************************************************** * @author 暴走的小 ...
- ubuntu配置android开发环境和编译源码遇到的一些问题
---------------------------------------------环境变量设置--------------------------------------------- 1.设 ...
- java开发JSP+Servlet+bootstrap开发电影院购票系统 源码
基于JSP+Servlet+bootstrap开发电影院购票系统:开发环境: Windows操作系统开发工具: MyEclipse+Jdk+Tomcat+Mysql数据库 程序要求:电影院订票系统 用 ...
- ssm开发垃圾分类查询系统 源码 mysql
需求 基于SSM实现一个垃圾分类查询管理系统, 用户可以根据自定义查询分类信息, 管理员可以对分类信息, 垃圾详情信息进行增删改查的管理 运行环境 jdk1.8,tomcat8.5,mysql5.6, ...
随机推荐
- 推荐一个国内的免费公共静态cdn
https://cdn.baomitu.com/ 更新速度比bootcdn要快,收录的库也很齐全.
- Southern African 2001 框架折叠 (拓扑序列的应用)
本文链接:http://www.cnblogs.com/Ash-ly/p/5398377.html 题目:考虑五个图片堆叠在一起,比如下面的9 * 8 的矩阵表示的是这些图片的边缘框. 现在上面的图片 ...
- 洛谷——P1258 小车问题
P1258 小车问题 题目描述 甲.乙两人同时从A地出发要尽快同时赶到B地.出发时A地有一辆小车,可是这辆小车除了驾驶员外只能带一人.已知甲.乙两人的步行速度一样,且小于车的速度.问:怎样利用小车才能 ...
- HashMap和Hashtable 线程安全性
HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题.HashMap的工作原理.ArrayList与Vect ...
- HDOJ 1300 Pearls 斜率优化dp
原题连接:http://acm.hdu.edu.cn/showproblem.php?pid=1300 题意: 题目太长了..自己看吧 题解: 看懂题目,就会发现这是个傻逼dp题,斜率优化一下就好 代 ...
- 【转】MySQL5.5的my.cnf 参数详解
这篇文章很多地方只是翻译了my.cnf原始配置文件的说明 以下原文中有些参数事实上不适用于MySQL5.5,不知道原作者是否有经过实际测试,比如log-slow-queries应该写成slow-que ...
- hive参数——深入浅出学Hive
第一部分:Hive 参数 hive.exec.max.created.files •说明:所有hive运行的map与reduce任务可以产生的文件的和 •默认值:100000 hive.exec.d ...
- tensorflow TensorArray 代码例子
import tensorflow as tf import numpy as np B=3 D=4 T=5 tf.reset_default_graph() xs=tf.placeholder(sh ...
- BeagleBone Black板第四课:简单LED控制实验
BBB板第四课:简单LED控制实验 学习BBB板的终于目的是想像单片机一样做控制,但控制思路全然不一样(Linux下控制硬件设备实质就是对相关设备虚拟文件的读写).研究了几天头都大了还是没有进展,网上 ...
- log4j输出日志到flume
现需要通过log4j将日志输出到flume,通过flume将日志写到文件或hdfs中 配置flume-config文件 将日志下沉至文件 a1.sources = r1 a1.sinks = k1 a ...