회원 및 비회원 모두 열람이 가능합니다. 최대 업로드 가능한 용량은 20MB 입니다.
안녕하세요.
고도리입니다.
Android 포팅 책 최종 목차를 올립니다. 페이지수도 있으니 대략의 분량이 짐작 되실겁니다.
(실제 책은 좀 더 늘어날 겁니다)
참고하시기 바랍니다.
=================================================================================
1. Google Android 7
1.1 안드로이드 개요 7
1.2 안드로이드의 특징 8
1.3 안드로이드의 구성요소 및 구조 10
1.4 안드로이드 커널 12
1.5 안드로이드용 리눅스 커널 패치 내용 13
1.6 Android Libraries 계층 14
1.6.1 Libraries 계층의 구성 15
1.6.2 대표적인 Binder Service 17
1.6.3 Android Runtime 18
1.6.4 Application Framework 20
1.6.5 Application 21
1.7 개발환경 21
1.7.1 이클립스 IDE 21
1.7.2Android Emulator 22
1.7.3 Target Board 22
1.7.4Android 시스템 구조 23
1.7.5Android Root FileSystem 24
1.8 Android 개발방법 24
1.8.1 Android SDK를 이용한 개발 25
1.8.2 PDK(Platform Development Kit)를 이용한 개발 26
1.8.3 NDK(Native Development Kit)를 이용한 개발방법 31
1.9 Android init process와 부팅과정 32
1.9.1 init 프로세스의 시작 33
1.9.3 Zygote의 시작. 34
1.9.4 이후의 과정 35
1.10 Android의 init 40
1.10.1 android init의 특징 40
1.10.2 안드로이드에서의 init와 보안의 관계 41
2. Android의 init process 분석 44
2.1. Android init 세부분석 44
2.1.1 RC 파일 문법 45
2.2 init 소스 분석 48
2.3. 실습 ? setprop을 이용한 init service 제어 61
3. udev 와 ueventd, Android device mamagement 62
3.1. udev 탄생 배경 63
3.2. Udev란? 63
3.3. Udev의 특징 64
3.4. Udev 설정 65
3.5. uevent와 device 66
3.6. ueventd 69
4. Android Input Device 78
4.1 Input Device 개요 78
4.2 Android Input Device Driver 92
4.2.1 Android key driver 93
4.2.2 Android touchscreen driver 96
4.2.3 Android switch event device driver 98
4.3 Android Input Manager 104
4.3.1 Input Manager와 JNI 104
4.3.2 InputReader Class와 InputDispatcher Class 109
4.4 Kernel의 GPIO KEY/GPIO INPUT Driver 125
5. Sensor Sub System 130
5.1 Sensor의 종류 130
5.2 Sensor System의 구성과 이해 132
5.3 Sensor의 NDK Interface 소개 134
5.4 Sensor Manager 134
5.4.1 초기화 134
5.4.2 SensorManager 객체 생성 및 동작 136
5.4.3 Listner의 등록 139
5.5 정리 142
6. Android GPS Sub System 143
6.1 Android에서의 GPS 동작 144
6.2 Android GPS Source 분석 146
6.2.1 Loction Manager Service의 시작 148
6.2.2 초기화 함수의 시작 150
6.2.3 GPS 동작의 시작 166
6.3 GpsLocationProvider Message 처리 구조 170
7. Android Audio Sub System 176
7.1 Android에서의 사운드 개요 176
7.2 Android 사운드 구조 180
7.3 Android 사운드 시스템과 HAL 초기화 순서 183
7.3.1 Android 사운드 서브시스템 관련 용어 186
7.3.2 AudioFlinger와 HAL의 초기화 187
7.4 AudioFlinger 220
7.4.1 AudioFlinger의 class 구조 220
7.4.2 IAudioFlinger Interface 224
7.4.3 ThreadBase Class 227
7.4.4 TrackBase 234
7.4.5 TrackHandle, RecordHandle 240
7.4.6 PlaybackThread(MixerThread)의 생성 247
7.4.7 RecordThread의 생성 251
7.4.8 DuplictingThread의 생성 256
7.5 AudioPolicyService 264
7.5.1 AudioPolicyService의 도입 이유 264
7.5.2 AudioPolicyService 구조 265
7.5.3 AudioPolicyService와 HAL의 초기화 265
7.5.4 AudioPolicyService() 생성자 267
7.5.5 HAL 초기화 함수 276
7.6 AudioPolicyManager 282
7.6.1 입출력 디바이스 관리 282
7.6.2 음량(Volume) 제어 293
7.6.3 오디오 정책 관리(Audio Policy Management) 302
7.7 AudioFlinger HAL의 Class 구조 312
7.7.1 제어경로 분석 320
7.7.2 데이터 경로 332
7.7.3 Downsampling - 안드로이드 오디오 코드의 특이성 356
8. Android IPC Binder 361
8.1 OpenBinder 개요 361
8.1.1 Binder의 사용 이유 362
8.2 Linux에서의 IPC와 Android IPC와의 관계 364
8.2.1 Linux의 종류와 개요 364
8.2.2 BSD의 UDS( Unix Domain Socket ) 365
8.2.3 System V IPC의 Message Queue 366
8.2.4 System V IPC의 Shared Memory 367
8.2.5 System V IPC의 Semaphore 367
8.2.6 UNIX 계열의 IPC의 특징 367
8.2.7 System V IPC를 사용한 process간 통신의 간단한 block diagram 368
8.2.8 Android의 IPC 368
8.3 Android Binder의 기본 동작 설명 ( 예제 ) 368
8.4 Android Binder Device Driver 371
8.5 ServiceManager 부분 분석 374
8.6 Android Framework에서의 Binder 378
8.7 Binder IPC의 사용 385
8.7.1 Service ( Server 만들기 ) 385
8.7.2 Client 389
8.8 Binder의 RPC(Remote Procedure Call) 사용 393
8.8.1 Binder의 RPC 동작 메커니즘 396
8.8.2 IServiceManager 동작 399
8.8.3 Binder RPC의 실제 구현 예(PermissionController) 399
8.8.4 Binder 서비스 구현 (ABC service) 403
8.9 Binder RPC service의 실현의 예 (AudioFlinger로의 접근) 416
8.10 양방향 IPC Binder 417
8.11 Binder를 이용한 Android 시스템 제어 (Audio Subsystem) 426
8.12 Binder에 대한 정리 474
9. Android Camera System 476
9.1 개요 476
9.2 Android Camera System의 이해 476
9.3 카메라 애플리케이션 480
9.3.1 카메라 예제 애플리케이션 (CameraPreview) 480
9.3.2 Android 카메라 기본 애플리케이션 (Camera.apk) 485
9.3.3 Callback 490
9.4 카메라 애플리케이션 프레임워크 496
9.5 카메라 클라이언트 502
9.6 카메라 서비스 510
9.6.1 카메라 서비스의 시작 510
9.6.2 카메라 서비스 512
9.7 카메라 HAL 521
9.7.1 카메라 HAL - libcamerastub 522
9.7.2 카메라 HAL - libcamera (Nexus-S) 535
9.8 결론 553
10. Android GDI ( Graphics Device Interface ) 554
10.1 안드로이드 GDI 개요 554
10.2 Android GDI 시스템에서의 디스플레이 버퍼 관리 기법 - 스크린 디바이스 관리를 위한 Android GDI(동적 링크 라이브러리) 558
10.2.1 Basics 558
10.2.2 Android 버퍼 추상화 561
10.3 Android GDI 시스템에서 공유 버퍼 관리 기법 565
10.3.1 private_handle_t의 native_handle_t 패키지 565
10.3.2 GraphicBufferMapper의 역할 567
10.3.3 GraphicBuffer 569
10.4 SurfaceFlinger 570
10.4.1 Android SurfaceFlinger의 의미와 역할 570
10.4.2 SurfaceFlinger 관련 용어 572
10.4.3 SurfaceFlinger와 응용프로그램간의 함수 호출 구조 574
10.4.4 SurfaceFlinger의 블록 다이어그램 575
10.4.5 SurfaceFlinger 관련 source list 576
10.5 SurfaceFlinger의 기능과 구성요소 577
10.6 SurfaceFlinger의 초기화 578
10.7 SurfaceFlinger의 threadLoop() 함수 581
10.7.1 handleTransaction() 584
10.7.2 handlePageFlip() 587
10.7.3 handleRepaint() 591
10.7.4 postFrameBuffer() 594
10.8 SurfaceSession과 Surface의 생성 596
10.9 LayerBase 609
10.10 copybit 617
부록 619
Appendix 1. 리눅스 개요 619
1.1 유닉스의 탄생 배경 619
1.2 리눅스의 시작과 인물들 620
1.3 리눅스 개요 622
1.4 리눅스 운영체제의 특징 623
1.5 임베디드 시스템과 리눅스 625
1.6 임베디드 리눅스 시스템의 구성 626
1.7 Linux kernel 2.6 627
1.8 HardWare Support 629
1.9 File System 631
1.10 버전 특성 632
Appendix 2. Android 컴파일 632
2.1 개발환경 구축하기 632
2.1.1 VirtualBox 설치하기 633
2.1.2 VirtualBox 설정하기 636
2.1.3 Ubuntu Linux 설치하기 645
2.1.4 Android 개발환경 649
2.1.5 Android 코드 내려받기 650
2.1.6 Android 코드 컴파일 하기 651
Appendix 3. Audio Headset Detection 653
3.1 Android Framework 부분 653
Appendix 4. Package Manager Service 660
4.1 Package Manager Service의 시작 661
4.2 Package Install 663
4.3 Package Delete 673
4.4 Scan Package 680
Appendix 5. 참조 사이트 688
사운드랑 Binder가 가장 많습니다...^^