• 안드로이드 NDK 네이티브 프로그래밍

  • 데무라 나리카즈 지음
  • 이해란 옮김

  • 임베디드 & 모바일 시리즈 _ 025
  • ISBN: 9788992939089
  • 25,000원 | 2012년 08월 30일 발행 | 312쪽



NDK로 안드로이드 앱 성능을 극대화하라!

안드로이드 애플리케이션 개발을 할 때 자바만으로도 애플리케이션을 개발할 수 있는데, 굳이 C/C 로 안드로이드 애플리케이션을 개발해야 할 때가 있습니다. 과거의 개발 자산을 활용하기 위해서라든지, 인터넷에서 유통되고 있는 C 라이브러리를 이용하기 위해서라든지, 여러 가지 이유를 들 수 있겠지만 그중에서 가장 큰 이유는 처리 속도를 빠르게 할 수 있다는 점입니다.

안드로이드 애플리케이션에서는 성능이 요구되는 일부 모듈을 C/C 같은 네이티브 코드로 개발한다거나 이미 개발돼 있는 C/C 라이브러리를 재활용하려면 JNI를 이용해야 합니다. 안드로이드 NDK는 애플리케이션 개발자가 이러한 JNI를 활용한 작업을 쉽게 할 수 있도록 구글에서 제공하는 개발 도구입니다. 따라서 NDK를 이용해 작업의 일부를 C/C 로 바꾸면 처리 속도를 향상할 수 있습니다. 특히 게임과 같이 빠른 반응 속도가 필요한 애플리케이션을 만들 때도 NDK가 유용합니다.

이 책에서는 안드로이드 NDK를 이용해 안드로이드 단말 본래의 성능을 극대화하는 방법에 주안점을 두고 설명합니다. 그러므로 안드로이드 NDK에서 지원하는 각종 라이브러리 및 컴파일러와 같은 툴의 사용법과 CPU의 구조 및 컴파일러의 활용법 등을 설명합니다. 또한, 안드로이드 NDK에서 이용할 수 있는 라이브러리에 대한 설명 말고도 ARM 아키텍처에 대한 세부적인 설명 및 컴파일러와 같은 툴을 이용하는 방법도 설명합니다.

데무라 나리카즈(出村 成和 )

프리랜서 엔지니어. 일본 내 발매 전부터 남는 시간에 시작했던 안드로이드 관련 개발이 지금은 본업이 되어버린, 안드로이드 때문에 인생이 바뀐 사람이다. 패밀리 컴퓨터부터 플레이스테이션2에 이르기까지 게임 프로그래머라는 이력을 지닌 3D 달인이며, 지금까지 다양한 프로그래밍 언어를 다뤘지만 기본적으로 어셈블러, C/C 등 저수준에서 주로 사용되는 언어를 좋아한다. 일본 안드로이드 협회 가나자와 지부 소속.

이해란

일본 외국어 전문학교 일한통역과 졸업 후 일본에서 웹프로그램 개발자로 근무하였으며, 다년간 IT 기술서 및 교재 번역을 하였다. 현재 번역에이전시 엔터스코리아에서 IT 분야 전문 번역가로 활동하고 있다.

감수: 여인춘

Texas A&M University에서 Computer Sciecne로 박사 학위를 받고 현재 삼성전자 DMC 연구소 수석 엔지니어로 근무 중이다. 차세대 안드로이드 단말 뿐만 아니라 삼성전자의 독자적 운영체제와 최적화 관련 업무를 리딩하고 있다. 주 관심사는 저전력 운영체제, High Performance Computing 및 GPGPU 분야이다.

  • ▣ Chapter 01_안드로이드 NDK란?
    • 01.01 이 책에 대해
    • 01.02 안드로이드의 개발 라이브러리
    • 01.03 안드로이도 NDK에서 이용할 수 있는 기능
    • 01.04 안드로이드의 내부 구조(계층)
    • 01.05 애플리케이션 실행환경
    • 01.06 실행파일이 생성되기까지
    • 01.07 안드로이드 NDK의 장단점
    • 01.08 설치
    • 01.09 정리
    •  
  • ▣ Chapter 02_자바와 안드로이드 NDK
    • 02.01 JNI란?
    • 02.02 JNI의 규약
    • 02.03 log 출력하기
    • 02.04 자바에서 C 함수 호출하기
    • 02.05 JNIHelp 이용하기
    • 02.06 정리
    •  
  • ▣ Chapter 03_NativeActivity
    • 03.01 NativeActivity란?
    • 03.02 NativeActivity와 게임
    • 03.03 이벤트
    • 03.04 NativeActivity의 제약
    • 03.05 논블록에 대해
    • 03.06 NativeActivityGlue
    • 03.07 정리
    •  
  • ▣ Chapter 04_OpenGL|ES
    • 04.01 OpenGL와 OpenGL|ES
    • 04.02 SurfaceView란?
    • 04.03 안드로이드의 OpenGL|ES
    • 04.04 예제 프로그램(OpenGL|ES 1.1)
    • 04.05 OpenGL|ES 2.1
    • 04.06 AndroidBitmap
    • 04.07 정리
    •  
  • ▣ Chapter 05_사운드
    • 05.01 OpenSL|ES에 대해
    • 05.02 사운드 포맷
    • 05.03 재생과 녹음
    • 05.04 데이터 소스
    • 05.05 안드로이드 확장기능
    • 05.06 이펙트에 대해
    • 05.07 예제 코드
    • 05.08 설정
    • 05.09 제약에 대해
    • 05.10 정리
    •  
  • ▣ Chapter 06_입출력(센서, 키보드, 파일)
    • 06.0 안드로이드 NDK에서 센서 이용하기
    • 06.02 터치패널
    • 06.03 키 입력
    • 06.06 Assets
    • 06.07 정리
    •  
  • ▣ Chapter 07_툴(컴파일러, 디버거)
    • 07.01 툴체인
    • 07.02 arm-linux-androideabi-4.4.3의 새로운 기능
    • 07.03 STL
    • 07.04 gcc의 확장 기능
    • 07.05 외부 프로젝트 참조
    • 07.06 정수
    • 07.07 ndk-gdb
    • 07.08 ndk-build
    • 07.09 정리
    • 06.04 센서
    •  
  • ▣ Chapter 08_아키텍처
    • 08.01 ARM 프로세서
    • 08.02 Cortex-A8
    • 08.03 아키텍처의 구성
    • 08.04 메모리
    • 08.05 L1 캐시와 L2 캐시
    • 08.06 ABI
    • 08.07 cpu-features
    • 08.08 정리
    •  
  • ▣ Chapter 09_최적화
    • 09.01 최적화의 순서
    • 09.02 문제가 되는 부분 파악하기
    • 09.03 최적화 방법
    • 09.04 실행 바이너리의 실행 효율 향상시키기
    • 09.05 캐시의 적중률 향상시키기
    • 09.06 gcc에 의한 최적화
    • 09.07 그래픽스의 최적화
    • 09.08 소수 연산
    • 09.09 정리
    •  
  • ▣ Chapter 10_NEON
    • 10.0 ARM 명령과 NEON 명령의 차이
    • 10.02 NEON 명령에 대한 상세 설명
    • 10.03 NEON 명령 출력하기
    • 10.04 벡터화
    • 10.05 정리
    •  
  • ▣ Chapter 11_레퍼런스
    • 11.01 ndk-build에 대해
    • 11.02 Android.mk
    • 11.03 Application.mk 파일

예제코드 관련 GitHub 페이지

도서 소개자료

관련 글


엮인 글

엮인 글 주소: http://wikibook.co.kr/android-ndk/trackback/