• 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)应用、二进制发布库文件。

  • 相关阅读:
    jquery $(document).ready() 与window.onload的区别
    【Ionic+AngularJS 开发】之『个人日常管理』App(二)
    【Ionic+AngularJS 开发】之『个人日常管理』App(一)
    移动App服务端架构设计
    jQuery 事件用法详解
    CSS实现的几款不错的菜单栏
    css清除浮动的方法总结
    常见浏览器的兼容问题
    推荐两个界面原型设计工具--GUIDesignStudio 和 Mockups For Desktop
    如何用js获取浏览器URL中查询字符串的参数
  • 原文地址:https://www.cnblogs.com/lhwcoding/p/5102688.html
Copyright © 2020-2023  润新知