메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

안드로이드의 모든 것 NDK: C/C++을 이용한 안드로이드 앱 개발 방법

한빛미디어

집필서

절판

  • 저자 : 고현철 , 전호철
  • 출간 : 2012-09-17
  • 페이지 : 496 쪽
  • ISBN : 9788979149593
  • 물류코드 :1959
  • 초급 초중급 중급 중고급 고급
5점 (1명)
좋아요 : 33
앱의 기본 개념부터 설명한 친절한 NDK 집필서

자바로 안드로이드 앱을 개발하다가 네이티브 기능을 활용하려고 했지만, 무엇부터 해야 할지 몰랐던 개발자에게 꼭 필요한 책이다. 실제 NDK로 프로젝트를 하는 개발자와 수 차례 개발자를 대상으로 강의를 한 강사가 함께 개발자를 위해 가장 쉬운 언어로 풀어서 NDK를 설명했다. 처음 안드로이드를 접하는 독자라면 부록의 "안드로이드란 무엇인가"를 선행 학습하고, NDK부터 궁금한 독자는 0장부터 정주행을, NDK의 활용이 궁금한 독자라면 몇 개장을 건너 뛰고 뒷 부분을 학습하면 된다.

『안드로이드의 모든 것 NDK』 온라인 질답 게시판 운영
책을 읽다가 막히거나 궁금한 부분이 있다면 주저하지 말고 질문하자. 친절한 저자들이 직접 설명해준다.
QA 게시판: http://www.aesop.or.kr/Board_Community_Book

어떤 독자를 위한 책인가?
  • 안드로이드 앱 개발에 네이티브 라이브러리 기능을 추가하려는 개발자
  • 자바와 안드로이드 프레임워크 연동이 궁금한 개발자
  • 안드로이드를 공부하려는 학생
책 소개

이 책에서는 단지 안드로이드 NDK로 개발한 동적 로딩 라이브러리를 자바 애플리케이션에서 호출하여 사용하는 방법에 그치지 않고, NDK에 포함되지 않은 안드로이드 프레임워크의 리소스를 사용하는 방법도 다루고 있으며 실제 안드로이드의 프레임워크가 작동하는 방식과 유사한 서비스를 만들면서 커널 드라이버까지 접근하여 하드웨어 조작까지 할 수 있도록 설명한다.

『안드로이드의 모든 것 분석과 포팅』(2011) 집필진의 두 번째 책
전작 『안드로이드의 모든 것 분석과 포팅』이 안드로이드 운영체제를 배운 후 사운드, 카메라, GPS 등을 철저히 분석하고 포팅을 다루는 책이라면 『안드로이드의 모든 것 NDK』는 자바로 안드로이드 애플리케이션을 작성하다가 막히는 독자에게 잘 알려지지 않은 저자의 노하우를 친절하게 알려준다. 마법 같은 NDK로 안드로이드의 네이티브 라이브러리를 활용해보자.
고현철 저자

고현철

http://aesop.or.kr
현재 인시그널 대표이사
성균관대학교 전자공학과 석사 졸업
현대정보기술 Cosmonet 사업부, 서울이동통신 연구소 근무
AESOP 임베디드 포럼 운영자(2004.12 ~ 현재)
전호철 저자

전호철

현) (주)인시그널 재직
한국기술교육대학교 멀티미디어 전공
모바일 업체에서 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 개발 환경 설정하기

안드로이드는 NDK는 안드로이드 자바 어플리케이션에서 네이티브 언어를 사용할 시에 이용할 수 있는 개발환경을 제공하는 것이다. 안드로이드가 모두 자바 환경, 정확히 말하면 DVM 환경에서 실행이 되지만, 간혹 네이티브 언어로 표현해야 할 기능들을 구현하지 못해서 무엇인가 부족함을 느낄 수도 있다. 물론 나는 개발자가 아니어서 이런 환경을 아직까지 접할수는 없었다.

안드로이드 SDK로도 웬만큼 충분한 기능을 제공하고 있기 때문에, 기능에 제한이 없다면 NDK 환경을 이용할 필요는 없다. 그래두 기존 C/C++ 언어를 사용한 개발자 입장에서는 조금 더 확장되고 유연한 기능을 사용하는데 있어서 아쉬움이 있었을 것이다. 구글에서도 이런 개발자들의 의견을 받아들이고 NDK 환경을 제공하였다.

안드로이드 환경은 취약점 진단을 하면서 많이 접하기 때문에 익숙한 부분이 있지만, NDK까지 같이 학습을 하니 2가지의 언어를 크로스로 보는 현상이 발생하였다. 이 책은 100% 개발자 입장에서 쓰여진 책이기 때문에 물론 많은 용어에 어려움을 느꼈다. 하지만, 이제 하드웨어적으로 엄청난 발전이 되고 있고, 사용자의 요구사항은 더욱더 많아지고 있기 때문에 NDK 환경을 더욱더 사용하지 않을까도 생각해본다.



국내 저자들에 의해서 쓰여진 책은 웬지 성의가 있어서 보인다. 특히 이 책은 도식도와 그림을 매우 잘 표현하였으며, 모든 소스 코드에 대해서 공개를 할 정도의 분량으로 많은 소스를 포함시키고 있다. 개발을 하지 않은 내 입장에서도 이정도의 코드라면 NDK에 입문자에게는 매우 유용한 정보이지 않을까 싶다.

디컴파일 할때는 어떻게 구분이 지어질지 궁금하기 때문에 한번 기회가 되면 처음부터 개발을 목적으로 한번 실습해보고 다시 진단을 해보는식으로 연구를 해보아야겠다고 생각이 든다.

마지막 미션 수행!!!! 멋있었습니다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 상품명 :
안드로이드의 모든 것 NDK: C/C++을 이용한 안드로이드 앱 개발 방법
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
안드로이드의 모든 것 NDK: C/C++을 이용한 안드로이드 앱 개발 방법
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
안드로이드의 모든 것 NDK: C/C++을 이용한 안드로이드 앱 개발 방법
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 상품1