zoukankan      html  css  js  c++  java
  • MTK Android源代码目录

     

    1.     MTKAndroid4.0 源代码目录

    (1)  makeMtk

    整个工程编译或是构建(make/build)的入口。

    (2)  abi

    应用程序二进制接口(application binary interface)。

    (3)  bionic:

    Android之所以采用bionic而不是glibc,有几个原因:

    版权问题,因为glibc是LGPL

    库的体积和速度,bionic要比glibc小很多。

    提供了一些Android特定的函数,getprop LOGI等

    Bionic Libc有如下特点:

    采用BSD License, 而不是glibc的GPL License;

    大约有200KB, 比glibc小很多,且比glibc要快;

    实现了一个更小,更快的pthread;

    提供了Android所需要的重要函数,如getprop LOGI等

    不完全支持POXIC标注,譬如C++ exceptions, wide chars等;

    不支持libthread_db和libm的实现

    (4)  bootable

    启动引导程序的源代码,包括bootloader、diskinstaller和recovery。

    其中bootloader适合各种bootloader的通用代码;diskinstaller是android镜像打包器,x86可生产iso;recovery系统恢复相关

    (5)  build

    android的编译系统,包含这种makefiles、scripts和其他工具。

    (6)  cts

    android兼容性测试套件,android设备如果需要google认证,就需要通过google的兼容性检测,目的是确保该设备系统具备标准的SDK API接口。

    (7)  dalvik

    dalvik虚拟机源代码,是用于android平台的java虚拟机,但不是java标准的虚拟机。

    (8)  development

    开发所需要的一些例程、文档和工具等。

    (9)  device

    不同厂商设备相关的代码和编译脚本等,包括TI、三星和摩托等厂商。

    (10) docs

    介绍开源相关的source.android.com文档。

    (11) external

    android用到的扩展库,包括bluetooth、skia、sqlite、freetype、webkit等功能库和一些工具库,系统运行库层(LIBRARIES)大部分代码位于这里。

     

    图1

    (12) frameworks

    android应用框架层代码位于这里,这层为应用层提供API,而且是一种重要的机制。这种机制为应用层提供了可以复用的组件,提供了应用开发的规范,屏蔽了应用层和底层交互的复杂性。Framework层主要的组件有activity manager、content providers等。

    (13) hardware

    硬件适配层HAL代码,见图1,Android的HAL是为了保护一些硬件提供商的知识产权而提出的,是为了避开linux的GPL束缚。思路是把控制硬件的动作都放到了Android HAL中,而linux driver仅仅完成一些简单的数据交互作用,甚至把硬件寄存器空间直接映射到user space。而Android是基于Aparch的license,因此硬件厂商可以只提供二进制代码,所以说Android只是一个开放的平台,并不是一个开源的平台。也许也正是因为Android不遵从GPL,所以Greg Kroah-Hartman才在2.6.33内核将Andorid驱动从linux中删除。

    (14) kernel

    linux内核,见图1的LINUX KERNEL部分。

    (15) libcore

    核心java库,android2.3之前位于/dalvik/libcore目录下,见图1的ANDROID RUNTIME下的core libraries部分。

    (16) mediatek

    mtk开发平台源代码、工具、编译配置文件和定制代码。

    (17) ndk

    android的NDK(Native Development Kit,原生开发套件),NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。

    (18) out

    编译输出目录,编译后的所有输出(包括对象、二进制和临时文件)都在这个目录,分为主机部分和目标机部分。

    (19) packages

    应用程序包,包含各种内置的核心应用程序,比如bluetooth、calendar、camera等,见图1的APPLICATIONS部分。

    (20) prebuilt

    编译所需要的程序文件,主要包含不同平台下的ARM编译器

    (21) sdk

    SDK(softwaredevelopment kit)软件开发工具包,这里是编译SDK工具所需要的文件,包含hierarchyviewer、eclipse插件、emulator等。

    (22) system

    嵌入式linux所需要的一些系统工具程序,比如adb、fastboot、debugger、logcat等。

    (23) vendor

    供应商(这里是CPU厂商MTK)应用、二进制发布库文件。

  • 相关阅读:
    推荐系统 蒋凡译 第一章 引言 读书笔记
    神经网络与深度学习 邱锡鹏 第5章 卷积神经网络 读书笔记
    神经网络与深度学习 邱锡鹏 第4章 前馈神经网络 读书笔记
    神经网络与深度学习 邱锡鹏 第3章 线性模型 读书笔记
    神经网络与深度学习 邱锡鹏 第2章 机器学习概述 读书笔记
    神经网络与深度学习 邱锡鹏 第1章 绪论 作业
    神经网络与深度学习 邱锡鹏 第1章 绪论 读书笔记
    算法笔记 上机训练实战指南 第13章 专题扩展 学习笔记
    算法笔记 第13章 专题扩展 学习笔记
    算法笔记 上机训练实战指南 第11章 提高篇(5)--动态规划专题 学习笔记
  • 原文地址:https://www.cnblogs.com/lhwcoding/p/5102688.html
Copyright © 2011-2022 走看看