01. 왜 안드로이드인가? = 1 안드로이드 채택하기 = 2 풀스택(Full Stack) 제공 = 2 폭넓은 수용성 = 2 미려한 사용자 인터페이스 = 3 리눅스 기반 = 3 막강한 개발 환경 = 4 오픈 소스 = 5 AOSP와 구글 = 7 다른 선택지 = 8 마이크로 컨트롤러 = 8 기타 RTOS = 10 요약 = 11 02. Acme 부팅하기 = 13 빌드 머신 구축하기 = 14 소스 코드 다운로드하기 = 16 Repo = 16 소스 포크하기 = 22 안드로이드 버전 선택하기 = 22 로컬 미러 = 24 호스팅 서비스 Git 저장소 = 26 트리 스냅숏 = 27 저장소 커밋 고정하기 = 27 예 : 포크된 저장소를 위한 로컬 미러 = 28 이미지 빌드하기 = 34 디바이스 툴 = 38 fastboot = 39 adb = 40 디바이스 플래싱하기 = 42 요약 = 47 03. 시작하기 = 48 안드로이드 계층 배치 = 48 하드웨어 = 50 리눅스 커널 = 50 시스템 라이브러리 = 51 애플리케이션 = 53 안드로이드 프레임워크 = 54 안드로이드 서비스 모델 = 55 소스 탐험하기 = 59 다른 소스들 = 60 박스에 뭐가 들어 있나? = 60 요약 = 67 04. 커널 = 68 리눅스 커널 = 69 커널 프로세스 관리 = 69 커널 메모리 관리 = 71 안드로이드 커널 = 73 안드로이드 커널 기능 = 76 커널 빌드하기 = 87 빌드 시스템 = 88 소스 다운로드하기 = 88 요약 = 93 05. 플랫폼 보안 = 94 보안의 종류 = 94 자체 검사 부팅(Verified Boot) = 95 운영 보안 = 98 안드로이드 소프트웨어 계층 = 98 프로세스 샌드박스 = 99 안드로이드용 SE 리눅스 = 102 SE 정책 정의 = 103 안드로이드 권한 = 106 파일 시스템 = 110 사용자 보호 = 115 권한 커스터마이징 = 117 사용자 정의 권한에 의해 보호받는 샘플 앱 = 118 사용자 정의 권한을 사용하는 샘플 클라이언트 앱 = 123 요약 = 128 06. 시스템 초기화 : 시스템 설치와 부팅 = 129 부팅 절차 = 129 부트로더 = 1232 Fastboot = 136 커널 = 138 파일 시스템 = 140 init = 143 복구 = 145 데몬 빌드하기 = 146 Acme 디바이스 생성하기 = 147 Repo 다시 살펴보기 = 149 데몬 시작하기 = 151 요약 = 155 07. 안드로이드의 시작 : Dalvik과 Zygote = 156 Dalvik = 158 ART = 162 기본 ART = 163 하이브리드 ART = 166 Zygote = 167 Zygote 메모리 관리 = 167 Zygote 시작 = 171 런타임 초기화 = 173 시스템 서비스 시작 = 174 요약 = 177 인용 = 177 08. 안드로이드와 통신하기 : HAL = 178 왜 HAL인가? = 178 HAL이 필요한가? = 181 HAL 설계하기 = 182 HAL 빌드하기 = 185 코드 구조 = 186 HAL 구현하기 = 188 요약 = 203 09. 자바와 통신하기 : JNI = 204 코드 구조 = 205 하드웨어 사용하기 = 207 HAL 사용하기 = 209 자바 네이티브 인터페이스 사용하기 = 212 네이티브 코드 실행하기 = 212 JNI : 자바 측면 = 214 JNI : 네이티브 측면 = 215 자바 근접 센서 애플리케이션 = 219 JNI : 몇 가지 팁 = 234 요약 = 242 10. 프로젝트 트레블 : 바인더화된 HAL = 244 HIDL 아키텍처 = 245 hwservicemanager = 247 HIDL 서비스 = 247 HIDL 클라이언트 서비스 = 247 하드웨어 인터페이스 정의 언어 (HIDL) = 248 HIDL 타입 = 255 HIDL 서비스 = 258 HIDL 클라이언트 = 263 요약 = 264 11. 바인더화된 HAL 만들기 = 265 Acme 커스텀 HIDL = 265 요약 = 288 12. 바인더화된 HAL의 클라이언트 = 289 네이티브 C++ Aproximity 클라이언트 = 290 aproximitycl을 위한 안드로이드 SE 리눅스 수정 항목 = 295 Aproximitycl을 Acme로 빌드하기 = 297 자바/코틀린 Aproximity 클라이언트 = 298 AproximityClient를 위한 안드로이드 SE 리눅스 수정 = 302 Acme 플랫폼에 AproximityClient 빌드하기 = 302 요약 = 304 부록 = 305 A. Khadas VIM3 하드웨어 소개 = 305 B. 안드로이드 9.0 포크 소스 = 310 소스 다운로드 = 310 이미지 빌드 = 311 이미지 플래싱 = 313 C. 안드로이드 11.0 정규 AOSP 소스 = 317 소스 다운로드 = 317 이미지 빌드 = 318 이미지 플래싱 = 320