서브메뉴

본문

안드로이드 NDK 프로그래밍 (JNI와 C/C++ 라이브러리를 활용한 네이티브 안드로이드 애플리케이션)
안드로이드 NDK 프로그래밍 (JNI와 C/C++ 라이브러리를 활용한 네이티브 안드로이드 애플리케이션)
저자 : 실뱅 라타부이
출판사 : 에이콘출판
출판년 : 2012
정가 : 35000, ISBN : 9788960773462

책소개


C/C++로 작성된 라이브러리를 사용해야 한다거나, 성능 향상을 목적으로 C/C++로 특정 모듈을 개발해야 한다면 필수적으로 JNI를 사용해야 한다. 안드로이드 NDK는 JNI를 쉽고 빠르게 사용할 수 있게 제공되는 도구다. 이 책에서는 NDK를 이용해 기존 C/C++ 라이브러리를 활용하는 방법, 애플리케이션에 2D/3D 그래픽과 사운드를 넣는 방법, 안드로이드 입력과 센서를 관리하는 방법, 네이티브 애플리케이션을 디버깅하고 문제를 해결하는 방법 등을 다뤄 애플리케이션의 성능을 향상시킬 수 있게 해준다.

목차


1 개발 환경 설정
안드로이드 개발 시작
윈도우 설정
-실습 예제 | 안드로이드 개발용 윈도우 환경 준비
윈도우에 안드로이드 개발 킷 설치
-실습 예제 | 윈도우에 안드로이드 SDK/NDK 설치
맥OS X 설정
-실습 예제 | 맥OS로 안드로이드 개발 준비
맥OS X에서 안드로이드 개발 킷 설치
-실습 예제 | 맥OS X에서 안드로이드 SDK와 NDK 설치
리눅스 설정
-실습 예제 | 안드로이드 개발을 위한 우분투 리눅스 준비
리눅스에 안드로이드 개발 킷 설치
-실습 예제 | 우분투에 안드로이드 SDK/NDK 설치
이클립스 개발 환경 설정
-실습 예제 | 이클립스 시작
안드로이드 에뮬레이트
-실습 예제 | 안드로이드 가상 장치 생성
윈도우와 맥OS X에서 안드로이드 기기 개발
-실습 예제 | 윈도우와 맥OS X에서 안드로이드 기기 설정
리눅스에서 안드로이드 기기 개발
-실습 예제 | 우분투에서 안드로이드 기기 설정
개발 기기 문제 해결
정리

2 네이티브 프로젝트 생성, 컴파일, 배포
NDK 예제 애플리케이션 컴파일과 배포
-실습 예제 | hellojni 예제 컴파일과 배포
안드로이드 SDK 도구
-안드로이드 디버그 브리지
-프로젝트 설정 도구
이클립스로 첫 번째 안드로이드 프로젝트 생성
-실습 예제 | 자바 프로젝트 초기화
-달빅 소개
자바와 C/C++ 간 인터페이스
-실습 예제 | 자바에서 C 코드 호출
-Makefile
이클립스에서 네이티브 코드 컴파일
-실습 예제 | 하이브리드 자바/C/C++ 프로젝트 작성
정리

3 JNI를 이용한 자바와 C/C++ 인터페이스
자바 기본 데이터 타입
-실습 예제 | 네이티브 키/값 저장소 빌드
네이티브 코드에서 자바 객체 참조
-실습 예제 | Store 내의 객체 레퍼런스 저장
-지역 레퍼런스와 전역 레퍼런스
네이티브 코드에서 예외 전달
-실습 예제 | Store에서 예외 발생시키기
-C++에서의 JNI
자바 배열 처리
-실습 예제 | Store에서 객체 레퍼런스 저장
-JNI 예외 확인
정리

4 네이티브 코드에서 자바 콜백 호출
자바와 네이티브 스레드 동기화
-실습 예제 | 백그라운드 스레드 실행
-스레드 연결과 분리
-자바와 네이티브 코드 생명주기
네이티브 코드에서 자바 콜백 호출
-실습 예제 | 네이티브 스레드에서 자바 코드 호출
-콜백
-JNI 메소드 정의
네이티브에서 비트맵 처리
-실습 예제 | 네이티브 코드에서 카메라 피드 디코딩
정리

5 완전한 네이티브 애플리케이션 작성
네이티브 액티비티 작성
-실습 예제 | 기본적인 네이티브 액티비티 생성
액티비티 이벤트 처리
-실습 예제 | 액티비티 이벤트 처리
-네이티브 앱 glue
-UI 스레드
-네이티브 스레드
-Android_app 구조체
네이티브에서 윈도우와 시간에 접근
-실습 예제 | 그래픽 디스플레이와 타이머 구현
-시간 기본형
정리

6 OpenGL ES로 그래픽 렌더링
OpenGL ES 초기화
-실습 예제 | OpenGL ES 초기화
애셋 관리자로 PNG 텍스쳐 읽기
-실습 예제 | OpenGL ES에서 텍스쳐 로딩
스프라이트 그리기
-실습 예제 | 우주선 스프라이트 그리기
버텍스 버퍼 객체를 이용해 타일 맵 렌더링
-실습 예제 | 타일 기반의 배경 화면 그리기
정리

7 OpenSL ES로 사운드 재생
OpenSL ES 초기화
-실습 예제 | OpenSL ES 엔진과 출력 생성
-OpenSL ES 철학
음악 파일 재생
-실습 예제 | 배경 음악 재생
사운드 재생
-실습 예제 | 사운드 버퍼 큐 생성과 재생
-이벤트 콜백
사운드 녹화
정리

8 입력 기기와 센서 처리
안드로이드와의 상호작용
-실습 예제 | 터치 이벤트 처리
키보드와 D패드, 트랙볼 이벤트 탐지
-실습 예제 | 네이티브에서 키보드와 D패드, 트랙볼 처리
기기 센서 검증
-실습 예제 | 기기를 조이패드로 변경
정리

9 안드로이드에 기존 라이브러리 포팅
표준 템플릿 라이브러리를 이용한 개발
-실습 예제 | DroidBlaster에 GNU STL 추가
-정적과 공유
-STL 성능
안드로이드에서 부스트 컴파일
-실습 예제 | DroidBlaster에 부스트 포함
안드로이드에 서드파티 라이브러리 포팅
-실습 예제 | NDK를 이용해 Box2D와 Irrlicht 컴파일
-GCC 최적화 레벨
Makefile 마스터
-Makefile 변수
-Makefile 명령
정리

10 전문 게임 개발
Box2D를 이용한 물리 시뮬레이션
-실습 예제 | Box2D를 이용한 물리 시뮬레이션
-충돌 탐지
-충돌 모드
-충돌 필터링
-Box2D 자원
안드로이드에서 3D 엔진 구동
-실습 예제 | Irrlicht를 이용한 3D 그래픽 렌더링
-Irrlicht 장면 관리
정리

11 디버깅과 문제 해결
GDB를 이용한 디버깅
-실습 예제 | DroidBlaster 디버깅
스택 트레이스 분석
-실습 예제 | 크래시 덤프 분석
-크래시 덤프
성능 분석
-실습 예제 | Gprof 실행
-동작 과정
-ARM과 thumb, 네온
정리

책을 마치며