Android源代码结构分析

来源:互联网 发布:龙江网络客服中心电话 编辑:程序博客网 时间:2024/05/21 11:39
Google提供的Android包含了:Android源代码,工具链,基础C库,仿真环境,开发环境等,完整的一套。

第一级别的目录和文件如下所示:


android的移植按如下流程:

(1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来。
(2)正确挂载文件系统,确保内核启动参数和 android 源代码 system/core/rootdir 目录下的 init.rc 中的文件系统挂载正确。
(3)调试控制台,让内核启动参数中的 console 参数以及 android 源代码 system/core/init/init.c 中的console_name 设置和硬件保持一致
(4)打开 android 相关的驱动(logger,binder 等),串口输入 logcat 看 logger 驱动起来,没有的话调试logger 驱动。


解决底层问题方法:解除Android系统的耦合l
1 将Dalvik于bionic以及硬件驱动剥离开
2 修改Dalvik以支持标准glibc和GNU/Linux
3 把Dalvik当作普通应用程序
4 Dalvik可被单独优化和改进


build目录



prebuilt 目录


x86和ARM架构下工具链/预编译的一些资源 


bionic 目录

基础C库源代码 


frameworks 目录

核心框架--java及C++语言


system 目录


底层文件系统/库/应用及组件--C语言


dalvik 目录


提供Android JAVA应用程序运行的基础--JAVA虚拟机


external 目录


android使用的一些额外开源库
在external中,每个目录表示Android目标系统中的一个模块,可能有一个或者若干个库构成。其中:
  opencore为PV(PacketVideo),它是Android多媒体框架的核心。
  webkit是Android网络浏览器的核心。
  sqlite是Android数据库系统的核心。
  openssl是Secure Socket Layer,一个网络协议层,用于为数据通讯提供安全支持。


packages 目录


各种应用程序实例
packages中包含两个目录,其中apps中是Android中的各种应用程序,providers是一些内容提供者(是内部自带的数据库源程序)。
packages中两个目录的内容大都是使用JAVA编写的程序,各个文件夹的层次结构是类似的。
作为基于SDK的开发者一般看的都是packages/apps目录下的程序实例,其中setting是我的最爱。


development 目录


开发者需要的一些例程及工具
在emulator目录中qemud是使用QEMU仿真时目标机器运行的后台程序,skins是仿真时手机的界面。
samples中包含了很多Android简单工程,这些工程为开发者学习开发Android程序提供了很大便利,可以作为模板使用。


vendor 目录


厂家定制内容


hardware 目录


一些与硬件相关的库,部分厂家开源的硬解适配层HAL代码


bootable 目录


引导加载器


out 目录


Android编译完成后,将在根目录中生成一个out文件夹,所有生成的内容均放置在这个文件夹中


SDK和NDK目录没有列出。

作为基于SDK的开发者一般看的都是packages/apps目录下的程序实例
而packages/providers是内部自带的数据库源程序。

development/是一些开发的例子