熟悉Android源码目录结构

QuibblerQuibbler 2020-07-26 约 9 分钟 2972 次阅读

熟悉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源码目录

相关推荐

精选
ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager
Android

ViewPager和PagerAdapter、FragmentPagerAdapter、FragmentStatePager

ViewPager1、ViewPagerandroidx.viewpager.widget.ViewPager,Android中使用非常广泛的控件,可以说是APP必备:首次打开引导页、页面Banner广告等。常用方法:setAdapter() 设置适配器setOffscreenPageLimit() 设置缓存的页面个数,默认是 1setCurrentItem() 跳转到特定的页面setOnPage

1.1k
获取Android内置WebView内核版本
Android

获取Android内置WebView内核版本

获取Android内置WebView内核版本竟然能遇到这样奇葩的事情,网页用的技术过于新颖,以至于只支持高版本Chromium内核的,低版本安卓系统中内置的内核版本较低,无法加载前端页面。1、设置查看在系统设置里 > 应用 > 应用管理 > 显示系统应用,查看WebView组件:2、页面查看通过WebView发起的网络请求,都会带上浏览器的UA,通常页面都可以通过UA判断浏览器的内核版本。这里有两

1.1w
Android 14适配总结
Android

Android 14适配总结

Android 14适配总结毕业工作至今已经适配了三个Android大版本,从Android 11到Android 12、再到Android 13。2023年,Google即将推出的Android 14,上半年已经开始第一批适配。现在,第四个Android版本已经适配完,总结记录一下。1、Android 14计划Google一般会在2月份对外发布预告,同时放出开发者预览版。“拉通”各大平台、厂商以

1.1w