源码结构
以源码 android13-release 分支为例:
- Android.bp -> build/soong/root.bp
- art/ Android ART虚拟机相关实现(替代dalvik虚拟机):虚拟机、运行库、dex2oat等工具、模拟器等。这个会提前把字节码编译成二进制机器码保存起来,执行的时候加载速度比较快。Dalvik虚拟机则是在加载以后再去编译的,所以速度上ART会比Dalvik快一点。牺牲空间来赢取时间。
- bionic/ 谷歌为android重新实现的C语言函数库,Android系统与Linux内核的桥梁。
- bootable/ 系统启动引导相关程序。bootloader 的实现,各厂家会有自己的版本,例如 MTK/MST 所用名为 Mboot bootloader。
- bootstrap.bash -> build/soong/bootstrap.bash*
- build/ AOSP源码编译相关:系统make编译规则、blueprint、kati、soong,以及envsetup.sh等配置及工具。用于构建 Android 系统的工具,也就是用于编译 Android 系统的。
- BUILD -> build/bazel/bazel.BUILD
- .ccls-cache/
- cts/ Android 兼容性测试套件
- dalvik/ dalvik虚拟机,用于解析执行dex文件的虚拟机
- developers/ 提供给Android开发者的一些样例,可以导入到AS中编译
- development/ 同developers类似,提供一些样例、工具
- device/ 和具体设备相关的配置、文件、及修改,各厂家会放入里面响应目录
- device/vendor_name/product_name。
- external/ Android使用的一些开源的功能模块
- frameworks/ 系统架构,Android核心框架
- hardware/ 部分厂家开源的硬解适配层 HAL 代码,硬件抽象层。添加自定义属性位置
- interfaces/automotive/vehicle/
- 2.0/ HIDL 实现
- aidl/ AIDL 实现
- Android.bp
- impl/
- Android.bp
- default_config/include/
- DefaultConfig.h
- VehicleProperty.aidl
- interfaces/automotive/vehicle/
- kernel/ Linux kernel 源码
- libcore/ java核心库 包括java api的源码
- libnativehelper/ native帮助库,实现JNI的相关文件。支持Android类库,但与android.*无关,与VM无关的本机函数,用于实现系统的方法类库,以C实现。
- Makefile 这个不是目录,include build/make/core/main.mk,核心编译规则
- out/ 输出目录,编译AOSP时候产生的临时目录。临时文件和 最后生成的ROM镜像 都存放在里面
- target/product/
- emulator64_arm64
- sdk-repo-linux-system-images-eng.tw-iot.zip 生成的系统镜像压缩包
- emulator_car_x86_64
- emulator64_arm64
- target/product/
- output.log
- packages/ 应用程序包,一些系统的应用就在这里了,比如说蓝牙,Launcher,相机,拨号,settings之类的。供⻋机 app使用的 carlib,CarService 相关接口,调用 HAL 自定义属性,自定义权限修改位置。
- services/Car/
- apex_car_framework/
- Android.bp
- car-lib/src/android/car/
- Car.java
- VehiclePropertyIds.java
- internal/
- PropertyPermissionMapping.java
- cpp/vhal/client/
Android.bp - service/
- Android.bp
- AndroidManifest.xml
- src/com/android/car/hal/
- PropertyHalServiceIds.java
- apex_car_framework/
- services/Car/
- pdk/ PDK工具和测试代码的存放处,PDK套件用于帮助厂家适配新版本,完成HAL的开发
- platform_testing/ 平台测试,为andorid 平台开发人员提供的测试及指导
- prebuilts/ Android预编译的一些工具,如build-tools、qemu模拟器、gdb、gcc、sdk/ndk库等
- .repo/ 代码仓库配置
- sdk/ Android SDK
- system/ Android底层文件系统库、应用和组件
- test/ VTS 测试套件
- toolchain/ 存放编译工具链
- tools/ Android工具文件
- vendor/ 存放各厂家自己定制的文件、实现,如app、配置、新增api、库等
- WORKSPACE -> build/bazel/bazel.WORKSPACE
源码查询工具
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 350394277@qq.com