Android系统的整个源码目录结构分析

Android系统的整个源码目录结构分析

本文介绍的Android系统源码并不是像某一个类(比如:Handler)的源码,而是支持整个Android系统能够运行的源码。

这里只对Android系统源码目录进行分析,具体的源码一般都是根据需求来看。

一.Android源码的基本知识

Android源码包含比较多的文件,比如Android系统的所有页面,里面的所有app程序,还包含了sdk,各种镜像img等等

像我接触过的几个完整Android源码基本在200G左右!而且这还是比较初始的设计板,里面几个基本功能的app程序。

Android源码编译得到镜像文件img并不是很大,一般1-2G,把这几个镜像烧录到我们的Android设备上,Android设备就可以运行起来,就像我们正常使用的手机那样。

Android系统架构分为四层,从上到下依次是应用层、应用框架层、系统运行库层和Linux内核层。

大部分Android程序员开发App都是只接触应用层。即使那些很复杂的App,或者需要很多C语言类库支持的App的开发,都只是应用层的开发。

应用框架层是能管理这些App的程序,或者镶嵌在设备本身的那些程序的管理开发。

比如手机Home键,Back键的逻辑都可以在框架层做处理,通知窗口,电话窗口。。。

还有Android系统本身的音乐播放,系统设置这些程序都是在框架层的源码中可以修改的。

1.Android系统源码目录

我们要先了解Android系统源码目录,为后期源码学习打下基础。
关于源码的阅读,你可以访问:
http://androidxref.com/
来阅读系统源码。

当然,最好是将源码下载下来。下载源码可以使用清华大学开源软件镜像站提供的Android 镜像:
https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
如果觉得麻烦也可以查找国内的网盘进行下载,推荐使用该百度网盘地址下载:http://pan.baidu.com/s/1ngsZs
它提供了多个Android版本的的源码下载。

整体结构
各个版本的源码目录基本是类似,如果是编译后的源码目录会多增加一个out文件夹,用来存储编译产生的文件。
Android7.0的根目录结构说明如下表所示。

Android源码根目录描述
abi应用程序二进制接口
art全新的ART运行环境
bionic系统C库
bootable启动引导相关代码
build存放系统编译规则及generic等基础开发包配置
ctsAndroid兼容性测试套件标准
dalvik dalvik虚拟机
developers开发者目录
development应用程序开发相关
device设备相关配置
docs参考文档目录
external开源模组相关文件
frameworks应用程序框架,Android系统核心部分,由Java和C++编写
hardware主要是硬件抽象层的代码
libcore核心库相关文件
libnativehelper动态库,实现JNI库的基础
ndkNDK相关代码,帮助开发人员在应用程序中嵌入C/C++代码
out编译完成后代码输出在此目录
packages应用程序包
pdkPlug Development Kit 的缩写,本地开发套件
platform_testing平台测试
prebuiltsx86和arm架构下预编译的一些资源
sdksdk和模拟器
system底层文件系统库、应用和组件
toolchain工具链文件
tools工具文件
Makefile全局Makefile文件,用来定义编译规则

上面这么多文件夹,有些是一直不需要去理会的,比如说我接触较多的就文件夹:device,build,out,packages。

device下都是一些配置文件,比如Wifi Adb端口如果需要写死,可以添加属性并设置里面的参数

build下是一些编译规则,比如可以设置某些程序是否安装。

out下是编译完成后生产的各种文件,比如各种系统的apk文件,这些都是即将安装到Android设备上面的

package下包含很多Android项目的源码,手机上所有可以点击的图标其实都是一个Android项目,比如录音,电话,系统设置,或者三方的一些程序(阅读器,应用商城)等等

Android系统源码也不是没有bug的,比如我之前的一个Android板子上的Music就有几个bug,需要进去package/apps/Music里面修改源码

把源码修改后重新编译,再把编译生成的镜像文件烧录到Android设备上就可以了。

接下来分析packages中的内容,也就是应用层部分。

2.应用层packages部分

应用层位于整个Android系统的最上层,开发者开发的应用程序以及系统内置的应用程序都是在应用层。
源码根目录中的packages目录对应着系统应用层。它的目录结构:

packages目录描述
apps核心应用程序
experimental第三方应用程序
inputmethods输入法目录
providers内容提供者目录
screensavers屏幕保护
services通信服务
wallpapers墙纸

可以看到package中还包含内容提供者,像我们在应用上能都访问手机系统通讯录,系统日历,

都是package中写好的内容提供者,所以我们才能调用那些uri对系统数据进行增删改查操作。

3.其他

我们如果要修改源码,就要先知道修改的文件在源码目录的哪个位置。这个不懂可以上网多查查。

然后修改源码,也不是一个简单的活。如果只是一两行代码,随便打开一个文本编辑器,编辑保持即可。

如果是编辑里面一个大项目,并且要看里面的相关逻辑,可以使用Source Insight这个专门查看编辑源码的工具。

如果编辑的是源码里面的小Demo,我建议可以把代码复制出来,弄到Eclipse或Studio中调试,
因为源码的调试真的很麻烦,改几句代码编译、烧录半小时就过去了。

但是源码的代码也不能直接Import 到Eclipse或Studio中,源码有的是java代码和res代码
所以我的做法是创建一个项目然后报源码中的java代码和res代码复制进去,记得AndroidManifest复制进去。
在Studio中记得改app中的build.gradle的包名和版本。
运行程序后,不断调试,修改源码。
记得把修改的位置用另一个文档记录下来,然后在源码目录中修改代码。

这里只是简单分享了一下Android系统源码的知识。后面还会深入探究的。

共勉:你所有的努力,只为遇见更好的自己。

  • 30
    点赞
  • 167
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
Android Binder是Android操作系统中的一个IPC(进程间通信)机制,用于实现进程之间的通信和数据传输。Binder的源码主要位于frameworks/native目录下。 在Binder的源码中,最核心的部分是Binder驱动和Binder服务。Binder驱动是位于内核空间的组件,负责处理进程间的数据传输和交互。Binder服务是位于用户空间的组件,负责提供接口和功能来进行进程间通信。 在Binder的源码中,主要涉及到以下几个重要的文件和目录: 1. drivers目录:包含了Binder驱动的代码,其中最重要的文件是binder.c,它实现了Binder驱动的核心逻辑。 2. include目录:包含了Binder的头文件,其中最重要的文件是binder.h,它定义了Binder的接口和数据结构。 3. libbinder目录:包含了Binder服务的代码,其中最重要的文件是IBinder.cpp和BpBinder.cpp,它们分别实现了Binder服务的接口和代理类。 4. services目录:包含了一些系统级别的Binder服务,例如Package Manager Service和Activity Manager Service。 如果你想深入了解Android Binder的源码,可以参考以下资源: 1. Android 源码:你可以从Android官网或者GitHub上获取Android源码,并在frameworks/native目录下查看Binder相关的代码。 2. Android系统架构指南:Android官网提供了关于Android系统架构的详细文档,其中有关IPC和Binder的章节对于理解Binder的实现原理和源码结构很有帮助。 3. 《深入理解Android:卷2》一书中有关于Binder的详细介绍和源码解析,可以作为参考资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峥嵘life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值