이미 소장하고 있다면 판매해 보세요.
|
01장. 안드로이드 아나토미 소개
1.1 인사이드 안드로이드와의 연결성 1.2 본서의 서술 스타일 1.3 정리 02장. 안드로이드 개발 환경 구축 2.1 호스트 환경 구성 2.1.1 VirtualBox 설치 2.1.2 우분투(64bit) 설치 2.2 안드로이드 시스템 빌드 환경 구축 2.2.1 플랫폼 빌드에 필요한 유틸리티 2.2.2 JDK 설치 2.2.3 필수 패키지 설치 2.2.4 Repo 설치 24 2.2.5 안드로이드 시스템의 소스 코드 내려받기 2.2.6 안드로이드 시스템 빌드 2.3 넥서스 원에 안드로이드 시스템 설치 2.3.1 USB 장치 접근 설정 28 2.3.2 넥서스 원 빌드를 위한 환경 설정 2.3.3 넥서스 원에 안드로이드 시스템 설치하기 2.4 안드로이드 로그 시스템 2.4.1 안드로이드 로그 시스템의 구성 2.4.2 이클립스에서 로그 생성하고 출력하기 2.4.3 logcat 사용하기 2.5 GDB를 이용한 디버깅 2.5.1 GDB를 이용한 디버깅 준비하기 - 타겟 시스템 2.5.2 GDB를 이용한 디버깅 준비하기 - 호스트 시스템 2.5.3 logcat 디버깅 03장. 안드로이드 시스템 서비스 3.1 시스템 서비스의 종류 3.1.1 네이티브 시스템 서비스 3.1.2 하드웨어 서비스 3.1.3 코어 플랫폼 서비스 3.2 시스템 서비스의 생성과정 3.2.1 미디어 서버의 실행 코드 분석 3.2.2 시스템 서버의 실행 코드 분석 3.3 시스템 서비스의 프로세스와 쓰레드 3.3.1 미디어 서버와 쓰레드 3.3.2 시스템 서버와 쓰레드 3.4 서비스 프레임워크 3.4.1 서비스 프레임워크 개요 3.4.2 예제를 이용한 서비스 프레임워크의 이해 3.5 자바 네이티브 인터페이스 3.5.1 JNI 네이티브 메서드 등록 3.5.2 자바에서 네이티브 메서드 호출하기 3.5.3 네이티브에서 자바 클래스 사용하기 3.6 하드웨어 추상 계층 (HAL) 3.6.1 HAL 종류 3.6.2 HAL 구조 3.6.3 HAL의 동적 로딩 예제 3.7 레이어 인터렉션 3.7.1 레이어 인터렉션의 종류 3.7.2 “가” 레이어 인터렉션 예제 3.7.3 나 레이어 인터렉션 예제 3.7.4 정리 04장. Advanced 바인더 IPC 4.1 바인더 IPC 개요 4.1.1 서비스 클라이언트와 서비스 서버 4.1.2 컨텍스트 매니저와 서비스 매니저 4.1.3 바인더 드라이버 4.2 구성요소간 상호작용 4.2.1 시스템 서비스 등록 4.2.2 시스템 서비스 검색 4.2.3 시스템 서비스 사용 4.2.4 정리 4.3 네이티브 리모트 서비스 4.3.1 정방향 리모트 서비스FRS 생성 4.3.2 역방향 리모트 서비스BRS 생성 4.3.3 리모트 서비스 프록시의 공유 4.3.4 정방향 리모트 서비스 예제 4.4 안드로이드 공유 메모리 4.4.1 공유 메모리 개요 4.4.2 애쉬맴 개요 4.4.3 애쉬맴 생성 (서비스 서버) 4.4.4 애쉬맴 사용 (서비스 클라이언트) 4.5 파일 식별자 전달 메커니즘 4.5.1 파일 식별자 전달 개요 4.5.2 애쉬맴 파일 식별자 요청 과정 4.5.3 애쉬맴 파일 식별자 반환 과정 4.6 MemoryHeapBase 리모트 서비스 4.6.1 MemoryHeapBase 리모트 서비스 구조 4.6.2 MemoryHeapBase 예제 애플리케이션 4.6.3 화면 캡쳐 요청 (서비스 클라이언트) 4.6.4 화면 캡쳐 (서비스 서버) 4.6.5 공유 메모리 사용 (서비스 클라이언트) 4.7 MemoryBase 리모트 서비스 4.7.1 MemoryBase 리모트 서비스 구조 4.7.2 MemoryBase 예제 애플리케이션 4.7.3 MemoryBase 생성 (서비스 서버) 4.7.4 MemoryBase 사용 (서비스 클라이언트) 05장. 안드로이드 오디오 시스템 5.1 오디오 시스템의 개요 5.1.1 오디오 시스템의 역할 5.1.2 PCM 데이터 5.1.3 트랙과 플레이백 쓰레드 5.1.4 오디오 장치 소개 5.2 오디오 시스템의 구조 5.2.1 오디오 시스템 계층별 구성요소 5.2.2 오디오 시스템 아키텍쳐 5.2.3 오디오 HAL 구조 5.3 오디오 플링거 서비스 초기화 5.3.1 오디오 HAL의 결정 5.3.2 출력 스트림과 플레이백 쓰레드 생성 5.4 오디오 출력 5.4.1 오디오 출력 애플리케이션 5.4.2 오디오 출력의 동작 과정 5.4.3 트랙 생성 요청 (서비스 클라이언트) 5.4.4 트랙 생성 과정 (서비스 서버) 5.4.5 트랙 공유 메모리 생성 5.4.6 오디오 트랙 컨트롤 블록 생성 5.4.7 트랙 생성 5.4.8 트랙 공유 메모리 참조 (서비스 클라이언트) 5.4.9 트랙 활성화 요청 (서비스 클라이언트) 5.4.10 트랙 활성화 (서비스 서버) 5.4.11 PCM 데이터 출력 요청 (서비스 클라이언트) 5.4.12 PCM 데이터 출력 준비 (서비스 서버) 5.4.13 PCM 데이터 리샘플링과 믹싱 5.4.14 PCM 데이터 출력 5.4.15 오디오 출력의 모든 것 (삽질과 굴삭기) 06장. 서피스 플링거 서비스 6.1 서피스 플링거 서비스 소개 6.1.1 다양한 종류의 안드로이드 화면 6.1.2 레이어 합성 6.1.3 OpenGL ES와 EGL 6.1.4 현재 프레임과 드로잉 프레임 6.1.5 그래픽 버퍼 공유 6.1.6 프레임 버퍼와 픽셀 포맷 6.2 서피스 플링거 서비스 구조 6.2.1 서피스 플링거 서비스 계층별 구성요소 6.2.2 서피스 플링거 서비스 아키텍처 6.3 서피스 플링거 서비스 초기화 6.3.1 SurfaceFlinger 클래스의 인스턴스 생성 6.3.2 메인 디스플레이 초기화 6.3.3 네이티브 윈도우 생성 6.3.4 EGL 초기화6 6.3.5 디스플레이 공유 메모리FRS 생성 6.3.6 부트 애니메이션 6.4 핵심기능 분석 (푸시 버퍼 서피스) 6.4.1 화면 출력 애플리케이션 6.4.2 서피스 플링거 서비스 연결 요청 (서비스 클라이언트) 6.4.3 서피스 플링거 서비스 연결(서비스 서버) 6.4.4 푸시 버퍼 서피스 생성 요청 (서비스 클라이언트) 6.4.5 푸시 버퍼 서피스 생성(서비스 서버) 6.4.6 푸시 버퍼 등록 요청(서비스 클라이언트) 6.4.7 푸시 버퍼 등록(서비스 서버) 6.4.8 레이어 상태 변경 요청 (서비스 클라이언트) 6.4.9 레이어 상태 변경(서비스 서버) 6.4.10 푸시 버퍼 출력 요청 (서비스 클라이언트) 6.4.11 푸시 버퍼 출력 (서비스 서버) 07장. 카메라 서비스 7.1 카메라 서비스 소개 7.1.1 카메라 하드웨어의 이해 7.1.2 카메라 서비스의 주요 기능 7.2 카메라 서비스 구조와 생성 7.2.1 카메라 서비스 계층 분석 및 구성 요소 7.2.2 카메라 서비스 아키텍쳐 7.2.3 카메라 서비스 생성 7.3 예제를 통한 카메라 서비스 동작의 이해 7.4 카메라 서비스 연결 7.4.1 카메라 서비스 연결 요청 (애플리케이션 프레임워크) 7.4.2 카메라 서비스 연결 요청 (서비스 클라이언트) 7.4.3 카메라 서비스 연결 (서비스 서버) 7.4.4 카메라 HAL 초기화 7.4.5 카메라 클라이언트FRS 리모트 서비스 생성 7.4.6 카메라 클라이언트FRS 리모트 서비스 콜백 함수 등록 (카메라 HAL) 7.4.7 카메라BRS 리모트 서비스 콜백 함수 등록 7.4.8 카메라 애플리케이션 콜백 함수 등록 7.5 카메라 영상 서피스 설정 7.5.1 카메라 영상 서피스 설정 요청 (애플리케이션 프레임워크) 7.5.2 카메라 영상 서피스 설정 요청 (서비스 클라이언트) 7.5.3 카메라 영상 서피스 설정 (서비스 서버) 7.6 카메라 설정 정보 획득 7.6.1 카메라 설정 정보 요청 (애플리케이션 프레임워크) 7.6.2 카메라 설정 정보 요청(서비스 클라이언트) 7.6.3 카메라 설정 정보 획득(서비스 서버) 7.6.4 카메라 설정 관리 클래스 7.7 카메라 설정 변경 7.7.1 사용자 카메라 설정 변경 요청(애플리케이션 프레임워크) 7.7.2 사용자 카메라 설정 변경 요청(서비스 클라이언트) 7.7.3 사용자 카메라 설정 변경(서비스 서버) 7.7.4 카메라 영상 데이터 버퍼 할당 7.8 카메라 미리보기 7.8.1 미리보기 시작 요청(애플리케이션 프레임워크) 7.8.2 미리보기 시작 요청(서비스 클라이언트) 7.8.3 미리보기 시작(서비스 서버) 7.8.4 프리뷰 쓰레드 생성 (카메라 HAL) 7.8.5 미리보기 영상 데이터 전달 7.9 카메라 사진 촬영 7.9.1 사진 촬영 요청(애플리케이션 프레임워크) 7.9.2 사진 촬영 요청(서비스 클라이언트) 7.9.3 사진 촬영 (서비스 서버) 7.9.4 픽쳐 쓰레드 생성 (카메라 HAL) 7.9.5 사진 촬영 데이터 전달 이해 |
|
『안드로이드 아나토미』에서는 안드로이드 플랫폼을 구성하고 있는 핵심 컴포넌트인 네이티브 시스템 서비스의 동작원리를 심도 있게 분석하고 있다. 저자들이 안드로이드 프레임워크의 주요 소스코드를 직접 분석하고 정리하였으며, 프레임워크의 동작을 이해하기 위한 각종 기초 지식과 안드로이드 플랫폼만의 특징인 오디오 플링거 서비스, 서피스 플링거 서비스, 카메라 서비스의 동작 메커니즘을 자세히 다루고 있다.
안드로이드 플랫폼 핵심 컴포넌트의 동작원리를 분석한 최초의 서적 『안드로이드 아나토미』에서는 안드로이드 플랫폼을 구성하고 있는 핵심 컴포넌트인 네이티브 시스템 서비스의 동작 원리를 심도 있게 분석하고 있다. 해당 분야의 다년간의 경험을 지닌 저자들이 안드로이드 플랫폼 주요 소스코드를 직접 분석하고, 넥서스원을 통해 분석 결과를 손수 검증하였다. 또한, 안드로이드 플랫폼에 녹아있는 핵심 기술들과 기본 지식들을 풍부하게 다루고 있으며, SDK, NDK, PDK 개발자 및 안드로이드 플랫폼에 관심 있는 전산 관련 종사자 모두가 읽고 이해할 수 있도록 전공 배경지식에 관해서도 자세히 설명하고 있다. 『안드로이드 아나토미』의 저자들은 안드로이드 플랫폼의 소프트웨어 스택을 구성하는 컴포넌트를 집중적으로 분석하였다. 구체적으로 네이티브 시스템 서비스 중에서 소리를 담당하는 오디오 플링거 서비스(Audio Flinger Service), 화면을 담당하는 서피스 플링거 서비스(Surface Flinger Service), 카메라 서비스(Camera Service)를 설명한다. 독자는 이 책을 통해 안드로이드 플랫폼의 내부 동작을 이해하여 새로운 기능을 추가하거나 기존의 기능을 최적화 하고, 고급 기능을 갖춘 애플리케이션을 개발할 수 있다. 『인사이드 안드로이드』의 계보를 잇는 안드로이드 플랫폼 분석의 필독서 이 책은 『인사이드 안드로이드』에 열광했던 독자라면 꼭 읽어 봐야 할 필독서입니다. 특히 플랫폼의 동작 원리를 깨우치고, 그것을 활용하는 방법이 궁금했던 독자에게 이 책은 지적 호기심을 충족시키기에 충분한 내용으로 구성되어 있습니다. 인사이드 안드로이드 집필에 참여한 저자들 중 다수가 다시 한번 의기투합하여 못다한 이야기 보따리를 풀어 놓았습니다. 또한, 해당 분야의 전문가로 구성된 저자들이 핵심 서비스의 집필을 맡았기에 현업 개발자들이 실무에 참고할 수 있는 알찬 내용들로 가득 차 있습니다. 『안드로이드 아나토미』는 안드로이드 플랫폼의 소프트웨어 스택을 구성하는 컴포넌트를 중점적으로 설명하고 있습니다. 저자들은 각자가 맡은 시스템 서비스 분석을 위해 플랫폼 소스를 직접 분석하고, 참고서적을 편역하고, 그룹으로 토론하고, 분석 결과를 넥서스원에서 검증하였습니다. 또한, 이 책은 플랫폼 전체를 아우르는 기본원리 및 개발 요점을 선별하여 자세히 설명하고 있습니다. 이 책은 저자들이 방대한 플랫폼 소스를 분석하면서 실패하고 좌절하면서 얻은 소중한 결과물입니다. 또한, 플랫폼 소스를 분석하면서 가설을 세우고, 서로의 전문 지식을 활용하여 치열하게 토론하는 과정에서, 가설들이 하나, 둘 구체적인 사실들로 밝혀지는 순간에 느꼈던 짜릿함과 희열들이 고스란히 녹아있습니다. 저자들은 안드로이드 플랫폼 분석을 진행하고 있거나 계획하고 있는 개발자들이 느끼는 두려움을 걷어내고, 개발자의 마음으로 자신들과 동일한 시행착오를 덜 겪을 수 있는 참고 서적이 될 수 있도록 집필에 혼신에 힘을 기울였습니다. 이 책은 안드로이드 플랫폼 소스코드 분석을 통해 핵심 시스템 서비스들을 심도 있게 다루고 있습니다. 안드로이드를 탑재한 임베디드 시스템 개발에 종사하는 개발자들에게 이 책이 안드로이드 플랫폼을 자사만의 색깔을 가진 맞춤형 디바이스로 개발하는데 도움이 됐으면 합니다. 척박한 개발 환경 속에서, 망망대해와 같은 플랫폼 속에서, 개발자들이 길을 읽지 않도록 이 책이 등대가 되기를 희망합니다. 휴대폰 제조사에서 불철주야 경쟁사와 차별화된 제품을 개발하는데 몰두하고 있는 연구원들에게도 참고 자료가 되었으면 합니다. 또한, 안드로이드 플랫폼에 관해 좀 더 깊이 있는 이해를 원하거나, 차별화된 애플리케이션을 개발하고자 하는 개발자 여러분들에게도 이 책을 자신 있게 추천합니다. 이 책에서 다루는 내용 ● 안드로이드 아나토미 개요 ● 안드로이드 플랫폼을 개발하기 위한 개발환경 설정 및 플랫폼 디버깅 기법 ● 안드로이드 플랫폼 개발에 필수적인 기본지식 - 바인더, 공유 메모리, 서비스 프레임워크, JNI, HAL 등 ● 시스템 서비스 동작을 이해하기 위한 배경지식 설명 ● 핵심 시스템 서비스 분석 - 오디오 플링거 서비스, 서피스 플링거 서비스, 카메라 서비스 |