熟悉Android源码目录结构

Quibbler 2020-7-26 1867

熟悉Android源码目录结构


        开发者需要了解系统运行的机制,了解一定深度的原理,而不是仅停留在会调用系统提供的API层面。阅读源码需要对源码目录结构有所了解,不然的话可能都找不到方向,因为整个Android项目很庞大复杂。源码按照一定的架构组织起来,详见Android 开源项目简介



1、源码根目录

       Android源码下载下来,根目录下很多一级子目录,每个目录都对应一层架构或者一块框架。

        ①art:ART运行环境

        ②bionic:Android的C library基础库,NDK的API

        ③bottable:启动引导程序相关代码

        ④build:存放系统编译规则及generic等基础开发包配置(脚本和工具)

        ⑤cts:Compatibility Test Suite的缩写,Android兼容性标准测试套件

        ⑥dalvik:dalvik java虚拟机

        ⑦developers:应用程序开发demo

        ⑧devices:设备相关的代码和编译脚本

        ⑨docs:AOSP文档

        ⑩external:其它平台移植项目

        frameworks:应用程序核心框架,Android系统的核心(Java和C++)

        ⑫hardware:各手机厂商的硬件适配层HAL代码,硬件驱动相关。

        ⑬kernel:Android Linux系统内核

        ⑭libcore:核心库

        ⑮libnativehelper:动态库、实现JNI的基础库

        packages:Android原生应用程序包,ROM应用开发者需要了解

        ⑰pdk:Plug Development Kit的缩写,本地开发套件

        ⑱plateform_testing:平台测试相关

        ⑲prebuilts:预编译资源

        ⑳sdk:SDK和模拟器

        ㉑system:系统底层(C语言)

        ㉒test:测试相关

        ㉓toolchain:工具链文件

        ㉔tools:工具文件

        ㉕vendor:厂商定制代码



2、frameworks

        Android应用开发者最要关注的就是Framework层的源码,在frameworks目录下。


2.1、frameworks目录结构

        frameworks目录中还有很多目录,不过只需要关注base中的源码,其它都不是重点。


2.2、../base

        这里面才是frameworks层最基础核心的代码,主要还是框架层面,涉及到图形图像、NFC、WiFi、蓝牙等硬件、系统服务等。

        ①sax:sax实现

        ②obex:蓝牙传输库

        ③services:各种系统服务

        ④telephony:电话通讯相关的源码,联系人、短信相关的开发需要关注

        ⑤libs:存储、USB相关

        ⑥core:核心库

        ⑦graphics:图形相关

        ⑧opengl:2D-3D加速库

        ⑨docs:文档

        ⑩packages:系统应用。与根目录下的/packages区别,也有系统应用比如Settings

        ⑪wifi:WiFi相关源码

        ⑫native:JNI

        ⑬tools:工具相关

        ⑭nfc:NFC相关

        ⑮data:字体、声音等数据文件


2.3、../base/core

        看到这个目录会眼前一亮,这些目录下就是Android开发者日常开发所熟悉的代码。

        /frameworks/base/core/java

                                                     |--android

                                                     |--com

                                                         |--android      

                                                             |--internal  

                                                             |--server

                                                         |--google

                                                             |--android

        有两个子目录需要关注:

        /frameworks/base/core/java/android

        /frameworks/base/core/java/com/android/internal


2.4、../base/services

        该目录下的源码设计到各种服务程序,如:电源管理、传感器等。重点关注/frameworks/base/services/core/java/com/android/server目录下的系统服务源码。

        


3、packages

        还有系统服务/应用的源码在packages目录下。


3.1、packages目录

        主要是系统apps(系统应用)、services(系统服务)、provider(系统Provider内容提供器)、inputmethods(输入法相关)等。


3.2、../apps

        该目录下“预装”系统应用和基础服务:Launcher3(桌面)、Music(音乐)、QuickSearchBox(搜索)、ExactCalculator、Calendar(日历)、Car(驾驶模式)等。各个手机厂商定制的ROM主要对这些应用进行二次开发,丰富功能还有重新设计UI。

        它们和普通开发的APP没有多大区别,甚至可以单独拷贝出来当成独立的APP编译apk运行。

        


推荐资料:

        最全的Android源码目录结构详解

        源码目录结构及源码阅读工具简介

        Android系统源代码目录与系统目录

        详解Android源码目录


不忘初心的阿甘
最新回复 (0)
    • 安卓笔记本
      2
        登录 注册 QQ
返回
仅供学习交流,切勿用于商业用途。如有错误欢迎指出:fluent0418@gmail.com