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 개발 환경 설정하기