안드로이드 초창기 개발자들은 대부분 PDK로 포팅을 하거나 SDK로 애플리케이션을 개발했습니다. 하지만 PDK는 단말 제조사 외에는 소스 레벨에 접근하지 못하고, SDK는 자바만을 이용해야 했습니다. 그런 터라 기존에 작업했던 여러 애플리케이션에서 사용한 라이브러리와 C/C++로 작성된 좋은 프로그램을 활용할 방법이 없었습니다. 이후, 안드로이드 버전이 조금씩 높아지면서 C/C++ 라이브러리를 이용할 수 있는 NDK(Native Development Kit)를 구글에서 마련했습니다. 하지만 NDK의 활용 자료는 몇몇 인터넷 문서와 소수 개발자가 공개한 몇몇 프로그램 정도뿐이었습니다(예. github.com의 프로젝트).
저는 기존 개발 방식과 더불어 최근 새롭게 나타나는 다양한 기술을 NDK를 이용해서 활용할 수 있도록 정리하고자 이 책을 썼습니다.
사실 『안드로이드의 모든 것 NDK』는 『안드로이드의 모든 것 분석과 포팅』과 같은 시기에 출간하려고 했습니다. 그런데 여러 가지 개인적인 문제가 생겨서 NDK는 포기하고 분석에 관련된 책만 출간했었습니다. 이 때문에 책의 기획과 편집을 맡아주신 한빛미디어 출판사 담당자에게 공연히 불만의 소리가 향했던 것으로 알고 있습니다. 실제로 『안드로이드의 모든 것 분석과 포팅』에 '분석'이 붙었는데, '이게 뭐가 모든 것이냐?'라는 반응도 있었습니다. 사실 기획자는 '안드로이드의 모든 것'이란 연작 시리즈를 기획했는데, 책을 내겠다고 찾아갔던 저자가 약속을 어겨버렸으니 본의 아니게 사기(?)를 친 셈이 되었습니다. 저도 죄송한 마음에, 창피하지만 아무 소리도 못하고 그냥 '에라 모르겠다, 나도 바빠서 죽을 지경인데 머...... (ㅠ.ㅠ)'하고 지냈습니다. 그러다가 올해 초에 여유가 생기면서 기존에 NDK 강의를 하던 전호철 씨와 예전에 작업했던 NDK 강의 교안을 바탕으로 일반 멀티미디어 부분을 합쳐서 출간했으면 하는 의향을 출판사에 전달했습니다. 다행히 흔쾌히 허락해주셔서 이 책을 진행하게 되었습니다.
예전 『안드로이드의 모든 것 분석과 포팅』을 작업할 때도 '책이 출간되는 동안 안드로이드 버전이 바뀌면 어떡하나, 너무 책을 어렵게 쓰지 않았나!' 걱정을 많이 했는데, 아니나 다를까 이번 책을 집필하는 도중에 젤리빈 버전이 '떡!' 나왔습니다. 하지만 다행히도 PDK와는 달리 NDK는 안드로이드 버전에 의존성이 약한 편이어서 버전이 바뀌어도 이전 자료로 작업을 하는 데 큰 문제가 생기지 않았습니다.
이 책에서는 기본적인 NDK뿐만 아니라, PDK 라이브러리를 이용해서 NDK를 작업하는 부분과 안드로이드의 멀티미디어를 NDK로 작업할 수 있는 부분을 담았습니다. 또 안드로이드의 새로운 특징을 이용할 수 있게 주제를 확장해서 작업했습니다(예. OpenSL ES, OpenMAX AL 등).
이 책을 출간함으로써 안드로이드의 네 가지 큰 주제(리눅스 커널, 안드로이드 PDK, NDK, SDK) 중 두 가지를 정리했습니다. 나머지는 정리가 필요하지 않거나(SDK), 불가능(리눅스 커널)하기 때문에 개인적으로는 기본 정리는 어느 정도 마무리되었다고 생각합니다.
끝으로 책을 출간할 때마다 항상 편집, 교정을 해주시는 유형목 님과 조희진 님께 감사의 말씀 드립니다.