안드로이드 소스 디렉토리 구조

소스 디렉토리 구조

├── bionic : bionic libc(BSD의 libc 수정)를 포함

├── bootable : bootloader, recovery mode 관련 코드

├── build : 빌드 관련 스크립트를 저장

│ ├── envsetup.sh : 환경 정보 설정 파일, 제조사의 Flag들에 대한 설정을 함

│ ├── core

│ │ └── prelink-linux-arm.map : shared library들이 로딩되는 번지를 미리 지정한 파일

│ └── target

│ └── board

│ └── generic

│ ├── AndroidBoard.mk : 최상위 directive 파일, Android 최종 결과물

│ │ 구성서 자동 포함 bin에 대한 install을 결정

│ │ init.rc, init%hw%.rc 들을 install

│ └── BoardConfig.mk : HAL의 en/disable 등을 결정

├── cts : Compatibility Test Suite, GMS를 탑재 위해 통과해야 하는 Test

├── dalvik : dalvik VM 관련 소스 코드

├── development : 개발용 application을 저장

├── device : 칩 관련 설정 파일 및 디버깅을 위한 cmm 파일 등을 포함

├── external : 기존 작성된 library, binary등의 소스 코드를 포함

├── frameworks

│ ├── base : Android Framework Source Code

│ ├── cmds : binder 관련된 service manager 소스 코드 및 여러 가지 command

│ ├── libs : Android base library (AudioFlinger, SurfaceFlinger, util, binder 등)

│ ├── media : media 관련 Client & Service 라이브러리

│ └── policies : Android 시스템을 background에서 제어하는 최상위 application

│ KeyGuard 관련, 화면 제어(rotation..), event 관리 등의 작업 처리

├── hardware : Android에서 사용하는 h/w 관련 소스 코드 포함(HAL, include..)

│ ├── libhardware : Board H/W 의존성이 높은 하드웨어 모듈 포함

│ └── libhardware_legacy: 일반적으로 Android에 반드시 있어야 하는 H/W 모듈(wifi..)

├── packages : Android 기본 Application 소스 코드를 포함

├── prebuilt : 툴체인과 미리 빌드되어 들어가는 바이너리 파일 포함

├── system : Android의 기본 바이너리 소스 코드(init…)

│ ├── core

│ │ ├── init : Android init 소스 코드

│ │ └── vold : external storage 제어 모듈 (Eclair)

│ └── vold : external storage 제어 모듈 (Froyo/Gingerbread)

└── vendor : vendor specific code(HAL, product list 관리…)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

bionic/ - Android Bionic C 라이브러리

bootable/ - 부트로더 및 Disk Installer 등

build/ - Makefile 관련 세팅파일들, script, map file

development/ - 개발 시 필요한 utility & application들…..

external/ - 안드로이드 프레임워크가 아닌 외부에서 가져온 라이브러리와 바이너리 위치

frameworks/ - android framework, C/C++(JNI포함)/JAVA source들, 일부 HAL source도 포함

/base -Android Framework source

/libs : Android base library(C++서부터)

/audioflinger : Android audio service & HAL source

/surfaceflinger : Android video service & HAL

/ui :Application Framework에서 JNI를 통해서  호출되는 Android framework의 client part, HAL (Input device의 경우)  - EventHub.cpp

/utils : wrapping class, 압축관련 유틸리티 등...

/binder : Android Binder & Anonymous shared memory

/cmds : binder관련인 service manager소스와 여러가지 command들

/media : media관련 client & service library

hardware/ - HAL source & include, 일반적으로 android에서 사용하는 hardware관련 소스들을 포함, 반드시 이 디렉토리에만 위치하는 것은 아니다(vendor 디렉토리에 존재하는 경우도 많음)

out/ - 컴파일 된 결과물이 생성되는 디렉토리

packages/ - android 기본 application source(JAVA)

prebuilt/ - compiler & binaries

system/ - android의 기본 binary 소스

 /core/init :  android init source

/core/vold :  external storage 제어 모듈

출처:http://dplex.egloos.com/4268602