我的Android 进阶修炼(1): AOSP源码根目录结构

简介: 本文介绍了AOSP源码的根目录结构,提供了基于MTK9269 Android 9.0源码的目录说明,帮助读者了解AOSP源码的组织方式和各目录的功能。

一、篇头

  • 学习安卓系统源码,从何处入手,想了许久,先了解下目录结构吧。
  • 本文基于MTK9269 Android 9.0源码,和原生AOSP结构基本一致,部分地方有少许出入,但不影响大局。

二、Android源码根目录

  • 可通过清华AOSP镜像站,下载最新aosp-latest.tar源码包
  • 地址:mirrors.tuna.tsinghua.edu.cn/help/AOSP/

AOSP源码目录

三、安卓源码目录说明

  • 结合源码和相关说明文件,整理如下
szhou@bc03:~/works/mt9269/android$ tree -L 1
.
├── Android.bp -> build/soong/root.bp
├── art       #Android ART虚拟机相关实现(替代dalvik虚拟机):虚拟机、运行库、dex2oat等工具、模拟器等
├── bionic    #谷歌为android重新实现的C语言函数库
├── bootable  #bootloader的实现,各厂家会有自己的版本,例如MTK/MST所用名为Mboot bootloader.
├── bootstrap.bash -> build/soong/bootstrap.bash
├── build     #AOSP源码编译相关:系统make编译规则、blueprint、kati、soong,以及envsetup.sh等配置及工具
├── compatibility #Android 兼容性定义(CDD),在这个目录执行相关命令,可以产生CDD html/pdf文档,用于指导开发
├── cts        #Android兼容性测试套件
├── dalvik     #dalvik JAVA虚拟机
├── developers   #提供给Android开发者的一些样例,可以导入到AS中编译
├── development  #同developers类似,提供一些样例、工具
├── device       #和具体设备相关的配置、文件、及修改,各厂家会放入里面响应目录 device/vendor_name/product_name
├── external     #Android使用的一些开源的功能模块
├── frameworks   #Android核心框架
├── hardware  #部分厂家开源的硬解适配层HAL代码
├── kernel    #Linux kernel 源码
├── libcore         #java核心库 包括java api的源码 
├── libnativehelper #支持Android类库,但与android.*无关,与VM无关的本机函数,用于实现系统的方法类库,以C实现。
├── Makefile  #这个不是目录,include build/make/core/main.mk,核心编译规则
├── out       #编译AOSP时候产生的临时目录,临时文件和最后生成的ROM镜像都存放在里面
├── packages  #APP程序包,包括luancher、settings等
├── pdk       #PDK工具和测试代码的存放处,PDK套件用于帮助厂家适配新版本,完成HAL的开发
├── platform_testing # Android Platform Testing, 为andorid 平台开发人员提供的测试及指导
├── prebuilts #Android预编译的一些工具,如build-tools、qemu模拟器、gdb、gcc、sdk/ndk库等
├── sdk       #Android SDK
├── system    #Android底层文件系统库、应用和组件
├── test      #VTS 测试套件
├── toolchain #存放编译工具链
├── tools     #Android工具文件
└── vendor    #存放各厂家自己定制的文件、实现,如app、配置、新增api、库等

四、篇尾

在安卓上做了那么多年,也没好好看看AOSP目录架构,部分理解可能不到位,欢迎指正。先当文章凑个数吧,哈哈~

相关文章
|
8天前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
35 3
|
4月前
|
XML 搜索推荐 Android开发
Android改变进度条控件progressbar的样式(根据源码修改)
本文介绍了如何基于Android源码自定义ProgressBar样式。首先分析了系统源码中ProgressBar样式的定义,发现其依赖一张旋转图片实现动画效果。接着分两步指导开发者实现自定义:1) 模仿源码创建一个旋转动画XML文件(放置在drawable文件夹),修改图片为自定义样式;2) 在UI控件中通过`indeterminateDrawable`属性应用该动画。最终实现简单且个性化的ProgressBar效果,附带效果图展示。
271 2
|
7月前
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
712 83
|
5月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
593 1
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
1949 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
Java Android开发 芯片
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
本文介绍了如何将基于全志H713芯片的AOSP Android源码导入Android Studio以解决编译和编码问题,通过操作步骤的详细说明,展示了在Android Studio中利用代码提示和补全功能快速定位并修复编译错误的方法。
952 0
使用Android Studio导入Android源码:基于全志H713 AOSP,方便解决编译、编码问题
|
API 开发工具 Android开发
Android Studio:解决AOSP自编译framework.jar引用不到的问题
在Android Studio中解决AOSP自编译framework.jar引用问题的几种方法,包括使用相对路径、绝对路径和通过`${project.rootDir}`动态获取路径的方法,以避免硬编码路径带来的配置问题。
1234 0
Android Studio:解决AOSP自编译framework.jar引用不到的问题
|
开发工具 Android开发 git
全志H713 Android 11 :给AOSP源码,新增一个Product
本文介绍了在全志H713 Android 11平台上新增名为myboard的产品的步骤,包括创建新的device目录、编辑配置文件、新增内核配置、记录差异列表以及编译kernel和Android系统的详细过程。
913 0
|
Ubuntu 开发工具 Android开发
Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
文章记录了作者在Ubuntu 21.04服务器上配置环境、下载并编译基于Android 12.1.0_r27版本的AOSP源码的过程,包括解决编译过程中遇到的问题和错误处理方法。
924 0

热门文章

最新文章