Android的源代码结构http://android.tgbus.com/Android/androidnews/200812/172252.shtml

解决方案 »

  1.   

    我把楼上的内容贴出来
    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
      

  2.   

    内核:./prebuilt/android-arm/kernel/kernel-qemu
      

  3.   

    kernel-qemu 好像是模拟器吧,不算可以用来下载的二进制码,而且也不能移植。我现在所和别人合作的,昨天刚编译出一个内核,下到板子上结果出现bad magic bumber。后来才知道编译出来的内核所goldfish,不是我们板子的型号,估计还有些地方要改,奋斗中阿。。
      

  4.   

    下载个windriver看看能不能找到你要的信息?
      

  5.   

    我的android已经在板子上跑起来了,现在就只有一点点文件系统的问题了,使用开发板的文件系统没问题,自己的文件系统不行,哎,在9261上移植android还真够烦的,光一个LCD驱动就改了我一个多星期,网络驱动又有问题,也花了好多时间。现在终于内核部分全搞定了,感谢各位的帮忙了。