on
안드로이드 소스 디렉토리 구조
소스 디렉토리 구조
├── 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