阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 2165|回复: 2

[转帖] Android的源代码结构

[复制链接]
  • TA的每日心情
    开心
    2012-3-7 10:15
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2012-1-12 09:32:33 | 显示全部楼层 |阅读模式
    Android的源代码结构Google提供的Android包含了原始Android的目标机代码,主机编译工具、仿真环境,代码包经过解压缩后,第一级别的目录和文件如下所示:
    |-- Makefile        (全局的Makefile)
    |-- bionic          (Bionic含义为仿生,这里面是一些基础的库的源代码)
    |-- bootloader      (引导加载器)
    |-- build           (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)
    |-- dalvik          (JAVA虚拟机)
    |-- development     (程序开发所需要的模板和工具)
    |-- external        (目标机器使用的一些库)
    |-- frameworks      (应用程序的框架层)
    |-- hardware        (与硬件相关的库)
    |-- kernel          (Linux2.6的源代码)
    |-- packages        (Android的各种应用程序)
    |-- prebuilt        (Android在各种平台下编译的预置脚本)
    |-- recovery        (与目标的恢复功能相关)
    `-- system          (Android的底层的一些库)




    bionic目录展开一个级别的目录如下所示:
    bionic/
    |-- Android.mk
    |-- libc
    |-- libdl
    |-- libm
    |-- libstdc++
    |-- libthread_db
    `-- linker




    bootloader目录展开的两个级别目录:
    bootloader/
    `-- legacy
        |-- Android.mk
        |-- README
        |-- arch_armv6
        |-- arch_msm7k
        |-- fastboot_protocol.txt
        |-- include
        |-- libboot
        |-- libc
        |-- nandwrite
        `-- usbloader




    build目录展开的一个级别的目录如下所示:
    build/
    |-- buildspec.mk.default
    |-- cleanspec.mk
    |-- core                       (各种以mk为结尾的文件,它门是编译所需要的Makefile)
    |-- envsetup.sh
    |-- libs
    |-- target                     (包含board和product两个目录,为目标所需要文件)
    `-- tools                      (编译过程中主机所需要的工具,一些需要经过编译生成)




    其中,core中的Makefile是整个Android编译所需要的真正的Makefile,它被顶层目录的Makefile引用。
    envsetup.sh是一个在使用仿真器运行的时候,用于设置环境的脚本。
    dalvik目录用于提供Android JAVA应用程序运行的基础————JAVA虚拟机。
    development目录展开的一个级别的目录如下所示:
    development
    |-- apps                       (Android应用程序的模板)
    |-- build                      (编译脚本模板)
    |-- cmds
    |-- data
    |-- docs
    |-- emulator                   (仿真相关)
    |-- host                       (包含windows平台的一些工具)
    |-- ide
    |-- pdk
    |-- samples                    (一些示例程序)
    |-- simulator                  (大多是目标机器的一些工具)
    `-- tools




    在emulator目录中qemud是使用QEMU仿真时目标机器运行的后台程序,skins是仿真时手机的界面。
    samples中包含了很多Android简单工程,这些工程为开发者学习开发Android程序提供了很大便利,可以作为模板使用。
    external目录展开的一个级别的目录如下所示:
    external/
    |-- aes
    |-- apache-http
    |-- bluez
    |-- clearsilver
    |-- dbus
    |-- dhcpcd
    |-- dropbear
    |-- elfcopy
    |-- elfutils
    |-- emma
    |-- esd
    |-- expat
    |-- fdlibm
    |-- freetype
    |-- gdata
    |-- giflib
    |-- googleclient
    |-- icu4c
    |-- iptables
    |-- jdiff
    |-- jhead
    |-- jpeg
    |-- libffi
    |-- libpcap
    |-- libpng
    |-- libxml2
    |-- netcat
    |-- netperf
    |-- neven
    |-- opencore
    |-- openssl
    |-- oprofile
    |-- ping
    |-- ppp
    |-- protobuf
    |-- qemu
    |-- safe-iop
    |-- skia
    |-- sonivox
    |-- sqlite
    |-- srec
    |-- strace
    |-- tagsoup
    |-- tcpdump
    |-- tinyxml
    |-- tremor
    |-- webkit
    |-- wpa_supplicant
    |-- yaffs2
    `-- zlib




    在external中,每个目录表示Android目标系统中的一个模块,可能有一个或者若干个库构成。其中:
    opencore为PV(PacketVideo),它是Android多媒体框架的核心。
    webkit是Android网络浏览器的核心。
    sqlite是Android数据库系统的核心。
    openssl是Secure Socket Layer,一个网络协议层,用于为数据通讯提供安全支持。
    frameworks目录展开的一个级别的目录如下所示:
    frameworks/
    |-- base
    |-- opt
    `-- policies




    frameworks是Android应用程序的框架。
    hardware是一些与硬件相关的库
    kernel是Linux2.6的源代码

    packages目录展开的两个级别的目录如下所示:
    packages/
    |-- apps
    |   |-- AlarmClock
    |   |-- Browser
    |   |-- Calculator
    |   |-- Calendar
    |   |-- Camera
    |   |-- Contacts
    |   |-- Email
    |   |-- GoogleSearch
    |   |-- HTMLViewer
    |   |-- IM
    |   |-- Launcher
    |   |-- Mms
    |   |-- Music
    |   |-- PackageInstaller
    |   |-- Phone
    |   |-- Settings
    |   |-- SoundRecorder
    |   |-- Stk
    |   |-- Sync
    |   |-- Updater
    |   `-- VoiceDialer
    `-- providers
        |-- CalendarProvider
        |-- ContactsProvider
        |-- DownloadProvider
        |-- DrmProvider
        |-- GoogleContactsProvider
        |-- GoogleSubscribedFeedsProvider
        |-- ImProvider
        |-- MediaProvider
        `-- TelephonyProvider




    packages中包含两个目录,其中apps中是Android中的各种应用程序,providers是一些内容提供者(在Android中的一个数据源)。
    packages中两个目录的内容大都是使用JAVA编写的程序,各个文件夹的层次结构是类似的。
    prebuilt目录展开的一个级别的目录如下所示:
    prebuilt/
    |-- Android.mk
    |-- android-arm
    |-- common
    |-- darwin-x86
    |-- linux-x86
    `-- windows




    system目录展开的两个级别的目录如下所示:
    system/
    |-- bluetooth
    |   |-- bluedroid
    |   `-- brfpatch
    |-- core
    |   |-- Android.mk
    |   |-- README
    |   |-- adb
    |   |-- cpio
    |   |-- debuggerd
    |   |-- fastboot
    |   |-- include            (各个库接口的头文件)
    |   |-- init
    |   |-- libctest
    |   |-- libcutils
    |   |-- liblog
    |   |-- libmincrypt
    |   |-- libnetutils
    |   |-- libpixelflinger
    |   |-- libzipfile
    |   |-- logcat
    |   |-- logwrapper
    |   |-- mkbootimg
    |   |-- mountd
    |   |-- netcfg
    |   |-- rootdir
    |   |-- sh
    |   `-- toolbox
    |-- extras
    |   |-- Android.mk
    |   |-- latencytop
    |   |-- libpagemap
    |   |-- librank
    |   |-- procmem
    |   |-- procrank
    |   |-- showmap
    |   |-- showslab
    |   |-- sound
    |   |-- su
    |   |-- tests
    |   `-- timeinfo
    `-- wlan
        `-- ti


    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    奋斗
    2016-7-3 11:24
  • 签到天数: 130 天

    [LV.7]常住居民III

    发表于 2012-9-29 10:06:03 | 显示全部楼层
    看起来挺有收获的,谢谢楼主了!!!!!!
    启用邀请码注册,提高发帖质量,建设交流社区
  • TA的每日心情
    奋斗
    2014-4-5 13:42
  • 签到天数: 123 天

    [LV.7]常住居民III

    发表于 2012-10-3 21:44:22 | 显示全部楼层
    看起来挺有收获的,谢谢楼主了!!!!!!
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表