'Media Cloud/FFMPEG'에 해당되는 글 1건

  1. 2013.02.27 SDK, NDK, PDK - 왜 FFMPEG, JNI, NDK 이 셋을 묶여서 다루지?
Media Cloud/FFMPEG2013. 2. 27. 21:41


SDK, NDK, PDK, JNI는 무엇인가!?


■  SDK와 NDK, 그리고 PDK

  SDK Software Developer’s Kit의 약자로 주로 UI를 기반으로 특화된 API를 제공하여 Application Level에서의 개발을 쉽게 해주며, 기반은 Java Language이다.

  따 라서 SDK는 일반적인 Android Application 개발에 사용되며, Android Emulator를 내장하고 있어 Build와 동시에 바로 Test까지 가능하다.( 단, H/W를 직접 사용해야 하는 Application은 Test가 힘들다. )

 

  반면, NDK Native Developer’s Kit의 약자로, SDK와 마찬가지로 Application을 개발하는데에 사용되는 Framework이지만 Java 대신에 C/C++ Language를 이용하여 개발할 수 있다.

  따라서 NDK는 Application 뿐만 아니라 MiddleWare개발에도 사용되며, JNI를 통해 SDK에서 Linux에서 사용하던 C/C++을 사용할 수 있게 해준다. 그러므로, HAL( Hardware Abstraction Layer )의 구성/형태에 따라 굉장히 민감할 수 밖에 없다.

  결론적으로, 기본적으로 NDK는 JNI용 Library를 만드는 것이나, 약간의 변형을 통해 실행 파일( Executable File )도 만들 수 있다. 다만, 완벽한 형태의 Application의 제작은 NDK만으로는 사실상 불가능하다.

 

  PDKPlatform Developer's Kit의 약자로, Android의 Porting 개념으로서 SDK와 NDK를 포괄하는 개념이다.

  PDK는 반드시 Unix 계열의 OS에서 개발이 이루어져야 하며, Android의 전체 Source Code를 이용하여 개발한다. 결국 PDK는 Linux Kernel Level과 그 바로 위에 위치한 Native Library의 HAL 부분 등 Android의 깊숙한 부분에 대한 개발 방법이다. 따라서 AndroidApp 개발이 아닌 Kernel Level, 혹은 Core Frame의 개발이 목적이라면 PDK를 이용해 개발 해야 한다.



■  정리


SDK(Software development Kit) : Android App을 개발 시에 사용한다.


NDK(Native development Kit) : Android App의 개발시 C/C++의 code를 사용할 수 있다.


PDK(platform development Kit) : platfrom을 개발할 때 사용한다.



■ JNI

  Java Native Interface의 약자로, Java C/C++ Module을 연결해주는 매개체를 의미한다. , Java에서 지원하지 않는 하위(Low) 계층의 기능을 C/C++ 계층과의 연동을 통해 해결하도록 해준다.


참고 : www.flowdas.com/blog







Posted by 하늘_