알라딘

헤더배너
상품평점 help

분류

이름:전호철

최근작
2012년 9월 <안드로이드의 모든 것 NDK>

전호철

현) (주)인시그널 재직
한국기술교육대학교 멀티미디어 전공
모바일 업체에서 NDK 강의 중
  

대표작
모두보기
저자의 말

<안드로이드의 모든 것 NDK> - 2012년 9월  더보기

2008년쯤 AESOP의 고현철 님을 통해 안드로이드를 처음 접했습니다. 그 당시에 고현철 님은 삼성 6410을 붙인 보드에 안드로이드를 올려서 무언가 작업을 하고 계셨던 것 같습니다. 하루는 사무실에 놀러 간 적이 있었는데 그 동안 안드로이드 카메라 부분을 분석하신 내용을 저에게 마구 마구 설명해주셨던 기억이 납니다. 그 즈음 저도 안드로이드 개발에 첫 걸음을 내디뎠던 것 같네요. 폭풍 같은 설명이 지나가고, 학교 연구실로 돌아가서 고현철 님이 보내준 분석 자료를 다시 보았습니다. 그런데 그때 카메라 코드 중에 도저히 알 수 없는 코드가 있더군요. 인터넷에 검색해도 잘 안 나오고 그래서 그 당시에는 정확한 뜻을 알지 못한 채 대충 감으로 '아~ 아마 이 부분은 대충 이렇게 연결될 것 같다'하고 넘어갔습니다. 그런데 1년쯤 뒤에 NDK와 JNI를 공부하면서 그 내용을 명확하게 알게 되었습니다(Camera의 자바 부분과 Native Camera의 연결 포인트에 대한 내용이었습니다). 그리고 한참 시간이 흘러 다니던 대학원을 잠시 접고 고현철 님을 따라서 안드로이드 멀티미디어관련 일을 하게 되었습니다. 그러던 차에 구글이 NDK를 배포했고 냉큼 다운받아서 돌려보았습니다. 당시 느낀 느낌을 그대로 설명하자면 '아니! 도대체 이걸로 뭐 하라는 거임?'이였습니다. 제 기억으로는 최초 NDK에는 단순히 툴 체인만 들어있고 예제도 달랑 두 개였습니다. 그래서 별 필요 없다고 생각하고 접어두었는데 몇 달이 지난 후에서야 '아차!' 싶었습니다. 같이 일을 도와주시던 최종환 님이 검색 중에 NDK를 사용해서 진행 중인 여러 가지 프로젝트를 찾아서 보여주셨는데 NDK 툴 체인을 사용해서 SDL을 안드로이드에 포팅한 것, OpenCV를 포팅한 것 등이었습니다. '난 그냥 별거 아니라고 생각하고 접었던 NDK를 가지고 외국 개발자는 이렇게 다양하게 사용하고 있구나'하는 생각이 번뜩 들었습니다. 역시 뭘 알아야 이게 똥인지 된장인지 판단하고 써 먹는다는 것을 새삼 다시 한번 깨달았습니다. 그때부터 NDK와 NDK에 사용되는 핵심 기술인 JNI에 대해서 여러 가지를 조사하고 공부했습니다. 그리고 드디어 이 책을 내게 되었습니다. NDK에서 사용하는 JNI는 안드로이드의 외형인 자바와 안드로이드의 내부의 C++ 네이티브 라이브러리를 연동하는 데 핵심이 되는 기술입니다. 안드로이드에서 지원하지 않는 기능(예를 들자면 DMB나 멀티미디어 플레이어/코덱/파서 등)을 사용하여 애플리케이션과 연결하려면 반드시 필요한 기술입니다. 전체적인 안드로이드 구조를 그릴 때도 이 부분을 알면 훨씬 이해가 빠를 수 있습니다. 왜냐하면 NDK를 이용한다는 것 자체가 안드로이드 애플리케이션에서부터 내부에서 사용하는 라이브러리까지의 분석을 의미하는 것이기 때문입니다. 그리고 JNI는 안드로이드에만 국한되지 않고 기존의 자바 환경에서도 똑같이 사용되므로 이것을 안다는 것은 훨씬 강력한 자바 애플리케이션을 만들 수도 있다는 의미가 될 수도 있습니다. 저는 그동안 NDK를 주제로 다룬 많은 강의를 진행해왔습니다. 강의를 처음 시작하던 때와는 달리 현재는 NDK에도 많은 내용이 추가되었고 구글이 공개한 내용 이외에 많은 기초 자료도 보강한 상태에서 그 강의에 사용하던 자료를 한데 모아 이 책을 내게 되었습니다. 이 책을 쓰던 시점이 진저브레드에서 아이스크림 샌드위치로 넘어가는 시점이어서 많은 내용을 다시 쓰고 병행해 담기도 하였습니다. 그리고 Surface를 사용하는 부분은 진저브레드에서 아이스크림 샌드위치로 넘어가면서 거의 대부분의 코드가 변경되었기에, 많이 수정하고 새롭게 만드느라 고생했습니다. 특히 이 부분은 안드로이드 네이티브에서 Surface를 활용하기를 원하시는 분들에게 많은 도움이 될 거라고 자부합니다. 또한 다른 책에서는 볼 수 없는 멀티미디어 기능에 대한 내용도 있기 때문에 관련 지식이 조금 있으신 분들에게 많은 도움이 되리라 생각합니다. 회사 일을 하면서 책도 쓰는 바람에 시간이 많이 들기도 했지만 오랜 기간 썼기 때문에 더 많은 내용을 담을 수도 있었습니다. 처음 내는 책이라 막상 책이 나올 시점이 되니 두려움이 많이 앞섭니다. 혹시나 책이 나온 후 내용이 부실하다고 욕먹지는 않을지 하는 걱정도 듭니다. 하지만 한편으로는 시중에 나와 있는 NDK/JNI 관련된 책 중에 제 책보다 유용한 자료와 코드가 많은 것은 없다는 자신감도 없지 않아 있습니다. 제가 쓴 이 책의 내용이 많은 분들께 도움이 되었으면 좋겠습니다. 처음 내는 책이라 감사드릴 분들이 많아서 감사 인사를 약간 길게 남기겠습니다. 제일 먼저, 저에게 이런 책을 낼 수 있는 기회를 제공해주시고 처음 이 분야로 발을 내디딜 때부터 지금까지 많은 가르침과 충고를 해주시고 좋은 술도 많이 많이 사주시는 고현철 님께 깊은 감사드립니다. 책을 감수해주시고 디버깅 파트를 써주신 유형목 님께도 감사드립니다. 이 책을 낼 수 있도록 많은 도움을 주신 우리 인시그널 식구 분들께도 감사드립니다. 옛날 놀고 있던 대학교 4학년 여름 방학 때 임베디드 로봇 알바를 소개시켜주신 한영민 형님께도 감사드립니다. 처음 NDK/JNI 공부할 때 같이 자료를 찾아주시고 첫 강의를 같이 들어갔던 최종환 형님께도 감사드립니다. 마지막으로 어려운 환경에서 뒷바라지 해주시는 부모님과 동생에게 감사하고 사랑한다는 말을 전합니다.

가나다별 l l l l l l l l l l l l l l 기타
국내문학상수상자
국내어린이문학상수상자
해외문학상수상자
해외어린이문학상수상자