『인사이드 안드로이드 OS』는 임베디드 디바이스에 안드로이드를 커스터마이징 및 통합하고, 성공적인 안드로이드 기반 제품을 제작 혹은 운영하고자 하는 전문 기술자를 위한 종합 안내서이자 참고서다. 예제 코드가 풍부하게 제공되어 이 책을 보는 독자들은 개인적인 통찰력을 위해서든, 폭발적으로 성장하는 스마트 IoT 디바이스 시장을 위한 전문 프로젝트를 위해서든 자신만의 코드를 생성할 수 있다는 자신감을 갖게 될 것이다.
안드로이드 개발 전문가인 블레이크 마이크와 래리 쉬퍼는 안드로이드에 입문하고자 하는 임베디드 및 IoT 개발자의 현실적인 요구에 부응해 이 책을 썼다. 저자들은 먼저 가용한 안드로이드 환경을 소개하고, 서브시스템 초기화, 하드웨어 인터페이스, 그리고 애플리케이션 지원을 설명함으로써 모호함이나 지나치게 전문적인 내용을 배제하고 독자에게 핵심 지식을 전달한다.
Contents
01장: 왜 안드로이드인가?
안드로이드 채택하기
___풀스택(Full Stack) 제공
___폭넓은 수용성
___미려한 사용자 인터페이스
___리눅스 기반
___막강한 개발 환경
___오픈 소스
AOSP와 구글
다른 선택지
___마이크로 컨트롤러
___기타 RTOS
요약
02장: Acme 부팅하기
빌드 머신 구축하기
소스 코드 다운로드하기
Repo
소스 포크하기
___안드로이드 버전 선택하기
___로컬 미러
___호스팅 서비스 Git 저장소
___트리 스냅숏
저장소 커밋 고정하기
예: 포크된 저장소를 위한 로컬 미러
이미지 빌드하기
디바이스 툴
___fastboot
___adb
디바이스 플래싱하기
요약
03장: 시작하기
안드로이드 계층 배치
___하드웨어
___리눅스 커널
___시스템 라이브러리
___애플리케이션
___안드로이드 프레임워크
안드로이드 서비스 모델
소스 탐험하기
___다른 소스들
___박스에 뭐가 들어 있나?
요약
04장: 커널
리눅스 커널
___커널 프로세스 관리
___커널 메모리 관리
안드로이드 커널
___안드로이드 커널 기능
커널 빌드하기
___빌드 시스템
___소스 다운로드하기
요약
05장: 플랫폼 보안
보안의 종류
자체 검사 부팅 (Verified Boot)
운영 보안
___안드로이드 소프트웨어 계층
___프로세스 샌드박스
___안드로이드용 SE 리눅스
___SE 정책 정의
___안드로이드 권한
___파일 시스템
사용자 보호
권한 커스터마이징
___사용자 정의 권한에 의해 보호받는 샘플 앱
___사용자 정의 권한을 사용하는 샘플 클라이언트 앱
요약
06장: 시스템 초기화: 시스템 설치와 부팅
부팅 절차
___부트로더
___Fastboot
___커널
___파일 시스템
___init
복구
데몬 빌드하기
Acme 디바이스 생성하기
Repo 다시 살펴보기
___데몬 시작하기
요약
07장: 안드로이드의 시작: Dalvik과 Zygote
Dalvik
ART
___기본 ART
___하이브리드 ART
Zygote
___Zygote 메모리 관리
___Zygote 시작
___런타임 초기화
___시스템 서비스 시작
요약
인용
08장: 안드로이드와 통신하기: HAL
왜 HAL인가?
HAL이 필요한가?
HAL 설계하기
HAL 빌드하기
___코드 구조
___HAL 구현하기
요약
09장: 자바와 통신하기: JNI
코드 구조
하드웨어 사용하기
HAL 사용하기
자바 네이티브 인터페이스 사용하기
___네이티브 코드 실행하기
___JNI: 자바 측면
___JNI: 네이티브 측면
___자바 근접 센서 애플리케이션
___JNI: 몇 가지 팁
요약
10장: 프로젝트 트레블: 바인더화된 HAL
HIDL 아키텍처
___hwservicemanager
___HIDL 서비스
___HIDL 클라이언트 서비스
하드웨어 인터페이스 정의 언어 (HIDL)
___HIDL 타입
HIDL 서비스
HIDL 클라이언트
요약
11장: 바인더화된 HAL 만들기
Acme 커스텀 HIDL
요약
12장: 바인더화된 HAL의 클라이언트
네이티브 C++ Aproximity 클라이언트
___aproximitycl을 위한 안드로이드 SE 리눅스 수정 항목
___Aproximitycl을 Acme로 빌드하기
자바/코틀린 Aproximity 클라이언트
___AproximityClient를 위한 안드로이드 SE 리눅스 수정
___Acme 플랫폼에 AproximityClient 빌드하기
요약
부록
A. Khadas VIM3 하드웨어 소개
B. 안드로이드 9.0 포크 소스
___소스 다운로드
___이미지 빌드
___이미지 플래싱
C. 안드로이드 11.0 정규 AOSP 소스
___소스 다운로드
___이미지 빌드
___이미지 플래싱
Author
블레이크 마이크,래리 쉬퍼,류진훈
블레이크 마이크는 D2, Realm, Cyanogen을 포함한 기관에서 10년 이상 안드로이드 개발자로 일한 열정이 넘치는 엔지니어이며, 코드 시인이며, 베테랑이다. 강사로서 그는 수백 명의 초보 안드로이드 개발자를 교육했다. 그는 O’Reilly 사의 베스트 셀러인 《Programming Android》 및 Addison-Wesley 사의 《Android Concurrency》를 포함한 다수 서적의 저자다. 그는 다트머스(Dartmouth) 대학에서 수학과 컴퓨터 과학 학위를 취득했으며, 퍼시픽 노스웨스트에 살고 있다.
블레이크 마이크는 D2, Realm, Cyanogen을 포함한 기관에서 10년 이상 안드로이드 개발자로 일한 열정이 넘치는 엔지니어이며, 코드 시인이며, 베테랑이다. 강사로서 그는 수백 명의 초보 안드로이드 개발자를 교육했다. 그는 O’Reilly 사의 베스트 셀러인 《Programming Android》 및 Addison-Wesley 사의 《Android Concurrency》를 포함한 다수 서적의 저자다. 그는 다트머스(Dartmouth) 대학에서 수학과 컴퓨터 과학 학위를 취득했으며, 퍼시픽 노스웨스트에 살고 있다.