zoukankan      html  css  js  c++  java
  • 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


     http://hi.baidu.com/aja2008/blog/item/4d024d54ce6e875e564e000d.html

    http://source.android.com/documentation 

  • 相关阅读:
    PAT (Advanced Level) Practice 1054 The Dominant Color (20 分)
    PAT (Advanced Level) Practice 1005 Spell It Right (20 分) (switch)
    PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) (排序)
    hdu 5114 Collision
    hdu4365 Palindrome graph
    单链表查找最大值、两个递增的链表合并并且去重
    蓝桥杯-最短路 (SPFA算法学习)
    蓝桥杯-最大最小公倍数
    Codeforces-470 div2 C题
    蓝桥杯-地宫取宝
  • 原文地址:https://www.cnblogs.com/leaven/p/1652058.html
Copyright © 2011-2022 走看看