책소개
『안드로이드의 모든 것 분석과 포팅』(2011) 집필진의 두 번째 책이 책에서는 단지 안드로이드 NDK로 개발한 동적 로딩 라이브러리를 자바 애플리케이션에서 호출하여 사용하는 방법에 그치지 않고, NDK에 포함되지 않은 안드로이드 프레임워크의 리소스를 사용하는 방법도 다루고 있으며 실제 안드로이드의 프레임워크가 작동하는 방식과 유사한 서비스를 만들면서 커널 드라이버까지 접근하여 하드웨어 조작까지 할 수 있도록 설명한다.전작 『안드로이드의 모든 것 분석과 포팅』이 안드로이드 운영체제를 배운 후 사운드, 카메라, GPS 등을 철저히 분석하고 포팅을 다루는 책이라면 『안드로이드의 모든 것 NDK』는 자바로 안드로이드 애플리케이션을 작성하다가 막히는 독자에게 잘 알려지지 않은 저자의 노하우를 친절하게 알려준다. 마법 같은 NDK로 안드로이드의 네이티브 라이브러리를 활용해보자.
목차
CHAPTER 00 들어가며 CHAPTER 01 안드로이드 NDK는 무엇인가?__1.1 안드로이드 NDK의 등장 배경__1.2 NDK에서 제공되는 것 __1.3 개발 환경____1.3.1 JDK 설치 ____1.3.2 안드로이드 SDK 설치 ____1.3.3 이클립스와 ADT 플러그인 설정____1.3.4 NDK 개발 환경 설정____1.3.5 PDK 설정 __1.4 안드로이드 개발 방법 ____1.4.1 SDK를 이용한 개발 방법____1.4.2 NDK를 이용한 개발 방법____1.4.3 PDK를 이용한 개발 방법 소개 및 동작 구조 ____1.4.4 Android Debug Bridge CHAPTER 02 NDK 개발을 위한 안드로이드 애플리케이션 기초 쌓기__2.1 안드로이드 애플리케이션의 구조 __2.2 안드로이드 애플리케이션 구성 요소 ____2.2.1 액티비티 ____2.2.2 서비스 ____2.2.3 BroadcastReceiver ____2.2.4 ContentProvider____2.2.5 인텐트 __2.3 안드로이드 애플리케이션의 라이프 사이클 ____2.3.1 액티비티 라이프 사이클 ____2.3.2 서비스 라이프 사이클 ____2.3.3 BroadcastReceiver 라이프 사이클__2.4 안드로이드 애플리케이션의 퍼미션 CHAPTER 03 본격 NDK 개발!__3.1 네이티브 라이브러리 개발을 위해 알아야 할 것 __3.2 JNI ____3.2.1 JNA____3.2.2 SWIG ____3.2.3 JNI __3.3 JNI 구현 순서__3.4 자바에서 네이티브 코드 호출하기 __3.5 네이티브 코드에서 자바로 접근하기 __3.6 x86에서 JNI 연습__3.7 안드로이드 Makefile____3.7.1 Android.mk 분석____3.7.2 Application.mk 분석 __3.8 C와 C++에서 JNI 구현 시 차이점 __3.9 SDK, NDK, PDK 로그 출력 ____3.9.1 SDK 로그 출력 ____3.9.2 NDK 로그 출력 ____3.9.3 PDK 로그 출력 __3.10 예제1: 더하기 프로그램____3.10.1 안드로이드 새 프로젝트 생성하기 ____3.10.2 자바 애플리케이션의 기본 레이아웃 변경하기 ____3.10.3 자바 코드 수정하기 ____3.10.4 JNI 규약에 맞는 라이브러리 생성하기____3.10.5 .c 파일을 만들고 컴파일하기 __3.11 예제2: 외부 라이브러리 활용하기__3.12 라이브러리 의존성 문제 __3.13 JNI_OnLoad __3.14 한글 처리 __3.15 자바와 NDK의 속도 차이 __3.16 네이티브 스레드로 자바 콜백 만들기 __3.17 안드로이드 디버깅 ____3.17.1 addr2line____3.17.2 gdb를 이용한 디버깅 ____3.17.3 프로파일링CHAPTER 04 NDK에서의 그래픽 처리__4.1 bitmap-plasma __4.2 NDK 3D ____4.2.1 자바 애플리케이션에서의 OpenGL ES 사용 ____4.2.2 NDK에서의 OpenGL ES 1.x__4.3 SDL 포팅 ____4.3.1 SDL이란 무엇인가? ____4.3.2 안드로이드 자바와 SDL의 연결 ____4.3.3 SDL 활용__4.4 Native Activity ____4.4.1 프레임워크 내부와 연결점____4.4.2 Native Activity를 만들어 보자 __4.5 STL과 Neon의 사용 ____4.5.1 STL ____4.5.2 NEON CHAPTER 05 NDK의 확장__5.1 플랫폼 안에서 사용되는 네이티브 라이브러리 __5.2 NDK용 Android.mk와 전체 소스용 Android.mk의 차이점 __5.3 skia 라이브러리로 애플리케이션 만들기 __5.4 안드로이드 전체 소스 컴파일 방법 __5.5 자바 애플리케이션에서 GPIO 컨트롤하기 CHAPTER 06 멀티미디어__6.1 안드로이드 네이티브 AudioFlinger 활용과 OpenSL ES__6.1.1 네이티브 AudioFlinger 제어 __6.1.2 OpenSL ES __6.2 네이티브에서 Surface 접근하기 ____6.2.1 안드로이드처럼 직접 Surface를 사용하려면 어떻게 해야 할까? ____6.2.2 테스트용 애플리케이션__6.3 OpenMAX AL ____6.3.1 OpenMAX AL 개요 ____6.3.2 동작 구조 ____6.3.3 안드로이드 OpenMAX AL ____6.3.4 OpenMAX AL 예제 __6.4 안드로이드에서 FFmpeg 활용____6.4.1 안드로이드 멀티미디어 구조____6.4.2 안드로이드 프레임워크에서의 멀티미디어____6.4.3 안드로이드 애플리케이션 계층에서의 멀티미디어 ____6.4.4 FFmpeg 개요____6.4.5 FFmpeg의 구성____6.4.6 안드로이드 FFmpeg APPENDIX 안드로이드는 무엇인가?__A.1 안드로이드의 개념 __A.2 안드로이드 역사 __A.3 안드로이드 특징 __A.4 안드로이드 라이선스와 오픈 소스 라이선스 ____A.4.1 Dalvik VM __A.5 안드로이드 시스템 구조__A.6 우분투와 VirtualBox로 NDK 개발 환경 설정하기